企业SQL面试复习与测试

 索引(index):当使用索引作用的列作为查询条件进行查询时,可以提高查询的效率。

  --如何创建索引:①自动创建(声明为主键或唯一性约束的列)   ②手动创建

  create index emp_sal

  on employees(salary);

 

3.重点:表

DDL:CREATE TABLE;ALTER TABLE;TRUNCATE TABLE;DROP TABLE;RENAME .. TO ..

不可回滚,即意味着:自动提交

--1.创建表

--1.1“白手起家”

create table dept(

dept_id number(10),

dept_name varchar2(15),

location_id varchar2(10),

birth Date

)

 

select * from dept;

 

--1.2基于现有的表,创建

create table emp1

as

select employee_id id,last_name name,hire_date,salary

from employees

--where department_id = 80;

where 1=2;

 

select * from emp1;

--1)对现有的表的复制/空表

create table emp_copy

as

select * from employees

--where 1=2;

 

select * from emp_copy;

 

--2.修改表

--2.1增加一个列

ALTER table emp

add(salary number(10,2) default 2000);

 

select * from emp;

--2.2修改现有的列

alter table emp

modify(salary number(15,2));

 

insert into emp(id,name)

values(1004,'CC');

 

--2.3重命名现有的列

alter table emp

rename column salary to sal;

 

--2.4删除现有的列

alter table emp

drop column sal;

 

--3.重命名现有的表

rename emp to employee;

 

select * from employee;

 

--4.清空表

truncate table employee;

 

rollback;

 

--5.删除表

drop table employee;

 

 

 

DML:增、删、改、查

--增insert into ...

--1.一条一条的添加

select * from dept;

 

insert into dept

values(,,,);

 

insert into dept(dept_id,location_id,dept_name)

values(,,);

--2.导入数据

insert into dept(dept_id,location_id,dept_name)

select department_id,location_id,department_name

from departments;

 

alter table dept

modify(dept_name varchar2(20));

 

--删

delete from dept

where dept_id < 40;

 

--改

update dept

set location_id = 1700

where dept_id = 20;

 

commit;

 

--查询(重中之重)

select ....   --分组函数(count / max / min / avg / sum)

from ...,....--多表连接

where ...--过滤条件和 多表的连接条件(若不写,会出现笛卡尔积的错误)

group by ...--凡是在select中出新了分组函数,则没有使用分组函数的列要作为group by的条件

having avg(..) ...--分组函数作为过滤条件,要使用having

order by ... asc/desc;