IT评测·应用市场-qidao123.com技术社区

标题: 数据库的增删查改(进阶) [打印本页]

作者: 千千梦丶琪    时间: 2025-4-1 06:39
标题: 数据库的增删查改(进阶)
1. 数据库的束缚

   束缚就是检查数据的合法性
  1.1 not null

  1. not null ,指列不能储存空值`在这里插入代码片`
复制代码


1.2 unique

  1. //每次插入修改前,都进行查询,若已经存在,则失败
  2. unique   , 指这一列所有行数据唯一(不可重复)
复制代码


1.3 default

  1. default ,规定没有给列赋值时的默认值(默认的默认值是null)
复制代码


1.4 primary key

  1. primary key ,主键,一条记录的身份标识,not null + unique
  2. //主键只能有一个,但是一个主键不一定只针对一个列
  3. //对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1。
  4. //一般使用整数 id
复制代码



1.5 foreign key

  1. foreign key ,外键涉及到两个表之间的关系
复制代码


1.6 check

  1. check  ,指定条件,插入/修改数据,数据符合才插入/修改成功
  2. //通过check指定一个条件(gender = '男' or gender = '女')
复制代码
2. 表的设计通用步调及关系示例


表设计通用步调:

2.1 一对一关系

典型场景:一个实体严酷对应另一个实体
示例:用户表(user) ↔ 用户详情表(user_profile)
  1. -- 用户表(基础信息)
  2. CREATE TABLE user (
  3.   user_id INT PRIMARY KEY AUTO_INCREMENT,
  4.   username VARCHAR(50) NOT NULL,
  5.   phone VARCHAR(20) UNIQUE
  6. );
  7. -- 用户详情表(扩展信息)
  8. CREATE TABLE user_profile (
  9.   profile_id INT PRIMARY KEY,
  10.   address VARCHAR(100),
  11.   emergency_contact VARCHAR(20),
  12.   -- 外键指向user表
  13.   FOREIGN KEY (profile_id) REFERENCES user(user_id)
  14. );
复制代码
特点


2.2 一对多关系

典型场景:一个实体关联多个子实体
示例:部门表(department) ↔ 员工表(employee)
  1. -- 部门表
  2. CREATE TABLE department (
  3.   dept_id INT PRIMARY KEY AUTO_INCREMENT,
  4.   dept_name VARCHAR(50) NOT NULL
  5. );
  6. -- 员工表(多端)
  7. CREATE TABLE employee (
  8.   emp_id INT PRIMARY KEY AUTO_INCREMENT,
  9.   emp_name VARCHAR(50) NOT NULL,
  10.   -- 外键指向部门表
  11.   dept_id INT,
  12.   FOREIGN KEY (dept_id) REFERENCES department(dept_id)
  13. );
复制代码
特点


2.3 多对多关系

典型场景:两个实体互相拥有多个关联
示例:弟子表(student) ↔ 课程表(course) ↔ 关联表(student_course)
  1. -- 学生表
  2. CREATE TABLE student (
  3.   stu_id INT PRIMARY KEY AUTO_INCREMENT,
  4.   stu_name VARCHAR(50) NOT NULL
  5. );
  6. -- 课程表
  7. CREATE TABLE course (
  8.   course_id INT PRIMARY KEY AUTO_INCREMENT,
  9.   course_name VARCHAR(50) NOT NULL
  10. );
  11. -- 关联表(中间表)
  12. CREATE TABLE student_course (
  13.   stu_id INT,
  14.   course_id INT,
  15.   -- 联合主键 + 外键约束
  16.   PRIMARY KEY (stu_id, course_id),
  17.   FOREIGN KEY (stu_id) REFERENCES student(stu_id),
  18.   FOREIGN KEY (course_id) REFERENCES course(course_id)
  19. );
复制代码
特点


关系对比速查表
关系类型示例场景表数目外键位置典型SQL操作一对一用户-身份证2主表的主键作为外键JOIN ... ON a.id = b.id一对多部门-员工2在“多端”表中存储外键WHERE dept_id = ?多对多弟子-课程3中间表存储两边外键GROUP BY ... HAVING COUNT 3. 新增


4. 查询

4.1 聚合查询

4.1.1 聚合函数

函数说明COUNT()返回查询到的数据纪录数目SUM()返回查询数据的数值总和(非数值类型无统计意义)AVG()返回查询数据的算术平均值(非数值类型无统计意义)MAX()返回查询数据集中的最大值(非数值类型无统计意义)MIN()返回查询数据集中的最小值(非数值类型无统计意义)
4.1.2 GROUP BY子句

MySQL 未指定排序时,按数据物理存储顺序或索引顺序读取第一条纪录

4.1.3 having

GROUP BY 子句举行分组以后,需要对分组结果再举行条件过滤时,不能利用 WHERE 语句,而需要用HAVING

4.2 团结查询

实际开发中往往数据来自不同的表,所以需要多表团结查询。多表查询是对多张表的数据取笛卡尔积:
   笛卡尔积,就是两个表的纪录,分列组合
  
  团结查询:就是把表的数据变多,再变少
  1. create table classes
  2.         (
  3.                 id int primary key auto_increment,
  4.                 name varchar(20) default'unkown',
  5.                 `desc` varchar(20)
  6.         );
复制代码
  1. create table student
  2.         (
  3.                 id int primary key auto_increment,
  4.                 sn int unique,
  5.                 name varchar(20) default'unkown',
  6.                 qq_mail varchar(20),
  7.                 classes_id int,
  8.                 foreign key (classes_id) references classes(id)
  9.         );
复制代码
  1. create table course
  2.         (
  3.                 id int primary key auto_increment,
  4.                 name varchar(20)
  5.         );
复制代码
  1. create table score
  2.         (
  3.                 id int primary key auto_increment,
  4.                 score decimal(3,1),
  5.                 student_id int,
  6.                 course_id int,
  7.                 foreign key(student_id) references student(id),
  8.                 foreign key (course_id) references course(id)
  9.         );
复制代码
创建的四张表:

4.2.1 内毗连

   四步走:
  
  示例:









4.2.2 外毗连

外毗连分为左外毗连和右外毗连。如果团结查询,左侧的表完全体现我们就说是左外毗连;右侧的表完全体现我们就说是右外毗连。

   若两张表完全重合,内外毗连一个意思
若两张表只有一部分重合,外毗连就是交集
  

4.2.3 自毗连

   自毗连是指在同一张表毗连自身举行查询(自己和自己举行笛卡尔积)。
  

4.2.4 子查询

子查询是指嵌入在其他sql语句中的select语句,也叫嵌套查询


4.2.5 合并查询






免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4