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 文件路径;