day16
笔记来源于:黑马程序员python教程,8天python从入门到精通,学python看这套就够了
目录
- day16
- 116、SQL 基础和 DDL
- SQL的概述
- SQL语言的分类
- SQL的语法特征
- DDL — 库管理
- DDL — 表管理
- 117、SQL — DML
- DML概述
- 数据插入 INSERT
- 数据删除 DELETE
- 数据更新 UPDATE
- 118、SQL — DQL — 基础查询
- 119、SQL — DQL — 分组聚合
- 120、SQL — DQL — 排序分页
116、SQL 基础和 DDL
SQL的概述
SQL全称: Structured Query Language,结构化查询语言,用于访问和处理数据库的标准的计算机语言。
简单来说,SQL语言就是操作数据库的专用工具
SQL语言的分类
由于数据库管理系统(数据库软件)功能非常多,不仅仅是存储数据,还要包含:数据的管理、表的管理、库的管理、账户管理、权限管理等等。
所以,操作数据库的SQL语言,也基于功能,可以划分为4类:
-
数据定义:DDL(Data Definition Language)
- 库的创建删除、表的创建删除等
-
数据操纵:DML(Data Manipulation Language)
- 新增数据、删除数据、修改数据等
-
数据控制:DCL(Data Control Language)
- 新增用户、删除用户、密码修改、权限管理等
-
数据查询:DQL(Data Query Language)
- 基于需求查询和计算数据
SQL的语法特征
-
SQL语言,大小写不敏感
-
SQL可以单行或多行书写,最后以;号结束
-
SQL支持注释:
-
单行注释:
--
注释内容(--
后面一定要有一个空格) -
单行注释:
#
注释内容(#
后面可以不加空格,推荐加上) -
多行注释:
/* 注释内容 */
-
DDL — 库管理
-
查看数据库:
show databases;
-
使用数据库:
use 数据库名称;
-
创建数据库:
create database 数据库名称 [CHARSET UTF8];
-
删除数据库:
drop database 数据库名称;
-
查看当前使用的数据库:
select database();
DDL — 表管理
-
查看哪些表
show tables;
-
删除表
drop table 表名称; drop table if exists 表名称;
-
创建表
create table 表名称(列名称 列类型,列名称 列类型,...... );
117、SQL — DML
DML概述
DML是指数据操作语言,英文全称是Data Manipulation Language,用来对数据库中表的数据记录进行更新。
关键字:
- 插入 INSERT
- 删除 DELETE
- 更新 UPDATE
数据插入 INSERT
基础语法:
示例代码:
create table student(id int,name varchar(10),age int
);# insert 语法
# 仅插入 id 列数据
insert into student(id) values(1), (2), (3);# 插入全部列数据
insert into student(id, name, age) values(4, '周杰伦', 31), (5, '林俊杰', 33);# 插入全部列数据,快捷写法
insert into student values(6, '张学友', 31), (7, '王力宏', 33);
tips:
- 插入字符串数据,需要用单引号包围;
- 插入全部列的时候,列的列表可以省略。
数据删除 DELETE
基础语法:
示例代码:
create table student(id int,name varchar(10),age int
);# delete 语法
# 删除 id 为 1 的数据
delete from student where id=1;# 删除 id 小于 4 的数据
delete from student where id < 4;# 删除 id 大于 6 的数据
delete from student where id > 6;# 删除 age 等于 33 的数据
delete from student where age = 33;# 删除 student 表中的所有数据
delete from student;
数据更新 UPDATE
基础语法:
示例代码:
create table student(id int,name varchar(10),age int
);# update 语法
insert into student(id, name, age) values(4, '周杰伦', 31), (5, '林俊杰', 33);# 修改 id 为 4 的 name 为张学友
update student set name = '张学友' where id=4;# 修改全部数据的 name 为张学友
update student set name = '王力宏';
tips:
字符串的值,出现在SQL语句中,必须要用单引号包围起来。
118、SQL — DQL — 基础查询
在SQL中,通过 SELECT 关键字开头的 SQL 语句,来进行数据的查询。
基础语法:
含义就是:从(FROM)表中,选择(SELECT)某些列进行展示
示例代码:
# 步骤 1,创建完即屏蔽
create table student_1(id int,name varchar(15),age int,gender varchar(4)
);# 步骤 2,创建完即屏蔽
insert into student_1(id, name, age, gender) values
(10001, 'zhoujielun', 31, 'nan'),
(10002, 'wanglihong', 33, 'nan'),
(10003, 'caiyilin', 35, 'nv'),
(10004, 'linzhilin', 36, 'nv'),
(10005, 'liudehua', 33, 'nan'),
(10006, 'zhangdashan', 10, 'nan'),
(10007, 'liuzhilong', 11, 'nan'),
(10008, 'wangxiaoxiao', 33, 'nv'),
(10009, 'zhangyimei', 20, 'nv'),
(10010, 'wangyiqian', 13, 'nv'),
(10011, 'chengyixun', 31, 'nan'),
(10012, 'zhangxiaoguang', 33, 'nan'),
(10013, 'lidaxiao', 15, 'nan'),
(10014, 'lvtiantian', 36, 'nv'),
(10015, 'zengyueyue', 31, 'nv'),
(10016, 'liujiahui', 21, 'nv'),
(10017, 'xiangyufan', 23, 'nan'),
(10018, 'liudeqiang', 26, 'nan'),
(10019, 'wangqiangqiang', 11, 'nan'),
(10020, 'linzhihui', 25, 'nv');# 步骤 3
# 从某个表中选取某些列进行展示
-- select id, name, age, gender from student_1;
select * from student_1;-- select * from student_1 where age > 20;
select * from student_1 where gender = 'nan';
结果1:
结果2:
tips:使用快捷键 ctrl + Enter 执行程序时,要注意只会执行到光标所在位置!
119、SQL — DQL — 分组聚合
分组聚合应用场景非常多,如:统计班级中,男生和女生的人数。
这种需求就需要:
- 按性别分组
- 统计每个组的人数
这就称之为:分组聚合。
基础语法:
示例代码:
create table student_1(id int,name varchar(15),age int,gender varchar(4)
);insert into student_1(id, name, age, gender) values
(10001, 'zhoujielun', 31, 'nan'),
(10002, 'wanglihong', 33, 'nan'),
(10003, 'caiyilin', 35, 'nv'),
(10004, 'linzhilin', 36, 'nv'),
(10005, 'liudehua', 33, 'nan'),
(10006, 'zhangdashan', 10, 'nan'),
(10007, 'liuzhilong', 11, 'nan'),
(10008, 'wangxiaoxiao', 33, 'nv'),
(10009, 'zhangyimei', 20, 'nv'),
(10010, 'wangyiqian', 13, 'nv'),
(10011, 'chengyixun', 31, 'nan'),
(10012, 'zhangxiaoguang', 33, 'nan'),
(10013, 'lidaxiao', 15, 'nan'),
(10014, 'lvtiantian', 36, 'nv'),
(10015, 'zengyueyue', 31, 'nv'),
(10016, 'liujiahui', 21, 'nv'),
(10017, 'xiangyufan', 23, 'nan'),
(10018, 'liudeqiang', 26, 'nan'),
(10019, 'wangqiangqiang', 11, 'nan'),
(10020, 'linzhihui', 25, 'nv');select gender, avg(age), sum(age), min(age), max(age), count(*) from student_1 group by gender;
tips:SELECT 中,除了聚合函数外,GROUP BY 了哪个列,哪个列在能出现在 SELECT 中。
常规字段只有在 GROUP BY 后出现过才能 加在 select 关键字之后,聚合函数中的参数除外。
120、SQL — DQL — 排序分页
1、可以对查询的结果,使用 ORDER BY 关键字,指定某个列进行排序。
基本语法:
create table student_1(id int,name varchar(15),age int,gender varchar(4)
);insert into student_1(id, name, age, gender) values
(10001, 'zhoujielun', 31, 'nan'),
(10002, 'wanglihong', 33, 'nan'),
(10003, 'caiyilin', 35, 'nv'),
(10004, 'linzhilin', 36, 'nv'),
(10005, 'liudehua', 33, 'nan'),
(10006, 'zhangdashan', 10, 'nan'),
(10007, 'liuzhilong', 11, 'nan'),
(10008, 'wangxiaoxiao', 33, 'nv'),
(10009, 'zhangyimei', 20, 'nv'),
(10010, 'wangyiqian', 13, 'nv'),
(10011, 'chengyixun', 31, 'nan'),
(10012, 'zhangxiaoguang', 33, 'nan'),
(10013, 'lidaxiao', 15, 'nan'),
(10014, 'lvtiantian', 36, 'nv'),
(10015, 'zengyueyue', 31, 'nv'),
(10016, 'liujiahui', 21, 'nv'),
(10017, 'xiangyufan', 23, 'nan'),
(10018, 'liudeqiang', 26, 'nan'),
(10019, 'wangqiangqiang', 11, 'nan'),
(10020, 'linzhihui', 25, 'nv');# order by 默认是升序
select * from student_1 where age > 20 order by age asc ;# 降序
select * from student_1 where age > 20 order by age desc ;
2、可以使用 LIMIT 关键字,对查询结果进行数量限制或分页显示。
基本语法:
create table student_1(id int,name varchar(15),age int,gender varchar(4)
);insert into student_1(id, name, age, gender) values
(10001, 'zhoujielun', 31, 'nan'),
(10002, 'wanglihong', 33, 'nan'),
(10003, 'caiyilin', 35, 'nv'),
(10004, 'linzhilin', 36, 'nv'),
(10005, 'liudehua', 33, 'nan'),
(10006, 'zhangdashan', 10, 'nan'),
(10007, 'liuzhilong', 11, 'nan'),
(10008, 'wangxiaoxiao', 33, 'nv'),
(10009, 'zhangyimei', 20, 'nv'),
(10010, 'wangyiqian', 13, 'nv'),
(10011, 'chengyixun', 31, 'nan'),
(10012, 'zhangxiaoguang', 33, 'nan'),
(10013, 'lidaxiao', 15, 'nan'),
(10014, 'lvtiantian', 36, 'nv'),
(10015, 'zengyueyue', 31, 'nv'),
(10016, 'liujiahui', 21, 'nv'),
(10017, 'xiangyufan', 23, 'nan'),
(10018, 'liudeqiang', 26, 'nan'),
(10019, 'wangqiangqiang', 11, 'nan'),
(10020, 'linzhihui', 25, 'nv');# 升序筛选 5 条
select * from student_1 limit 5;
# 从第 10 个开始,升序筛选 5 条
select * from student_1 limit 10, 5;select age, count(*) from student_1 where age > 20 group by age order by age limit 3;
排序和分页限制语法关键词顺序如下: