数据库操作的分类以及约束

数据库操作

数据库操作有以下四种:

  • 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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章