*十分个人向,请谨慎参考
一.数据定义语言(DDL)
1.动词
CREATE、ALTER、DROP
2.实例
2.1数据库的管理
CREATE DATABASE db_name
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utfmb4_0900_ai_ci; -- 创建数据库
SHOW CREATE DATABASE db_name; -- 查看数据库
ALTER DATABASE db_name
DEFAULT CHARACTER SET gbk
DEFAULT COLLATE gbk_chinese_ci; -- 修改数据库
DROP DATABASE db_name; -- 删除数据库
2.2数据表的管理
2.2.1创建数据表
CREATE TABLE table_name(
`sno` CHAR(10) NOT NULL COMMENT '学号', -- NOT NULL非空约束
`sn` VARCHAR(45) COMMENT '姓名',
`sex` ENUM('男','女') DEFAULT '男' COMMENT '性别',
`score` DECIMAL(5,2) CHECK(score>=0 AND score<=100) COMMENT '成绩', -- CHECK检查约束
UNIQUE(`sn`,`sex`), -- UNIQUE唯一约束
PRIMARY KEY(`sno`), -- PRIMARY KEY主码约束
FOREGIN KEY(`sn`) REFERENCES sc(`sn`) -- FOREGIN KEY外码约束
)
2.2.2修改数据表
--ADD
ALTER TABLE s
ADD maj VARCHAR(45);
--RENAME 修改表名
ALTER TABLE s
RENAME student;
--CHANGE 修改字段名
ALTER TABLE s
CHANGE s sname;
--MODIFY 修改字段数据类型和字段排序
ALTER TABLE s
MODIFY sn CHAR(30);--修改自动数据类型
ALTER TABLE s
MODIFY maj VARCHAR(45) AFTER sn;--修改字段排序
--ENGINE 修改表的存储引擎
ALTER TABLE s
ENGINE=MyISAM;--修改自动数据类型
--DROP删除字段和完整性约束
二.数据查询语言(DQL)
1.动词
SELECT
2.实例
2.1无条件和有条件查询
select sno
from s;--无条件查询
select sno
from s
where sn='Bob';--有条件查询
2.2聚合函数查询
select sno as 学号,count(*) as 选课门数
from sc
group by sno
having count(*)>=3;--having必须在group by之后
2.3查询结果排序
select *
from c
order by ct desc--升序用asc
2.4限制查询结果数量
select tno,tn,prof
from t
limit 1,3--从第2位老师开始的3位教师的教师号、姓名和昵称
2.5多关系数据查询
2.5.1内连接查询
--方法一
select s.sno,sn,cno
from s,sc
where s.sno='s5' and s.sno=sc.sno;
--方法二
select s.sno,sn,cno
from s inner join sc
on s.sno='s5' and s.sno=sc.sno;
2.5.2外连接查询
左(右)连接用于显示符号条件的记录以及左(右)边表中不符合条件的记录
FULL (OUTER) JOIN用于显示符号条件的记录以及左右两边表中不符合条件的记录
select s.sno,sn,cno
from s left outer join sc
on s.sno='s5' and s.sno=sc.sno;
2.5.3交叉连接查询
select *
from t cross jion c;
2.5.4自链接查询
--查询与王彤专业相同的学生的学号和姓名
--方法1
select x.sno,x.sn
from s as x,s as y
where x.maj=y.maj and y.sn='王彤';
--方法2
select x.sno,x.sn
from s as x inner join s as y
on x.maj=y.maj and y.sn='王彤';
2.6子查询
2.6.1普通子查询
2.6.1.1返回一个值的子查询
--查询与教师“顾伟”职称不同的教师的教师号、姓名和职称
select tno,tn,prof
from t
where prof<>(select prof
from t
where tn='顾伟')
2.6.1.2返回多个值的子查询
--使用ANY
-->ANY相当于>min()
--<ANY相当于<max()
--<>ANY相当于not in
select sno
from c
where cno=any(
select cno
from sc
where sno='s2');
--使用IN
--in相当于=any
select sno
from c
where cno in(select cno
from sc
where sno='s2');
2.6.2相关子查询
定义:子查询的条件查询需要引进父查询表中的属性值
三.数据操纵语言(DML)
1.动词
INSERT、UPDATE、DELETE
2.实例
--添加数据
insert into s(sno,sn,age)
values('s1','Bob',21);
--修改数据
update s
set dept='计算机学院'
where sno='s1';
--删除数据
delete
from s
where age=21;
四.数据控制语言(DCL)
1.动词
GRANT、REVOKE