mysql——关于表的增删改查(CRUD)

目录

比较运算符和逻辑运算符图

一、增加(Create)

        1、全列插入

        2、指定列插入

二、查询(Retrieve)

        1、全列查询

        2、指定列查询

        3、别名(as)

        4、表达式查询

        5、去重(distinct)

        6、排序(order by)

        7、条件查询(where)

     (1)基本查询

     (2)AND和OR

     (3)范围查询(between...and...)

     (4)  模糊查询like

     (5) null和is null查询

        8、分页查询(limit)

三、更新(update)

四、删除(delete)


比较运算符和逻辑运算符图

        在学习表的增删改查的前提,我们必须要对比较运算符和逻辑运算符有一个清晰的了解,因为在查询中是必不可少的。

        比较运算符:

运算符解释
>大于
<小于
>=大于等于
<=小于等于
=等于,但对于NULL来说不安全(NULL==NULL结果为NULL)
<=>等于,对于NULL来说是安全的(NULL==NULL结果是true)
!=、<>不等于

BETWEEN a AND b

范围匹配,如果范围是[a,b],结果为TRUE(1)
IN(A,B...)如果是A、B任意一个,就返回TRUE(1)
IS NULL是NULL
IS NOT NULL不是NULL
LIKE模糊匹配。%表示任意多个(包括0个)任意字符;_表示任意一个字符

        逻辑运算符:

运算符解释
AND逻辑与,包含所有条件,则为TRUE(1),否则为FALSE(0)
OR逻辑或,包含任意一个条件,则为TRUE(1),否则为FALSE(0)
NOT逻辑非,如果包含条件为TRUE(1),则为FALSE(0),反之,则为true(1)
XOR逻辑异或(不常用),如果包含所有条件或者一个条件都不包含,则为false(0),否则就为TRUE(1)

        案例用表: 表结构如下;

 create table student(
 id int comment '序号',
 sn int comment '学号',
 name varchar(5) comment '姓名',
 qq_email varchar(50) comment 'qq邮箱',
 birthday varchar(4) comment '生日'
 )


 

        表2:成绩表

 成绩表 
 create table ExamTable(
 id int ,
 sn int,
 name varchar(10),
 Chinese int,
 Math int,
 EngLish int
 )

 insert into ExamTable values 
 (01,9,'weq',null,null,null),
 (01,1,'石昊',60,79,90),
 (02,2,'云曦',90,99,89);
 (03,3,'火灵儿',54,87,45),
 (04,4,'石毅',43,58,90);
 (05,5,'长弓衍',20,32,null),
 (06,6,'帝冲',null,78,32),
 (07,7,'月婵',87,43,23),
 (08,8,'清猗',89,90,99);

 

        

一、增加(Create)

        固定语法:

        

INSERT [INTO] TABLE_NAME[(column1[,column2],...)] VALUES [(VALUES1[,VALUES2],...)]

        注:其中中括号[ ]里面是指定列插入写法。

        1、全列插入

        全列也就是不选中列,把表中的列全都添加内容,语法如下;

INSERT INTO TABLE_NAME VALUES(VALUES1,VALUES2...)

        例如,给学生表添加新内容,序号为1,序号为01,名字为牛一,qq邮箱为321@qq.com,生日为7月6号(0716)。

        

 insert into student values(1,01,'牛一','321@qq.com','0706')

        2、指定列插入

INSERT [INTO] TABLE_NAME[(column1[,column2],...)] VALUES [(VALUES1[,VALUES2],...)]

        给学生表添加新信息,序号为2,名字为小二,其他不写。

insert into student(id,name) values(02,'小二')

         

        我们发现,我们对于指定列插入,如果有些地方不写信息的话,那么就会用空值(NULL)来代替,这是我们要注意的一点。

二、查询(Retrieve)

        1、全列查询

         语法如下(也是我们最常用的一个查询):

 select * from student

        2、指定列查询

          语法如下:

 select column1,column2... from student

        例如查看表中的序号,学号和名字:

select id,sn,name from student

        效果如下 :

        3、别名(as)

        别名的用法只需要在需要修改的名字后面加别名就行,as也可以不加,例如:我需要查看表中的id、sn、name,且别名分别为序号、学号和名字。

        

select id as '序号',sn as '学号',name '名字' from student

        结果如下:

        我们发现原本的id、sn和name列全都被改成别名了,这就是别名的用法

        4、表达式查询

        表达式查询类似于用列加减法这些,例如,我想查成绩表全部同学的总成绩。

        

select id,sn,name,Chinese+Math+English '总分' from ExamTable;

        

        5、去重(distinct)

        我们在表达式查询看到总分有俩个一样的,我们可以通过distinct去重

        

select distinct  Chinese+Math+English '总分' from ExamTable;

        结果如下(注意:去重需要完全相同

         

        6、排序(order by)

        order by的用法只需要在order by后面加列名就行,例如把数学(Math)成绩按低到高排序一下。

        

select id,sn,name,Chinese,Math,English  from ExamTable order by Math asc; 

        结果如下:

        注意:跟在order by后面的列必须要在select查找范围之内,其次,order by列名后面默认是ASC(升序),而降序需要添加DESC,这个降序DESC和查看表结构的词相同,但意思不同。

        

        7、条件查询(where)

     (1)基本查询

        基本查询主要是用到了比较运算符和逻辑运算符,这个是我们十分常见的查询。

        我们举几个例子,1、查找语文成绩及格的人

                                     2、查找总分俩百以上的人

        1、

select id,sn,name,Chinese from ExamTable where Chinese>60;

        查询结果如下:

        

        2、

select id,sn,name,Chinese+Math+English '总分' from ExamTable where Chinese+Math+English>200;

         结果如下:

     (2)AND和OR

        这个用法也是十分容易的,AND和OR就是一个与和或的概念,比如:我们查找俩个内容,第一个内容是查找语文和数学高于六十分的同学,第二个内容就是查找语文或者数学低于六十分的人。

        1、

select id,sn,name,Chinese,Math from ExamTable where Chinese>60 and Math>60;

         

        2、

select id,sn,name,Chinese,Math from ExamTable where Chinese<60 or Math<60;

         

     (3)范围查询(between...and...)

        这个范围查询的用法也可以用and来替代,俩者可以达成一样的效果,例如查找语文分数在40到60之间的人。

        1、

select id,sn,name,Chinese from ExamTable where Chinese between 40 and 60;

         2、

select id,sn,name,Chinese from ExamTable where Chinese >40 and Chinese<=60;

        结果如下:

        注:betwee...and...的用法and前面和后面的值是一个闭区间。

     (4)  模糊查询like

        模糊查询主要分为俩大点,一个是%模糊查询,一个是_模糊查询,前者是代表前面或者后面缺失的所有内容,而后者只是代表一个字的内容。例如我们需要查找火灵儿这位同学的英语成绩,但我们只知道她的姓,我们可以通过模糊查询来查找。

        

select id,sn,name,Chinese from ExamTable where name Like '火%';

        结果如下:

        但如果我们用_查询火灵儿。

         我们发现我们是查找不出的,因为_只能代表一个字,如果是查找姓石的话能找到石昊和石毅。

        

select id,sn,name,Chinese from ExamTable where name Like '石_';

     (5) null和is null查询

        这个查找相对于前面常用度会低点,但能判断里面的值是否为空,比如我们查找English为空的同学有谁。

        

select id,sn,name,English from ExamTable where English is null;

         

        我们发现能查找出俩位同学,这就是null的用法

        8、分页查询(limit)

        分页查询的语法一共有三种:

        

-- 查找从0行开始到第n行的结果
select [(column1,[column2...]) from table_name [where...] [order by...] limit n;
-- 查找从n行开始到第s行的结果
select [(column1,[column2...]) from table_name [where...] [order by...] limit n,s;
-- 查找从n行开始到第s行的结果(更推荐使用)
select [(column1,[column2...]) from table_name [where...] [order by...] limit s offset n;

        我们三种方法都用一次就很熟悉了。

        1、查找ExamTable表通过id排序从第1行到第5行的同学所有信息。

        

seselect * from ExamTable order by id limit 5;

        查找如下:

        2、查找ExamTable表语文成绩前五名同学的全部信息。

        

select * from ExamTable order by Chinese desc limit 1,5;

         查找如下:

        3、查找ExamTable表总分在第二到第五的同学序号,学号,姓名和总分。

        

select id,sn,name,Chinese+Math+English final from ExamTable
 order by final  desc
 limit 5 offset 1

        结果如下:

        

三、更新(update)

        基本语法:

        

UPDATE TABLE_NAME SET COLUMN1=...[,COLUMN2=...,[COLUMN3=...]]
[WHERE...][ORDER BY...][LIMIT...]

        我们只需要做三个案例就很明确可以使用更新这个了。

        1、将‘石昊的语文成绩修改为80分’。

        

update ExamTable set Chinese=80 where name='石昊'

        修改前:                                                  修改后

        我们发现,进行修改操作把石昊的语文分数已经成功从60分修改到80分。

        注意:由于update的操作是比较危险的,所以在图示化工具的时候可能会出现更新失败的问题,如果更新失败请把下面语句加上去:

        SET SQL_SAFE_UPDATES = 0;

        如果还是想安全一点就设为1就行。

        2、将语文成绩前三的同学成绩都加三十。

       

update ExamTable set Chinese=Chinese+30 order by Chinese desc limit 3;

        修改前:                                                               修改后:

        

        3、将所有同学的语文成绩都加10分。

        

select *,Chinese+Math+English final from ExamTable

        修改前:                                                修改后:

四、删除(delete)

        删除操作基本语法:

        

DELETE FROM TABLE_NAME [WHERE...][ORDER BY...][LIMIT...]

        我们主要写俩个内容就差不多能把这个删除完全掌握,一个是删列的,一个是删表的。

        1、将石昊的成绩删除

        

delete from ExamTable where name='石昊'

        删除前:                                        删除后

         

        2、将Exan_Table表删除

        

delete from ExamTable;

                删除前:                                        删除后

                      

        注意:删除表和更新表的操作都是一个十分危险的操作,而这个操作尽量避免使用,以防出现有关于数据的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值