开发公司[MySQL] 表的增删查改(CURD)

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

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

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

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

开发公司学历代表过去,开发公司能力代表现在,开发公司学习能力代表未来! 


文章目录


1.CURD

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

2.新增(create)

2.1 单行数据+全列插入

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

语法:

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


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 的优先级

  1. select * from Test where chinese>80 or math>70 and english>70;
  2. 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

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

语法: 

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

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

  1. select * from Test (where) order by id limit 3 offset 0;
  2. select * from Test (where) order by id limit 3 offset 3;
  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.

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发