一、选择
SELECT * FROM STUDENTS; select * from students;关键字select:选择
*:全部
关键字from: 来源/从哪里...
students:一个表的名称
用法:从students表中选择全部的内容。
select 姓名,班级 from students;* 换成“姓名,班级”,意味着从students表中选择“姓名,班级”列的内容
select 姓名,班级 from students LIMIT 5;关键字LIMIT:限制查询结果的数量
select 姓名,班级 from students LIMIT 5 OFFSET 5;关键字OFFSET:跳过x条数量的结果
select 姓名,班级,成绩 from students LIMIT 5 OFFSET 5;换行(分段)方便管理
select 姓名,班级,成绩 from students WHERE 成绩 = '98';关键字WHERE:筛选条件‘等于 98’的
select 姓名,班级,成绩 from students WHERE 成绩 <> '98';关键字WHERE:筛选条件‘不等于 98’的
select 姓名,班级,成绩 from students WHERE 成绩 = '98' ORDER BY 成绩;关键字ORDER BY:对查询结果 ‘按成绩’进行排序
默认升序排列(由低到高)
select 姓名,班级,成绩 from students WHERE 成绩 = '98' ORDER BY 成绩,班级;关键字ORDER BY:对查询结果 ‘按成绩、班级’进行排序
默认升序排列(由低到高)
select 姓名,班级,成绩 from students WHERE 成绩 = '98' ORDER BY 成绩 DESC;关键字DESC:降序排列
select 姓名,班级,成绩 from students WHERE 姓名 = '张三';select 姓名,班级,成绩 from students WHERE 姓名 LIKE '张%';select 姓名,班级,成绩 from students WHERE 姓名 LIKE '张_';1.使用等号=查询姓名为张三的这条数据
2.关键字LIKE模糊查询,使用%代表(0~n)个任意字符
3.使用_代表1个字符
select 姓名,班级,成绩 from students WHERE 成绩 >= 80;筛选成绩大于等于80的数据
select 姓名,班级,成绩 from students WHERE 成绩 >= 80 AND 成绩 < 90;关键字AND:同时符合多个条件
筛选成绩大于等于80,同时小于90的数据
select 姓名,班级,成绩 from students WHERE 成绩 BETWEEN 80 AND 90;关键字 BETWEEN aa AND bb:筛选介于aa和bb之间的数据
筛选大于等于80,同时小于90的数据
select 姓名,班级,成绩 from students WHERE 成绩 BETWEEN 80 AND 90 AND 班级 = '一年级';筛选大于等于80,同时小于90的数据,同时班级等于“一年级”的数据
select 姓名,班级,成绩 from students WHERE 成绩 BETWEEN 80 AND 90 AND 班级 = '一年级' OR 班级 = '二年级';关键字OR:符合任一条件
筛选大于等于80,同时小于90的数据,同时班级等于“一年级”或者等于“二年级”的数据!
!!!注意:由于AND语法优先级比OR要高,因此筛选条件是有先后顺序的:
①筛选大于等于80,同时小于90的数据,同时班级等于“一年级”
②等于“二年级”的数据
因此,筛选出的数据,包含两个部分的所有数据。
select 姓名,班级,成绩 from students WHERE 成绩 BETWEEN 80 AND 90 AND (班级 = '一年级' OR 班级 = '二年级');圆括号:先处理圆括号的条件。
筛选(成绩 >=80 且 < 90 ),(班级等于“一年级”或者“二年级”)
select 姓名,班级,成绩 from students WHERE 成绩 BETWEEN 80 AND 90 AND (班级 IN ('一年级','二年级'));关键字IN:筛选符合范围内任一符合的条件,简化OR运算
班级 IN ('一年级','二年级'):“班级”在“一年级”或者“二年级”的数据
SELECT AVG(成绩),SUM(成绩),MAX(成绩),MIN(成绩),COUNT(成绩) FROM students;AVG(成绩):计算成绩列的平均数
SUM(成绩):计算成绩列的总和
MAX(成绩):成绩列的最大值
MIN(成绩):成绩列的最小值
COUNT(成绩):计算数量
SELECT AVG(成绩) AS 平均成绩 FROM students;关键字AS:为查询结果的栏位设置别名。
将查询结果“AVG(成绩)”一列设置成“平均成绩”
SELECT ROUND(AVG(成绩),1) AS 平均成绩 FROM students;ROUND(AVG(成绩),1):四舍五入语法,指定保留1位小数
ROUND(AVG(成绩)):四舍五入语法,指定保留整数位,不保留小数
SELECT 班级,ROUND(AVG(成绩),1) AS 平均成绩 FROM students GROUP BY 班级;GROUP BY 班级:分组,按照班级分组,就可以得到每个班级的平均成绩
注意:使用GROUP BY分组之后的筛选不可以使用WHERE关键字,而是改用HAVING关键字。
SELECT 班级,ROUND(AVG(成绩),1) AS 平均成绩 FROM students GROUP BY 班级 HAVING 平均成绩 >= 80;关键字HAVING:筛选条件,当使用分组之后使用
注意:关键字之间有使用顺序,如下:
SELECT——>FROM——>WHERE——>GROUP BY——>HAVING——>ORDER BY——>LIMIT
选择——>来源——>条件——>分组——>条件——>顺序——>数量限制
SELECT COUNT(*) FROM students;COUNT(*):计算整个表格的总行数
COUNT(成绩):计算非空的所有成绩的行数
SELECT COUNT(DISTINCT 学号) FROM students;关键字DISTINCT:移除重复结果
注意:不会自动排除NULL空值
SELECT COUNT(DISTINCT 学号) FROM students WHERE 学号 IS NOT NULL;指定学号不为空值NULL,配合DISTINCT就可以筛选出所有非空学号的总数
二、创建
CREATE TABLE:创建表格
create table 名称 { 第一栏名称 数据类型, 第二栏名称 数据类型 }; create table clubs{ 社团编号 int PRIMARY KEY, 社团名称 varchar(15) };主键Primary Key:标识每一个资料,不可以为空null,不可以重复
三、删除
DROP TABLE:删除表格
DROP TABLE clubs;四、插入
INSERT INTO ...VALUS...:插入数据到表格
INSERT INTO clubs(第一列名称,第二列名称) VALUS (101,'篮球社'),(102,'歌唱团'),(103,NULL); INSERT INTO clubs(社团编号,社团名称) VALUS (101,'篮球社'),(102,'歌唱团'),(103,NULL);向clubs表插入三行数据,对应“社团编号”和“社团名称”列,103不知道是什么社团名称,所以补充空值NULL(注意:插入数据不可以缺失,用NULL补全)
五、更新
①UPDATE ... SET ...:更新表格数据
UPDATE clubs SET 社团名称 = '舞蹈社' WHERE 社团编号 = 103;将社团编号为103的数据,社团名称由‘NULL’更新为“舞蹈社”
②DELETE:删除某一行/多行数据
DELETE FROM clubs WHERE 社团编号 = 104;删除clubs表格中社团编号为104的所有数据行
六、跨表格查询
SELECT students.姓名,students.社团,clubs.社团名称 FROM students LEFT JOIN clubs ON students.社团 = clubs.社团编号 WHERE 班级 = '一年级';LEFT JOIN ... ON ...:左连接,结合表格并展示左侧表格的所有资料
ON后面是两个表格按照什么进行连接,比如这个就是students表格的‘社团’列和clubs表格的‘社团编号’列进行连接。
查询出所有一年级的同学名称、社团、社团名称,如下:
INNER JOIN... ON ...:内连接,如果只筛选能找到对应社团的名称,将NULL都隐藏起来,将LEFT JOIN换成INNER JOIN内连接,这样就只有成功对应到社团名称的可以查询出来
SELECT students.姓名,students.社团,clubs.社团名称 FROM students INNER JOIN clubs ON students.社团 = clubs.社团编号 WHERE 班级 = '一年级';注意:本文章为个人学习笔记,仅供参考。
本文章学习视频:【SQL 十四分钟速成班!没错不要怀疑,资料库语法比中午决定吃什么还要简单!】 https://www.bilibili.com/video/BV1bQxMehETa/?share_source=copy_web&vd_source=acd8c7efa8ef128730196ef3a561e1f0