标题: MYSQL笔记 [打印本页] 作者: 少骑狗大码狗 时间: 2018-12-7 12:50 标题: MYSQL笔记 记忆内容 1.主键约束:primary key 2. 非空约束:not null 3. 唯一约束:unique 4. 外键约束:foreign key
创建表完后,添加非空约束 *alter table 表名 modify 列名 数据类型 xxx;*
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
删除name的非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20);
----------------------------------------
删除唯一约束 *alter开头,后面是drop和modify*
ALTER TABLE stu DROP INDEX phone_number;
在表创建完后,添加唯一约束
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
----------------------------------------
删除主键 *alter开头,后面是drop和modify*
ALTER TABLE stu DROP PRIMARY KEY;
创建完表后,添加主键
ALTER TABLE stu MODIFY id INT PRIMARY KEY;
----------------------------------------
删除自动增长 *alter开头,后面是modify* AUTO_INCREMENT跟在PRIMARY KEY后面。
ALTER TABLE stu MODIFY id INT;
添加自动增长
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
------------------关于外键,在创建标的时候就需要在从表内写上。主表少,从表多。
外键列
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
constraint 外键名称 可以省略
·······································
删除外键 *alter开头,后面是drop和add*
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
创建表之后,添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
--------------------------*update和delete和cascade*
语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名称
FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE;
分类:1. 级联更新:ON UPDATE CASCADE
2. 级联删除:ON DELETE CASCADE
添加MYSQL约束与设计。
# 今日内容
1. DQL:查询语句
1. 排序查询
2. 聚合函数
3. 分组查询
4. 分页查询
2. 约束
3. 多表之间的关系
4. 范式
5. 数据库的备份和还原
# DQL:查询语句
1. 排序查询
* 语法:order by 子句
* order by 排序字段1 排序方式1 , 排序字段2 排序方式2...
3. 分组查询:
1. 语法:group by 分组字段;
2. 注意:
1. 分组之后查询的字段:分组字段、聚合函数
2. where 和 having 的区别?
1. where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
2. where 后不可以跟聚合函数,having可以进行聚合函数的判断。
-- 按照性别分组。分别查询男、女同学的平均分
SELECT sex , AVG(math) FROM student GROUP BY sex;
-- 按照性别分组。分别查询男、女同学的平均分,人数
SELECT sex , AVG(math),COUNT(id) FROM student GROUP BY sex;
-- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组
SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;
-- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
SELECT sex , AVG(math),COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;
* 非空约束:not null,某一列的值不能为null
1. 创建表时添加约束
CREATE TABLE stu(
id INT,
NAME VARCHAR(20) NOT NULL -- name为非空
);
2. 创建表完后,添加非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
3. 删除name的非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20);
* 唯一约束:unique,某一列的值不能重复
1. 注意:
* 唯一约束可以有NULL值,但是只能有一条记录为null
2. 在创建表时,添加唯一约束
CREATE TABLE stu(
id INT,
phone_number VARCHAR(20) UNIQUE -- 手机号
);
3. 删除唯一约束
ALTER TABLE stu DROP INDEX phone_number;
4. 在表创建完后,添加唯一约束
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;