企业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;