[MySQL] 表的增删查改(CURD)

软件开发

专栏简介 :MySql数据库从入门到进阶.

java stream

题目来源:leetcode,牛客,剑指offer.

策略模式

创作目标:记录学习MySql学习历程

mingw

希望在提升自己的同时,帮助他人,,与大家一起共同进步,互相成长.

pyecharts

学历代表过去,能力代表现在,学习能力代表未来! 

mint


文章目录

1.CURD

接口测试

2.新增(create)

C语言深度解剖

2.1 单行数据+全列插入

绘制

2.2 多行数据+指定列插入

项目创建

3.查询(Retrieve)

JSON 基本使用

3.1 全列查询

云平台

3.2 指定列查询

温度芯片

3.3 查询字段为表达式

python自动化测试实战

3.4 别名

游戏

3.5 去重 distint

ES6面试题

3.6 排序 order by

麒麟

3.7 条件查询 where

视觉检测

3.8 分页查询 limit

ESP8266

4.修改(Updata)

CSDN能力认证

5.删除(Delete)

麦克风权限

总结

单表查询


1.CURD

  • 注释: SQL中使用 — + 描述 来表示注释.
  • CURD: 即 C 新增(Creae), U 修改(Updata), R 查询(Retrieve), D 删除(Delete).
  • 操作表时, 增删改操作相对较为单一, 查询操作相对复杂.

2.新增(create)

2.1 单行数据+全列插入

成员数量必须和定义表的列数以及顺序一致.

城市poi感兴趣点

语法:

yolov7

insert into 表名 values(成员1,成员2....);

Windows快捷键


2.2 多行数据+指定列插入

语法:

insert into 表名(指定列1,指定列2...) values(成员1,成员2...),(成员1,成员2..)..;

Tips: 使用datatime插入日期时,日期的格式为 yyyy-mm-dd hh:mm:ss ,另外 now()可以获取当前时间.


3.查询(Retrieve)

3.1 全列查询

通常情况下不建议使用 * 进行全列查询

  • 查询的列越多导出查询的数据量越大,可能使硬盘和带宽爆满.
  • 可能影响到索引的使用

语法: 

select * from 表名;

示例: 


3.2 指定列查询

语法:

select 指定列1,指定列2.. from 表名;

示例: 


3.3 查询字段为表达式

  • Tips:字段为表中定义的列名

1.表达式不包含字段

语法: 

select name,age,10 from Test;

示例: 


2.表达式包含一个字段

语法: 

select name,score+10 from Test;

示例: 


3.表达式包含多个字段

语法: 

select name,score+age+10 from Test;

示例: 


3.4 别名

若查询结果过长, 可给查询结果起一个别名更加直观.

语法: 

select 成员1+成员2+.. (as) 别名 from 表名;

 示例:


3.5 去重 distint

语法:

select distinct 列名 from Test;

 去重前:

 

去重后:


3.6 排序 order by

  • asc 升序 (默认)
  • desc 降序

语法: 

select * from 表 (where) order by 列名 (asc/desc);

1.没有order by 字句的查询, 返回的顺序是未定义的, 不要依赖该顺序.

2.null 数据排序视为比任何数据都小, 升序位于最上面, 降序位于最下面.

 


 3.使用表达式以及别名排序.

语法: 

select 表达式 (as) 别名 from Test order by 别名 desc;

将学生总成绩按从高到低排序. 


4.对多个字段进行排序, 排序优先级随书写顺序.

语法:

select 字段1,字段2.. from 表名 order by 字段1 asc/desc ,字段2 asc.desc...

查询同学个门成绩按 语文降序,数学升序,英语降序的顺序来显示.


3.7 条件查询 where

比较运算符:

运算符 说明
>,>=,<,<= 大于,大于等于,小于,小于等于
= 等于, null 不安全, eg: null==null结果是 null
<=> 等于, null 安全, eg: null==null结果是true(1)
!=,<> 不等于
between A and B

范围匹配, [A,B],

如果  A<=value<=B .返回true(1)

in(option,…) 如果是 option 中的任意一个,返回true(1)
is null 是null
is not null 不是null
like

模糊匹配,%表示任意多个(包含0个)任意字符

_表示任意一个字符.

逻辑运算符:

运算符 说明
and 相当于&,多个条件必须都为true, 结果才为true
or 相当于|,任意一个条件为true,结果为true
not 条件为true, 结果为false

Tips: 别名只是客户端访问服务器的一个临时表的列名,原表中并不存在别名

  • where 条件可以使用表达式, 但不能使用别名.
  • and 优先级高于 or, 同时使用时, 需用小括号{}包裹优先执行的部分.

1.基本查询

语法:

select 列名1,列名2..from 表名 where 限制条件;

查询英语成绩低于80分的同学

select name,english from Test where english<80;

查询语文成绩好于英语的学生

select name,chinese,english from Test where chinese>english;

查询总分在200以上的学生

select name,chinese+english+math from Test where chinese+english+math>200;


2.and与or

查询语文成绩大于80, 且英语成绩大于80的同学

select name,chinese,english from Test where chinese>80 and english>80;

观察 and 和 or 的优先级

select * from Test where chinese>80 or math>70 and english>70; 
select * from Test where (chinese>80 or math>70) and english>70;

 


3.范围查询

查询语文成绩在[80-90]的同学.

select name,chinese from Test where chinese between 80 and 90;


4.in

查询语文成绩是78或者89的同学.

select name,chinese from Test where chinese in(78,89);


5.模糊查询

% 匹配多个字符

select name from Test where name like "张%";

_ 匹配任意一个字符

select name from Test where name like "张_";


6.null的查询

查询数学成绩已知的同学的姓名

select name,math from Test where math is not null;

查询数学成绩未知的同学的姓名

select name,math from Test where math is null;


3.8 分页查询 limit

该操作日常生活中十分常见,例如:

语法: 

--从0开始筛选n个结果
select...from 表名 (where) (order by) limit n;
--从s开始筛选n个结果
select...from 表名 (where) (order by) limit s,n;
--从s开始筛选n个结果 建议使用该方法
select...from 表名 (where) (order by) limit n offset s;

按id分页, 每页三条记录, 分别显示第 1,2,3页.

select * from Test (where) order by id limit 3 offset 0;
select * from Test (where) order by id limit 3 offset 3;
select * from Test (where) order by id limit 3 offset 6;


4.修改(Updata)

语法: 

update 表名 set 列名1=值,列名2=值..where 限制条件;
  • Tips: 若不加限制条件会修改所在列的所有内容. 
  • 可搭配where,order by,limit 使用

将张三的语文成绩修改为80

update Test set math=80 where name="张三";

将李四的数学成绩变为70, 语文成绩变为90.

update Test set math=70,chinese=90 where name="李四";

为总成绩倒数前三的同学数学成绩加上30分.(升序排列,倒数前三在最前面)

update Test set math=math+30  order by math+chinese+english limit 3 offset 0;


5.删除(Delete)

语法: 

delete from 表名 where 限制条件; 
  • Tips: 若不加限制条件会修改所在列的所有内容. 
  • 可搭配where,order by,limit 使用

删除张三的信息

delete from Test where name="张三";

删除整张表

delete from 表名;

 drop 与 delete 的区别:

  • drop注重删除结构,delete注重删除数据.

由于字段也属于结构的一部分, 所以可以搭配alter方法来删除.例如:删除students表中的chinese字段.

alter table students drop chinese;

若要删除students表中的所有名叫"张三"的人, 应该使用delete.

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注