关于表的一些常用操作(增删改查)

表的增删改查

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子句可以对指定列进行分组查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值