本章内容
1、掌握SQL中的约束
2、掌握单表查询的语法结构(重点)
3、掌握where条件(重点)
4、掌握分组查询(重点)
5、掌握聚合函数(重点)
6、掌握排序
7、掌握联合查询
约束的概念和分类
-
约束的概念
-
对表中的数据进行限定,保证数据的正确性、有效性、完整性!
-
-
约束的分类
约束 | 说明 |
---|---|
PRIMARY KEY | 主键约束 |
AUTO_INCREMENT | 自动增长 |
UNIQUE | 唯一约束 |
NOT NULL | 非空约束 |
FOREIGN KEY | 外键约束 |
2.主键约束
-
主键约束特点
-
主键约束包含:非空和唯一两个功能
-
一张表只能有一个列作为主键
-
主键一般用于表中数据的唯一标识
-
-
建表时添加主键约束
-- 标准语法 CREATE TABLE 表名( 列名 数据类型 PRIMARY KEY, 列名 数据类型, ... ); -- 创建student表 CREATE TABLE student( id INT PRIMARY KEY -- 给id添加主键约束 ); -- 添加数据 INSERT INTO student VALUES (1),(2); -- 主键默认唯一,添加重复数据,会报错 INSERT INTO student VALUES (2); -- 主键默认非空,不能添加null的数据 INSERT INTO student VALUES (NULL); -- 查询student表 SELECT * FROM student; -- 查询student表详细 DESC student;
-
删除主键
-- 标准语法 ALTER TABLE 表名 DROP PRIMARY KEY; -- 删除主键 ALTER TABLE student DROP PRIMARY KEY;
-
建表后单独添加主键
-- 标准语法 ALTER TABLE 表名 MODIFY 列名 数据类型 PRIMARY KEY; -- 添加主键 ALTER TABLE student MODIFY id INT PRIMARY KEY;
3.主键自动增长约束
-
建表时添加主键自增约束
-- 标准语法 CREATE TABLE 表名( 列名 数据类型 PRIMARY KEY AUTO_INCREMENT, 列名 数据类型, ... ); -- 创建student2表 CREATE TABLE student2( id INT PRIMARY KEY AUTO_INCREMENT -- 给id添加主键自增约束 ); -- 添加数据 INSERT INTO student2 VALUES (1),(2); -- 添加null值,会自动增长 INSERT INTO student2 VALUES (NULL),(NULL); -- 查询student2表 SELECT * FROM student2; -- student2表详细 DESC student2;
-
删除自动增长
-- 标准语法 ALTER TABLE 表名 MODIFY 列名 数据类型; -- 删除自动增长 ALTER TABLE student2 MODIFY id INT;
-
建表后单独添加自动增长
-- 标准语法 ALTER TABLE 表名 MODIFY 列名 数据类型 AUTO_INCREMENT; -- 添加自动增长 ALTER TABLE student2 MODIFY id INT AUTO_INCREMENT;
4.唯一约束
-
建表时添加唯一约束
-- 标准语法 CREATE TABLE 表名( 列名 数据类型 UNIQUE, 列名 数据类型, ... ); -- 创建student3表 CREATE TABLE student3( id INT PRIMARY KEY AUTO_INCREMENT, tel VARCHAR(20) UNIQUE -- 给tel列添加唯一约束 ); -- 添加数据 INSERT INTO student3 VALUES (NULL,'18888888888'),(NULL,'18666666666'); -- 添加重复数据,会报错 INSERT INTO student3 VALUES (NULL,'18666666666'); -- 查询student3数据表 SELECT * FROM student3; -- student3表详细 DESC student3;
-
删除唯一约束
-- 标准语法 ALTER TABLE 表名 DROP INDEX 列名; -- 删除唯一约束 ALTER TABLE student3 DROP INDEX tel;
-
建表后单独添加唯一约束
-- 标准语法 ALTER TABLE 表名 MODIFY 列名 数据类型 UNIQUE; -- 添加唯一约束 ALTER TABLE student3 MODIFY tel VARCHAR(20) UNIQUE;
5.非空约束
-
建表时添加非空约束
-- 标准语法 CREATE TABLE 表名( 列名 数据类型 NOT NULL, 列名 数据类型, ... ); -- 创建student4表 CREATE TABLE student4( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL -- 给name添加非空约束 ); -- 添加数据 INSERT INTO student4 VALUES (NULL,'张三'),(NULL,'李四'); -- 添加null值,会报错 INSERT INTO student4 VALUES (NULL,NULL);
-
删除非空约束
-- 标准语法 ALTER TABLE 表名 MODIFY 列名 数据类型; -- 删除非空约束 ALTER TABLE student4 MODIFY NAME VARCHAR(20);
-
建表后单独添加非空约束
-- 标准语法 ALTER TABLE 表名 MODIFY 列名 数据类型 NOT NULL; -- 添加非空约束 ALTER TABLE student4 MODIFY NAME VARCHAR(20) NOT NULL;
练习:
创建员工表(编号、姓名、性别、年龄、籍贯、职位、身份证号)
要求编号为主键、自增长
其余所有字段非空
身份证唯一
添加5行数据作为测试
单表查询
查询语法结构
select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页限定
查询表所有数据
*代表所有字段
select * from 表;
查询指定列
select 列1,列2... from 表;
别名查询
SELECT 列名1,列名2,... AS 别名 FROM 表名; 或 SELECT 列名1,列名2,... 别名 FROM 表名;
where子句
条件分类
符号 | 功能 |
---|---|
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
= | 等于 |
<> 或 != | 不等于 |
BETWEEN ... AND ... | 在某个范围之内(都包含) |
IN(...) | 多选一 |
LIKE 占位符 | 模糊查询 _单个任意字符 %多个任意字符 |
IS NULL | 是NULL |
IS NOT NULL | 不是NULL |
AND 或 && | 并且 |
OR 或 || | 或者 |
NOT 或 ! | 非,不是 |
分页查询
limit 关键字
select ... from 表 limit 起始位置,长度;
distinct关键字
去掉重复的值
select distinct 列名 from 表
--distinct 后面有多列,就是多列的组合 不会重复
GROUP BY 语句
按照某一字段或多个字段进行分类,将数据进行合并,having子句可以对分组后的结果进行筛选
select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组后的条件
7、查询每种品牌里卖的最好的颜色
SELECT brand, color, MAX(sales) AS best_color_sales FROM Cars GROUP BY brand;
聚合函数
函数名 | 功能 |
---|---|
count(列名) | 统计数量(一般选用不为null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
Order by 子句
对一个字段或多个字段进行排序
排序类型:
-
升序 asc
-
降序 desc
union/union all
合并两个查询结果集