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;
排序和分頁限制語法關鍵詞順序如下: