MYSQL——增删查改

MYSQL——增删查改

在进行增删查改的过程中我们首先创建了一个fuxi的数据库,在数据库中创建了一个名为student 的表;
create table student(
name varchar(20),
id int(11));

insert -----添加数据

语法结构:

insert into 表名 (字段名1,字段名2)values (值1,值2) ;

insert into student(name,id) valuse("小米","20200758");

或者
insert into 表名 values (值1,值2) ;

insert into student valuse("小米","20200758");

或者
insert into student set 字段名1=值1,字段名2=值2;

insert into student set id=20200755,name="小艾";

ps:
1:当你要为表中所有的字段添加的值时,字段名可以省略不写,值的顺序要与字段名的顺序一致,否则会报错;
2:当你只添加字段的某一部分的数据,那么其他为添加的字段则保持默认值

同时添加多行数据

insert into 表名 (字段名1,字段名2)values (值1,值2) ,(值1,值2) ,(值1,值2) ,(值1,值2) ,(值1,值2) ,(值1,值2) ;

insert into student(name,id) valuse("小米","20200758")("小米","20200758")("小米","20200758")("小米","20200758")("小米","20200758")("小米","20200758");

(才不是因为懒得打字才复制粘贴呢!!!)
同时添加多行数据注意别用第三种语法结构去添加,一般来说我们都是在SQL中使用图形化界面去快速添加多行数据,

delete -----删除数据

语法结构

删除部分数据: delete from 表名 where 条件语句;

delete from student where id = 20200755;

删除所有数据: delect from 表名;

delect from student;

或者

truncate table student;

PS:
1:DELETE 后面可以跟WHERE子句指定删除部分记录,TRUNCATE只能删除整个表的所有记录
2:使用TRUNCATE语句删除记录后,新添加的记录时,自动增长字段(如本文中student表中的 id 字段)会默认从1开始,而使用DELETE删除记录后,新添加记录时,自动增长字段会从删除时该字段的的最大值加1开始计算(即原来的id最大为5,则会从6开始计算)。所以如果是想彻底删除一个表的记录而且不会影响到重新添加记录,最好使用TRUNCATE来删除整个表的记录。
3:DELETE 和TRUNCATE 只是删除表中的数据,并没有删除表,删除表你可以输入drop table 表名;

update -----修改数据

语法结构updata 表名 set 被改字段名=被改值 where 条件语句;

 update student set name="小艾" where id = 2020;

修改了id为2020的name为小艾,当没有where条件查询时,则把表中id为2020的所有name数据改为小艾。

select -----查询数据

查询表中所有字段数据

语法结构: select * from 表名;

select * from student;

根据where条件语句来查询

语法结构: select * from 表名 where 条件语句;

select * from student where id>20200755;

查询student表中字段名id大于20200755的所有信息;

根据关键字 IN 、BETWEEN AND 、DISTINCT、空值查询、LIKE

IN关键字:用于判断某个字段的值是否在指定集合中,若在,则该字段所在的记录将会被查询出来.

语法结构: select 字段名1… from student where 字段名 IN [NOT] (值1,值2…)

(NOT 为不在这个集合内,其他关键字都可以同样使用下面不在赘述)

select * from student where id in(20200755,20200855);
BETWEEN AND: 用于判断某个字段的值是否在指定范围之内,若在,则该字段所在的记录会被查询出来,反之不会。(范围包括两个值本身)

语法结构: select 字段名1… from student where 字段名 [NOT] BETWEEN 值1 AND 值2;

select * from student where id BETWEEN 20200755 AND 20200855;
DISTINCT:很多表中某些字段的数据存在重复的值,可以使用DISTINCT关键字来过滤重复的值,只保留一个值

语法结构: SELECT DISTINCT 字段名 FROM 表名;

select distinct name from student;

去除name字段中重复的值。

空值查询 IS NULL:在数据表中有些值可能为空值(NULL),空值不同于0,也不同于空字符串,需要使用 IS NULL 来判断字段的值是否为空值。

语法结构: SELECT * | 字段名1,字段名2,…FROM 表名 WHERE 字段名 IS [ NOT ] NULL

select * from student where id is null;
模糊查询LIKE

(1)百分号(%)通配符

匹配任意长度的字符串,包括空字符串。例如,字符串“ c% ”匹配以字符 c 开始,任意长度的字符串,如“ ct ”,“ cut ”,“ current ”等;字符串“ c%g ”表示以字符 c 开始,以 g 结尾的字符串;字符串“ %y% ”表示包含字符“ y ”的字符串,无论“ y ”在字符串的什么位置。

举例1:查询student2表中name字段以字符“ s ”开头的人的id,name

SELECT id,name FROM student2  WHERE name LIKE "S%"; 

举例2:查询student2表中name字段以字符“ w ”开始,以字符“ g ”结尾的人的id,name。

SELECT id,name FROM student2 WHERE name LIKE 'w%g';

举例3:查询student2表中name字段不包含“ y ”的人的id,name。

SELECT id,name FROM student2 WHERE name NOT LIKE '%y%';

(2)下划线(_)通配符

下划线通配符只匹配单个字符,若要匹配多个字符,需要使用多个下划线通配符。例如,字符串“ cu_ ”匹配以字符串“ cu ”开始,长度为3的字符,如“ cut ”,“ cup ”;字符串“ c__l”匹配在“ c ”和“ l ”之间包含两个字符的字符串,如“ cool ”。需要注意的是,连续的“”之间不能有空格,例如“M _QL”只能匹配“My SQL”,不能匹配“MySQL”。

举例:查询在student2表中name字段值以“ wu ”开始,以“ ong ”结束,并且中间只有一个字符的记录。

SELECT * FROM student2 WHERE name LIKE 'wu_ong';

==PS:
1:在SELECT语句中使用(‘ * ’)通配符代替所有字段,如果你只要查部分字数据,你可以把 (‘ * ’)改成你要查询的字段

2:where 后面的条件语句所用到关系运算符有 >,<,=,<=,>=,!=,<>(大于,小于,等于,小于等于,大于等于,不等于,不等于);

3:若要查询的字段值本来就含有“ % ”或者“ _ ”,则要用“ \ ”进行转义,如要查询本身含有“ % ”的字符串,命令应改为 “ %%%”。==

根据逻辑运算符查询 AND 、 OR

当需要查询的条件语句为两个或者两个以上时,可以通过逻辑运算符来连接多个条件语句;

值得注意的时,AND 是有假必假,OR 是有真必真,当同时使用两个逻辑运算符时,AND的运算顺序比OR要高,所以会先执行AND两边的条件语句。

select * from student where id >= 20209877 and name like "%小%" or id is not NULL

根据聚合函数来查询

1)COUNT()函数:统计记录的条数

语法:SELECT COUNT(*) FROM 表名

举例:查询student2表中一共有多少条记录

SELECT COUNT(*) FROM student2;

(2)SUM()函数:求出表中某个字段所有值的总和

语法:SELECT SUM(字段名) FROM 表名;

举例:求出student2表中grade字段的总和

SELECT SUM(grade) FROM student2;

(3)AVG()函数:求出表中某个字段所有值的平均值

语法:SELECT AVG(字段名) FROM 表名;

举例:求出student2表中grade字段的平均值

SELECT AVG(grade) FROM student2;

(4)MAX()函数:求出表中某个字段所有值的最大值

语法:SELECT MAX(字段名) FROM 表名;

举例:求出student2表中所有人grade字段的最大值

SELECT MAX(grade) FROM student2;

(5)MIN()函数:求出表中某个字段所有值的最小值

语法:SELECT MIN(字段名) FROM 表名;

举例:求出student2表中所有人grade字段的最小值

SELECT MIN(grade) FROM student2;

对结果进行排序查询 ORDER BY

语法:SELECT 字段名1,字段名2,…

FROM 表名

ORDER BY 字段名1 [ ASC | DESC ],字段名2 [ ASC | DESC ]…

在该语法中指定的字段名是对查询结果进行排序的依据,ASC表示升序排列,DESC 表示降序排列,默认情况是升序排列。

举例1:查出student2表中的所有记录,并按照grade字段进行升序排序

SELECT * FROM student2

   ORDER BY grade;

分组查询

在对表中数据进行统计的时候,可以使用GROUP BY 按某个字段或者多个字段进行分组,字段中值相同的为一组,如男生分为一组,女生分为一组。

语法:SELECT 字段名1,字段名2,…

FROM 表名

GROUP BY 字段名1,字段名2,… [ HAVING 条件表达式 ];

(1)单独使用 GROUP BY 进行分组

单独使用GROUP BY 关键字,查询的是每个分组中的一条记录

举例:查询student2表中的数据,按照gender字段进行分组。

SELECT * FROM student2 GROUP BY gender;

注意:若在此2例中键入命令之后出现“#1055”错误,无法完成分组查询,是由于MySQL版本升级到了5.7,可自行百度“MySQL 1055错误”参考解决办法。

(2) GROUP BY 和聚合函数一起使用

GROUP BY 和聚合函数一起使用,可以统计出某个或者某些字段在一个分组中的最大值、最小值、平均值等。

举例:将student2表按照gender字段进行分组查询,计算出每组共有多少个人。

SELECT COUNT(*) ,gender FROM student2 GROUP BY gender;

(3) GROUP BY 和 HAVING 关键字一起使用

HAVING关键字和WHERE关键字的作用相同,区别在于HAVING 关键字可以跟聚合函数,而WHERE 关键字不能。通常HAVING 关键字都和GROUP BY一起使用,用于对分组后的结果进行过滤。

举例:将student2表按照gender字段进行分组查询,查询出grade字段值之和小于300的分组

SELECT sum(grade),gender FROM student2 GROUP BY gender HAVING SUM(grade) < 300;

使用 LIMIT 限制查询结果的数量

语法:SELECT 字段名2,字段名2,…

FROM 表名

LIMIT [ OFFSET ,] 记录数

在此语法中,LIMIT 后面可以跟两个参数,第一个参数“ OFFSET ”表示偏移量,如果偏移量为0,则从查询结果的第一条记录开始,偏移量为1则从查询结果中的第二条记录开始,以此类推。OFFSET为可选值,默认值为0,第二个参数“记录数”表示指定返回查询记录的条数。

举例1:查询student2表中的前四条记录。

SELECT * FROM student LIMIT 4;

举例2:查询student2表中grade字段从第五位到第八位的人(从高到低)

SELECT * FROM student2 ORDER BY grade DESC LIMIT 4,4;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值