MySQL 表的增删查改

目录

        1.单行数据 + 全列插入

        2.多行数据 + 指定列插入

        1.全列查询

        2.指定列查询

        3.表达式查询

        4.别名

        5.去重查询

        6.查询结果排序

        7.条件查询

                基本查询

                and 与 or

                范围查询

                模糊查询

                null的查询

        8.分页查询


实际开发中的CRUD工程师:

CRUD 即增加 (Create) 、查询 (Retrieve) 、更新 (Update) 、删除 (Delete) 四个单词的首字母缩写

我们创建了一个学生表,带有三个属性: id , 姓名 , 性别

增加表的内容的操作我们通过 insert 

1.单行数据 + 全列插入

-- 插入两条记录, value_list 数量必须和定义表的列的数量及顺序一致
INSERT INTO  student  VALUES ( 100 , 10000 , ' 唐三藏 ' , NULL );
INSERT INTO  student  VALUES ( 101 , 10001 , ' 孙悟空 ' , '11111' );

2.多行数据 + 指定列插入

-- 插入两条记录, value_list 数量必须和指定列数量及顺序一致
INSERT INTO student (id, sn, name)   VALUES
( 102 , 20001 , ' 曹孟德 ' ),
( 103 , 20002 , ' 孙仲谋 ' );

在 student 后面 指定要添加的列

在 values 后面 可以添加多行数据,用逗号隔开

-- 删除数学成绩为 null 的同学的信息
delete from exam_scores where math is null;
-- 删除整张表
delete from exam_scores;

把数学成绩为null的数据删除:

1.全列查询

相当于查询全部数据

学习阶段数据库各种表的容量不大,可以用这个

实际开发中,数据量可以高达上亿个数量级,要慎用:

1.一下子要传输的数据量太大,会占满硬盘的读取,影响其他软件的运行

2.会影响到索引的使用

2.指定列查询

-- 指定列的顺序不需要按定义表的顺序来
SELECT id, name, english FROM exam_result;

总的学生表如第一个表

在指定列查询时 我先填了gender再填name,此时下图的显示就是gender在前,name在后

3.表达式查询

先创建一张考试成绩表,并插入数据

decimal数据括号前一位表示长度,后一位表示小数点后的位数

表达式查询,是指在查询过程中,还可以做一些简单的运算( 这个是进行列和列之间的运算)

比如可以在查询的时候,让查询的math成绩都在原来的基础上 加10分:

需要注意,查询操作不会改变硬盘上原来的数据,因此再查一遍还是原来的成绩

也可以查询总成绩,让math ,chinese,english相加即可得到总成绩:

4.别名

查询的时候指定别名,以便更容易理解含义

列名 as 别名

如上图的总成绩,chinese+math+english的列名太冗长了 也不好看,改为下图以总分为别名

5.去重查询

select distinct 列名 from 表名;

针对指定列进行去重,把重复的行只保留一个

如果指定多个列,则要求这些列的值都相同,才视为重复

6.查询结果排序

升序:  select math from exam_scores order by math asc;     asc 可省略

降序:  select math from exam_scores order by math desc;

对多个列进行排序,以第一个列为主要排序,后面的为次要排序,在主要排序中行的值相同的情况下,进行次要排序

 select 想查询的列名 from 表名 order by english desc,chinese desc;    以逗号分隔即可

7.条件查询

select 列名, ... from 表名 where 条件;

在查询的时候指定筛选条件,符合条件的数据留下,不符合的pass

需要先描述条件,MySQL通过 where + 条件 来表示条件

比较运算符:

逻辑运算符:

  • 基本查询

如图,查询语文成绩少于80分的同学

查询 两列比较的结果

如图,查询英语成绩 好于 语文成绩的同学:

要注意where 之后不能使用别名

如图,假如我们要查询总分  直接 where total < 275 会报错

  • and 与 or

-- 查询语文成绩大于 80 分,且英语成绩大于 80 分的同学
SELECT * FROM exam_result WHERE chinese > 80 and english > 80
;
-- 查询语文成绩大于 80 分,或英语成绩大于 80 分的同学
SELECT * FROM exam_result WHERE chinese > 80 or english > 80 ;
-- and 的优先级高于 or , 不建议记这些 , 无脑加括号就行
SELECT * FROM exam_result WHERE (chinese > 80 or math> 70 ) and english > 70 ;

  • 范围查询

between....and.....        约定一个前闭后闭的区间

in                查询是否有符合括号内数据的值

  • 模糊查询

-- % 匹配任意多个(包括 0 个)字符
SELECT name FROM exam_result WHERE name LIKE '% %' ; -- 匹配名字包含航的
                                                                                            ' %' ; -- 匹配名字 航 开头的
                                                                                            '% ' ; -- 匹配名字 航 结尾的
-- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE ' _' ; -- 匹配到孙权

  • null的查询

查询值为null 的行

 select * from exam_scores where math is null;

select * from exam_scores where math <=> null;

判断值是否为null 不能直接用等号

8.分页查询

分页查询  

-- 起始下标为 0
-- 0 开始,筛选 n 条结果
SELECT ... FROM table_name [ WHERE ...] [ ORDER BY ...] LIMIT n;
-- s 开始,筛选 n 条结果                      关键字为offset
SELECT ... FROM table_name [ WHERE ...] [ ORDER BY ...] LIMIT n OFFSET s;

查询前三条结果:

从下标为5的行 开始查询,查询3条结果

小测试:

查询总分前三名的同学:

1.计算每个同学的总成绩(表达式)

2.对总成绩进行降序排序   (order by)

3.查询前三名结果   (limit)

修改数据操作,通过关键字  update 

-- 将小强同学的数学成绩变更为 70  分,语文成绩变更为 70
UPDATE exam_result SET math = 60 , chinese = 70 WHERE name = ' 小强 ' ;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值