mysql设计与约束
DQL:查询语句
-
排序查询
-
语法: order by 子句
-
排序方式:
-
ASC : 升序 ,默认
-
DESC : 降序
-
-
注意: 如果有多个排序条件 ,只有满足前面的条件,才会判断下一个条件
-
-
聚合函数: 将一列数据作为一个整体,进行纵向的计算
-
max(列名)
-
min(列名)
-
avg(列名)
-
conut(列名)
-
一般选择非空的列: 主键
-
count(*)
-
-
sum(列名)
注意 : 排除null值,使用ifnull函数
ifnull(列名,0)
-
-
分组查询:
-
语法:group by 分组字段;
-
注意:
-
一般分组会和聚合函数一起用
-
where和having的区别:
-
where在分组前,不满足条件不参与分组,having在分组后,过滤数据
-
where后面不可以使用聚合函数,having后面可以使用聚合函数
-- 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人
select sex, avg(math) ,count(id) from student where math > 70 group by sex set having count(id) > 2;
-
-
-
-
分页查询
-
语法: limit 开始索引,每页查询的条数;
-
公式: 开始的索引 = (当夜的页码 - 1 ) * 每页显示的条数
-- 每页显示3条记录
select * from student limit 0,3; -- 第一页
seltct * from student limit 3,3; -- 第二页
-
limit 是一个mysql的方言
约束
分类:
-
主键约束: primary key
-
非空约束:not null
-
唯一约束:unique
-
外键约束:foreign key
非空约束:not null,某一列的值不能为null
-
创建表时添加约束
CREATE TABLE stu(
id INT,
NAME VARCHAR(20) NOT NULL -- name为非空
);
-
创建表后,添加非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
-
删除name的非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20);
唯一约束:unique, 某一列的值不能重复
-
注意:
唯一约束可以有null值,但是只能有一条记录为null
-
在创建表时,添加唯一约束
CREATE TABLE stu(
id INT,
phone_number VARCHAR(20) UNIQUE -- 手机号
);
-
创建表后,添加唯一约束
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;
-
删除唯一约束
ALTER TABLE stu DROP INDEX phone_number;
主键约束:primary key
-
注意
含义:非空且唯一 2. 一张表只能有一个字段为主键
-
在创建表时,添加主键约束
create table stu( id int primary key,-- 给id添加主键约束 name varchar(20) );
-
创建表后,添加主键约束
ALTER TABLE stu MODIFY id INT PRIMARY KEY;
-
删除主键
ALTER TABLE stu DROP PRIMARY KEY;
-
自动增长:
-
数值类型
-
在创建表时,添加主键约束,并且完成主键自增长
create table stu( id int primary key auto_increment,-- 给id添加主键约束 name varchar(20) );
-
添加自动增长
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;
-
删除自动增长
ALTER TABLE stu MODIFY id INT;
-
外键约束:foreign key, 让表于表产生关系,从而保证数据的正确性
-
在创建表时,添加外键
-
create table 表名( .... 外键列 constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称) ); 2.
-
-
创建表后,添加外键约束
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);
-
删除外键
ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
-
级联操作
-
添加级联操作
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE ;
-
分类:
-
级联更新:ON UPDATE CASCADE
-
级联删除:ON DELETE CASCADE
-
-
-
数据库的设计
多表之间的设计
-
分类
一对一 2. 一对多 3. 多对多
-
实现关系:
-
一对一:一对一关系实现,可以在任意一方添加唯一外键指向另一方的主键。
-
一对多: 在多的一方建立外键,指向一的一方的主键。
-
多对多:多对多关系实现需要借助第三张中间表。中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键
-
数据库设计的范式
数据库的备份和还原
-
命令行:
-
备份:mysqldump -u用户名 -p用户名 数据库名称 > 保存的路径
-
还原:
-
登录数据库
-
创建数据库
-
使用数据库
-
source 文件路径;
-
-
-
图形化工具