(一)数据库关联查询
- 数据库条件查询
- 条件查询:
SELECT * FROM student WHERE age=18
比较运算符
>、<、 =、>= 、<=、<>、 !=**
逻辑运算
And
Or
Not
模糊查询
SELECT * FROM student WHERE name LIKE “小%”
%pip 0到多个字符
范围查询
查询为空
不为空
排序
SELECT * FROM student ORDER BY age;
以年龄排序
多条件排序,第一个条件为主排序条件
排倒叙 在后面加上desc
筛选和排序连用(先筛选再排序)
子查询
子查询是一种嵌套查询,将一个查询用小括号包围起来,然后作为下一个查询的结果,子查询必须有别名。
SELECT nan.name FROM (SELECT name,age FROM student WHERE gender=”男” ) AS nan WHERE age = 18;
(二)数据库关联查询
数据库关系搭建:一对一,一对多,多对多:
数据库关系针对是多表之间的联系。
一对一
两个表的每条数据之间,存在唯一映射关系。
举个栗子:
用户登陆表 用户
手机号 姓名
验证码 身份证号
头像
邮箱
手机号
一对多
将两个表分为一个一表,一个多表,一表当中数据可以对应多表当中的多条数据,多表当中的一条数据只能对应一表当中的一条数据。
举个栗子:
父亲(一表) 儿子(多表)
张三 张1
张2
id P_id
这两张表通过parent的id来关联
查询老张的所有儿子
查询李3的父亲
多对多
一个表当中数据可以对应另一个表当中的多条数据,反之亦然。
专业 课程
关系
Python所有的课程
包含计算机基础所有的专业
父子id关系
在商品类型当中会涉及到子类型
举个栗子:
服装
男装
中山装
高级中山装
Parent_id
(三)数据库关联查询
主键
主键(primary key):全称叫做“主键约束”,可以是一列或者多列组合,其值可以唯一标识这条数据。
所以主键唯一性,不可以为空。
创建主键
创建表的时候创建主键
CREATE TABLE food(id INT PRIMARY KEY,name CHAR(32));
创建主键,并且自增长
CREATE TABLE food(id INT PRIMARY KEY AUTO_INCREMENT,name CHAR(32))。
添加主键
在已经存在的表当中添加主键
ALTER TABLE food ADD PRIMARY KEY (id);
ALTER TABLE food ADD PRIMARY KEY AUTO_INCREMENT (id); 由于版本 问题,当前命令不会报错,但是无法将主键设置自增长。导致添加的 数据主键为0
ALTER TABLE food MODIFY id INT AUTO_INCREMENT PRIMARY EKY;
添加实际上是将一个已经存在的字段修改为主键
删除主键
ALTER TABLE food DROP PRIMARY KEY ;
ALTER TABLE food DROP PRIMARY KEY ;
删除主键只是删除了主键类型,并没有删除字段
如果主键设置自增长,先通过修改语句去掉自增长,然后在删除主键。
ALTER TABLE food MODIFY id INT; 去掉自增长
ALTER TABLE food DROP PRIMARY KEY ; 删除主键
(四)数据库关联查询
外键
外键:(foreign key):全称叫做“外键约束”,主要用来约束一对多关系, 一对多关系当中,多表当中用外键来关联一表当中的主键字段。
create table parent(id int primary key auto_increment,name char(32));
create table child(id int primary key auto_increment,name char(32),p_id int, foreign key(p_id) references parent(id));
1、必须先有外键字段,再设置外键
2、一表必须先创建出来,最好有主键;
3、外键字段的数据必须一表对应字段有的数据。
多对多关系
专业 课程
关系
创建多对多关系:
创建专业表
create table major(id int primary key auto_increment,name char(32));
创建课程表
create table course(id int primary key auto_increment,name char(32));
创建关系表
create table major_course(
id int primary key auto_increment, 设置主键
major_id int, 设置和专业关联的字段
course_id int, 设置和课程关联的字段
foreign key(major_id) references major(id), 使用major_id和major表的 id字段进行外键关联
foreign key(course_id) references course(id)使用course_id和course表 的id字段进行外键关联
);
创建专业表
CREATE TABLE major(id INT PRIMARY KEY AUTO_INCREMENT,name CHAR(32));
创建课程表
CREATE TABLE course(id INT PRIMARY KEY AUTO_INCREMENT,name CHAR(32));
创建关系表
CREATE TABLE major_course(
Id INT PRIMARY KEY AUTO_INCREMENT, 设置主键
major_id INT, 设置和专业关联的字段
course_id INT, 设置和课程关联的字段
FOREIGN KEY(major_id) REFERENCES major(id), 使用major_id和 major 表的id字段进行外键关联
FOREIGN KEY(course_id) REFERENCES COURSE(id)使用course_id和 course表 的id字段进行外键关联
);