数据库操作
数据库操作有以下四种:
- DDL(Data Definition Language):操作数据库、表
- DQL(Data Query Language):查询数据库中的数据
- DML(Data Manipulation Language):增删改表中的数据
- DCL(Data Control Language):对数据库权限的操作
这里主要讲DML和DQL
1.DML(Data Manipulation Language)
- 添加数据
insert into 表名 values(字段);
- 删除数据
delete * from 表名 where id = 1;
- 改数据
update 表名 set name = "张三" where id =1;
2.DQL(Data Query Language)
- 排序查询
- 语法:order by 字段
- 排序方式 :ASC(升序) DESC(降序)
//mysql数据库中默认的排序方式为升序,即不屑排序方式时,默认按升序处理。
select * from student order by math asc;
- 聚合函数:将一列数据作为一个整体,进行纵向的计算
- count:计算个数
- max:计算最大值
- min:计算最小值
- avg:计算平均值
- sum:计算和
select count(id) from student;
select max(math) from student; //查找数学成绩最高为多少
select min(math) from student;
select avg(math) from student;
select sum(math) from student;
注意:聚合函数的计算会排除null值,即如果计算平均成绩的时候,有8个人一起计算,其中一个人数学成绩为null,则会用总成绩/7,而不是总成绩/8。
如果有一个值为null,可以修改语句为:
select count(IFNULL(english,0)) from student; //解决上述问题。
- 分组查询:统计具有相同特征的数据
- 语法:group by 字段
- 注意 :分组之后查询的字段可以是分组字段,也可以是聚合函数
如:
select sex,AVG(math) from student group by sex;
- where 和 having的区别
* where在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来。
* where后不可以跟聚合函数 但是having可以。
- 分页查询
* 语法:limit 开始的所有,每页查询的条数
select * from student limit 0,3; //索引从0开始,查询1,2,3条数据
select * from student limit 3,3;
由此,可以得出一个公式:开始的索引 = (当前的页码-1) * 每页显示的条数
约束:
- 概念:对表中的数据进行限定,保证数据的正确性,有效性和完整性。
- 分类:
- 主键约束: primary key
- 非空约束: not null
- 唯一约束:unique
- 外键约束:foreign key
1.非空约束:not null
- 创建表时添加约束
create table stu(
id int,
name varchar(20) not null
);
- 创建完表后,添加非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
- 删除name的非空约束
ALTER TABLE stu MODIFY NAME VARCHAR(20);
2.唯一约束
- 创建表时添加约束
create table stu(
id int,
name varchar(20) UNIQUE
);
- 创建完表后,添加约束
ALTER TABLE stu MODIFY NAME VARCHAR(20) UNIQUE;
- 删除name的唯一约束
ALTER TABLE stu DROP INDEX NAME;
3.主键约束
- 创建表时添加主键
create table stu(
id int primary key,
name varchar(20)
};
- 创建完表后,添加主键
ALTER TABLE stu add primary key(id);
- 删除id的主键
ALTER TABLE stu DROP PRIMARY KEY;
4.自动增长
- 创建表时添加自动增长
create table stu(
id int primary auto_increment,
name varchar(20)
};
- 创建完表后,添加自动增长
alter table user modify id int auto_increment
- 删除id的自动增长
ALTER TABLE stu MODIFY id int;
5.外键约束
- 创建表时添加外键约束
create table 表名(
...
外键列,
constraint 外键名称 foreign key 外键列名称 references 主表名称(主表主键名称)
);
- 创建完表后,添加自动增长
ALTER TABLE employe ADD constraint 外键名称 foreign key 外键列名称 references 主表名称(主表主键名称);
- 删除id的自动增长
ALTER TABLE employe DROP FOREIGN KEY emp_dept_fk;
6.级联
在使用数据库的过程中,我们可能会遇到修改数据的情况,如果一个数据在另一个表中也有关联,那我们修改的时候就需要设置级联
级联更新操作 :ON UPDATE CASCADE
级联删除操作 (ON DELETE CASCADE) : 在删除掉外键对应的值后,主表中也会删除对应外键的行
ALTER TABLE employe ADD constraint 外键名称 foreign key 外键列名称 references 主表名称(主表主键名称) ON UPDATE CASCADE ON DELETE CASCADE;