Mysql
SQl概述
定义
- 是一种关系型数据库的标准,通常使用DBMS来运用SQL管理数据库
分类
-
DDL
- 定义
-
DML
- 管理
-
DCL
- 控制
-
DQL
- 查询
数据类型
三大范式
第一范式
- 原子性
第二范式
- 依赖性
第三范式
- 相关性
数据库基本操作
表结构操作
-
creat、show create、drop、alter、desc
修改表名:alter table student rename to stu;
修改字段名:alter table stu change name sname varchar(10);
修改字段属性名:alter table stu modify name int;
删除字段名:alter table stu drop address;
表内容操作
-
插入
- insert into 表名(,) values (,)
-
删除
-
delete from 表名 where
-
删除全部
-
delete from 表名
-
TRUNCATE
- 自增主键会从零开始
-
-
-
修改
- update 表名 set 字段=“” where
-
查询
-
select
-
常数和常数运算
-
指定字段
-
消除重复
-
-
聚合函数和条件查询
聚合函数
-
count()、max()、avg()、sum()、min()
-
只有select()、having()、group by子句中才能用
条件查询
-
关系运算符
- 不等于<>
-
IN关键字
IN关键字用于判断某个字段的值是否在指定集合中。如果字段的值恰好在指定的集合中,则将字段所在的记录将査询出来。
-
BETWEEN AND 关键字
-
使用空值查询
- is not null
-
AND
和 OR关键字 -
LIKE关键字
-
含有%和 _ 的通配符
-
LIMINT限制查询数量
-
GROUP BY分组
- 可以理解为:将表分为几个部分,分别来进行操作
-
ORDER By进行排序
约束
表约束
-
主键约束
- 两种方式设置
-
非空约束
-
唯一约束
-
外键约束
-
两种方式
CONSTRAINT 外键名 FOREIGN KEY (从表外键字段) REFERENCES 主表 (主键字段)
ALTER TABLE 从表名 ADD CONSTRAINT 外键名 FOREIGN KEY (从表外键字段) REFERENCES 主表 (主键字段);
-
删除外键约束
alter table 从表名 drop foreign key 外键名;
-
会有数据一致性的问题
-
-
默认值约束
取别名和表的关联关系
取别名 AS
-
给数据库取别名
-
给字段取别名
表的关联关系
-
一对多
- 一般在多的表上设置外键
-
一对一
- 不常见,一般·会放在同一张表里
-
多对多
- 一般建个中间表并设立两个外键字段关联两主键
多表连接查询和子查询
多表连接查询
-
交叉查询
- 形成两个表的笛卡尔积
-
内连接
- select from 表1 inner join 表2 on
-
外连接
- select from 表1 left[right] join 表2 on
子查询
-
带运算符的子查询
select * from class where cid=(select classid from student where sname=‘张三’);
-
带EXIST关键字的子查询
EXISTS关键字后面的参数可以是任意一个子查询, 它不产生任何数据只返回TRUE或FALSE。当返回值为TRUE时外层查询才会 执行
例如:假如王五同学在学生表中则从班级表查询所有班级信息 MySQL命令:
select * from class where exists (select * from student where sname=‘王五’); -
带ANY关键字的子查询
ANY关键字表示满足其中任意一个条件就返回一个结果作为外层查询条件。
例如:查询比任一学生所属班级号还大的班级编号 MySQL命令:
select * from class where cid > any (select classid from student); -
带ALL关键字的子查询
ALL关键字与ANY有点类似,只不过带ALL关键字的子査询返回的结果需同时满足所有内层査询条件。
例如:查询比所有学生所属班级号还大的班级编号 MySQL命令:
select * from class where cid > all (select classid from student);绘制的思维导图如下,要源文件的可以私聊