DQL:查询语句
1.排序函数
order by 排序字段 排序方式
select *from student order by math asc;
排序方式
asc:升序,默认
desc:降序
select *from student order by math asc,english asc;
用多个排序条件,当第一个条件一致时,才会用第二个条件排序
2.聚合函数
将一列数据给一个整体,进行纵向(列)的计算
count:计算个数
max:最大
min:最小
sum:求和
avg:求平均值
聚合函数的计算忽视nul
select count(name) from student; select count(ifnull(name,0)) from student; select count(id) from student; select max(math) from student; select avg(math) from student;
3.分组查询
group by 分组字段
select from student group by sex; select sex,avg(math) from student group by sex; select sex,avg(math),count(id) from student group by sex; select sex,avg(math),count(id) from student where math>70 group by sex; select sex,avg(math),count(id) from student where math>70 group by sex having count(id)>2;
4.分页查询
limit 开始的索引,每页查询的条数;
select * from student limit 0,3;(第一页) select * from student limit 3,3;(第二页)
公式:开始的索引=(当前的页码-1)*每页显示的条数
约束
对表中的数据进行限定,保证数据的正确性、有效性、完整性
分类:
1.主键约束:primary key
primary key 表示非空且唯一
一张表只能有一个主键
主键就是表中记录的唯一标识
(1)创建表时,添加主键约束
create table stu( id int primary key, name varchar(20) );
删除主键
alter table stu drop primary key;
(2)创建表完后,添加主键
alter table stu modify id int primary key;
2.非空约束:no null
(1)创建表时添加约束
create table st( id int, name varchar(20) not null --name为非空 )
删除name的非空约束
alter table stu modify name varchar(20);
(2)创建完表后,添加非空约束
alter table stu modify name varchar(20) not null;
(3)自动增长
数值型的某列,auto_increment自增长
create table stu( id int primary key auto_increment name varchar(20) );
删除自动增长
alter table stu modify id int;
3.唯一约束:unique
唯一约束可以有null,但是只能有一个
在创建表时,添加唯一约束:
create table stu( id int, phone_number varchar(20) unique );
删除唯一约束:
alter table stu drop index phone_number;
表创建完后添加唯一约束:
alter table stu modify phone_number varchar(20) unique;
4.外键约束:foregin key
(1)创建表时,建立外键
create table 表名( ... 外键列(外键对应主表的主键) constraint 外键名称 foreign key (外键列名称) references 主表名称 (主表列名称) );
(2)删除外键
alter table stu drop foreign key stu_dept_fk
(3)建立表后添加外键
alter table stu add comstraint stu_dept_fk foreign key (dep_id) references department(id)
5.级联操作
添加外键,设置级联
alter table stu add comstraint stu_dept_fk foreign key (dep_id) references department(id) on updata cascade;
多表之间的关系
1.一对一
2.一对多
3.多对多
表设计的范式
1.第一范式1NF
每一列都是不可分割的原子数据项:不能有列表头包含子列表头
2.第二范式2NF
在1NF的基础上,非码属性必须完全依赖于候选码(在1NF的基础上消除非主属性对主码的部分函数依赖)
函数依赖:如果通过A属性的值可以确定唯一B属性的值,则称B依赖于A
学号-->姓名
完全函数依赖:如果A是一个属性组,则B属性值的确定需要依赖于A属性组中所有的属性
(学号,课程名称)-->分数
部分函数依赖:如果A是一个属性组,则B属性的确定需要依赖于A属性组中某一些值
(学号,课程名称)-->姓名
传递函数:如果通过A属性的值可以确定唯一B属性的值,如果通过B属性的值可以确定唯一C属性的值,则称C传递函数依赖于A
学号-->系名,系名-->系主任
码:如果在一张表中,一个属性或属性组,被其他所有的属性所完全依赖,则称这个属性为该表的码
该表的码是(学号,课程名称)
主属性:码属性组中的所有属性
非主属性:除码属性组以外的属性
分表处理后:
3.第三范式3NF
在2NF的基础上,任何非主属性不依赖于其他的非主属性(在2NF的基础上消除传递依赖)
消除之后:
4.巴斯-科德范式BCNF
5.第四范式4NF
6.第五范式5NF
数据库的备份和还原
备份:
mysqldump -u用户名 -p密码 数据库名称 > 保存的路径;
还原:
1.登录数据库
2.创建数据库
create database db1;
3.使用数据库
use db1;
4.执行文件
source 文件路径;