一、DDL语言
1.创建数据库
create database test1;(test1为数据库名)
2.删除数据库
drop database test1;
3.创建数据表
create table emp(ename varchar(20), deptno int(2));
4.删除表
drop table emp;
5.修改表
- 修改表的类型
修改表emp的ename 字段定义,将varchar(10)改为varchar(20)
alter table emp modify ename varchar(20);
- 增加表的字段
在表emp中新增加字段age,类型为int(3)
alter table emp add column age int(3);
- 删除表的字段
将字段age删除掉
alter table emp drop column age;
- 字段改名
将age改名为age1,同时修改字段类型为int(4)
alter table emp change age age1 int(4);
- 修改字段排列顺序
前面介绍的add和change和modify,add添加的新字段默认是加在表的最后位置,而change和modify默认都不会改变字段的位置
alter table emp add birth date after ename;
- 更改表名
将表emp改名为emp1
alter table emp rename emp1;
二、DML语句
1.插入数据
insert into emp (ename,hiredate,sal,deptno) values ('zzxl','2000-01-01','2000',1);
等价于
insert into emp values('lisa','2002-01-02','300',2);
2.更新数据
把emp表中ename的名为lisa的薪水sal从3000更改为4000
update emp set sal=4000 where ename='lisa';
同时更新表emp中的字段sal和表dept中的字段deptname
update emp a,dept b set a.sal=a.sal*b.deptno,b.deptname=a.ename where a.deptno=b.deptno;
3.删除记录
delete from emp where ename='dony';
同时删除表emp和dept中deptno为3的记录
delete a,b from emp a,dept b where a.deptno=b.deptno and a.deptno=3;
4.查询记录
- 聚合操作
面试重点: having和where的区别在于,having是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行过滤,如果逻辑允许,尽可能先用where先过滤记录,这样因为结果集减小,将对聚合的效率大大提高,最后再根据逻辑看是否用having进行再过滤。
- 表连接
内连接和外连接
主要区别:内连接仅仅选出两张表中互相匹配的记录,而外连接会选出其他不匹配的记录。
内连接select ename,deptname from emp,dept where emp.deptno=dept.deptno;
外连接
左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录
select ename,deptname from emp left join dept on emp.deptno=dept.deptno;
右连接:包含所有的右边表中的记录甚至是左边表中没有和它匹配的记录
select ename,deptname from dept right join emp on dept.deptno=emp.deptno;
- 子查询
select * from emp where deptno in (select deptno from dept);
- 记录联合
union和union all 的主要区别:UNION ALL是把结果集直接合并在一起,而UNION是把UNION ALL后的结果进行一次DISTINCT,去除重复记录的结果。
三、DCL语句
DCL语句主要是DBA用来管理系统中的对象权限时使用的。