表的增删改查
CURD: Create,Retrieve,Update,Delete
Create
语法:
INSERT [INTO] table_name
[(column [,column]...)]
VALUE (value_list) [,(value_list)]...
value_list:value,[,value]...
案例:
创建一张学生表

单行数据+全列插入
插入两条记录,value_list数量必须和定义表的列的数量及顺序一致

多行数据+指定列插入

插入否则更新
由于主键或者唯一键对应的值已经存在而导致插入失败
主键冲突:

唯一键冲突

可以选择性的进行同步更新操作语法:
INSERT ...ON DUPLICATE KEY UPDATE
column=value[,column=value]...

替换
主键或者唯一键没有冲突,则直接插入
主键或者唯一键有冲突,则删除后再插入

Retrieve(取回)
语法:
SELECT
[DISTINCT] {*| {column [,column]...}
[FROM table_name]
[WHERE...]
[ORDER BY column [ASC|DESC],...]
LIMIT...
案例:
创建表结构

插入测试数据

SELECT列
全列查询
通常情况下不建议使用*进行全列查询
1.查询的列越多,意味着需要传输的数据量越大
2.可能会影响到索引的使用

指定列查询
指定列的顺序不需要按照定义表的顺序来

查询字段为表达式

表达式包含一个字段

表达式包含多个字段

为查询结果指定别名
语法:
SELECT column [AS] alias_name [...] FROM table_name;

结果去重

可以看到98重复了
去重

WHERE条件
比较运算符

逻辑运算符

英语不及格的同学及其他们的英语成绩<60

语文成绩在【80,90】分的同学及他们的语文成绩
使用and进行条件连接


数学成绩是58或者59或者98或者99分的同学及他们的成绩
使用or进行条件连接

使用in条件

姓孙的 同学
%:匹配任意多个(包括0个)任意字符

匹配严格的一个任意字符

语文成绩好于英语成绩的同学
where条件中比较运算符两侧都是字段

总分在200分以下的同学

语文成绩>80并且不姓孙的同学

孙某同学,否则要求总成绩>200并且 语文成绩<数学成绩 并且 英语成绩>80

结果排序
语法:
ASC为升序
DESC为降序
默认为ASC
注意:没有ORDER BY子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
案例:
查询同学数学成绩,按数学成绩升序显示

注意:
NULL视为比任何值都小,升序出现在最上面,降序出现在最下面
查询同学们各门成绩,一次按照数学降序,英语升序,语文升序的方式显示

查询同学及总分,由高到低

order by子句中可以使用列别名

查询姓孙的同学或者姓曹的同学的数学成绩,结果按数学成绩由高到低显示

筛选分页结果
语法;
起始下标为0
从0开始,筛选n条结果
SELECT ... FROM table_name[WHERE...][ORDER BY...]LIMIT n;
从s开始,筛选n条结果
SELECT... FROM table_name[WHERE...][ORDER BY...]LIMIT s,n;
从s开始,筛选n条结果,比第二种用法更明确,建议使用
SELECT...FROM table_name[WHERE...][ORDER BY...]LIMIT n OFFSET n;
注意;
对未知表进行查询时,最好加上一条LIMIT 1,避免因为表中数据过大,查询全表数据导致数据库卡死,按id分页,每页3条记录,分别显示第1、2.、3页

第2页


update
语法:
UPDATE table_name set column =expr[,column=expr...]
[WHERE...][ORDER BY...][LIMIT...]
对查询到的结果进行列值更新
案例:
将孙悟空同学的数学成绩变更为80分
更新值为为具体值
查看原数据

数据更新

查看更新后的数据

将曹孟德同学的数学成绩变更为60分,语文成绩变更为70分

数据更新

查看更新后数据

将总成绩倒数前三的3为同学的数学成绩加上30分

数据更新,不支持shuxue+=30这种语法

查看更新后数据

将所有同学的语文成绩更新为原来的2倍

delete
删除数据
语法:
DELETE FROM table_name [WHERE...][ORDER BY...][LIMIT...]
删除孙悟空学的考试成绩
查看原数据

删除数据

查看删除结果

删除整张表数据(慎用)
准备测试表

插入测试数据

查看测试数据

删除整表数据

查看删除结果

截断表
语法:
TRUNCATE [TABLE] table_name
注意:这个操作慎用
1.只能对整表操作,不能像DELETE一样针对部分数据操作
2.实际上MySQL不对数据操作,所以比DELETE更快
3.会重置AUTO_INCREMENT项
准备测试表

插入测试数据

截断整表数据,注意影响行数是0,所以实际上没有对数据真正操作

插入查询结果
语法:
insert into table_name[(column[,column...])]select...
案例:
删除表中的重复记录,重复的数据只能有一份

插入测试数据

思路:
创建一张空表no_duplicate_table,结构和duplicate_table一样

将duplicate_table的去重数据插入到no_dupicate_table

通过重命名表,实现原子的去重操作

查看最终结果

聚合函数

案例:
统计班级共有多少同学

使用表达式做统计

group by子句的使用
在select中使用group by子句可以对指定列进行分组查询
本文详细介绍了SQL的基本操作,包括数据的创建、读取、更新和删除(CRUD)。涵盖了INSERT、SELECT、UPDATE、DELETE等核心语句的使用方法,以及聚合函数、GROUP BY子句的应用,适合初学者快速掌握SQL的基本技能。
775

被折叠的 条评论
为什么被折叠?



