ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

【MySQL】全面学习数据库查询技巧:查询指令深度学习指南

【MySQL】全面学习数据库查询技巧:查询指令深度学习指南 *前言本节内容讲述基本查询 基本查询要分为两篇文章进行讲解。 本篇文章主要讲解的是where子句、order by、limit查询。 如果想要学习对应知识的可以观看哦。 ps:本篇内容友友们只要会创建表了就可以看起来了哦*目录Create单行插入多行插入duplicatereplace查询?表达式查询结构去重比较运算符逻辑运算符?where子句结果排序筛选分页结果综合使用* *Create------### 单行插入首先认识一下插入 ? ? ? ? insert into 表名称列属性 不添加默认为全列插入 values(数据这里我们创建一个学生表 mysql create table students( - id int unsigned primary key auto_increment, - sn int unsigned unique key, - name varchar(20) not null, - qq varchar(32) unique key - ); 然后我们插入 insert into students values(1,11, ‘张三’, ‘111111111’);//如果这时候students后面不加括号 就是默认的全列插入。 如果加上括号 那么就是指定插入。 ### 多行插入多行插入就是插入数据的时候添加逗号 多写几条数据。 insert into students values(2,12, ‘张三’, ‘1111111111’), (3, 22, ‘李四’,‘22222222’);### duplicate当我们插入的时候 如果发生了冲突 就不能进行插入。 并且如果加上duplicate key update就能在插入的时候对原数据进行更新### replace除了insert也可以进行替换替换就是如果没有对应的行就进行插入 如果存在就进行替换如果replace一个没有插入过的数据就是一行被影响 但是如果插入一个插入过的就是修改 并且是显示两行被影响查询–查询中我们使用最多的就是select语句 下面我们创建一个表 CREATE TABLE exam_result ( id int unsigned NOT NULL AUTO_INCREMENT, name varchar(20) NOT NULL COMMENT ‘同学姓名’, chinese float DEFAULT ‘0’ COMMENT ‘语文成绩’, math float DEFAULT ‘0’ COMMENT ‘数学成绩’, english float DEFAULT ‘0’ COMMENT ‘英语成绩’, PRIMARY KEY (id) )然后向其中插入一些数据后得到下面我们讲一下如何查询 首先最基本的查询就是 select 列名可以是 代表全部查询;也可以是多列 中间用逗号隔开) from 表名这样就可以查询到上面的图中的信息。### 表达式查询select 可以查询表达式的值所以 我们就可以对表结构里面的列进行表达式运算 进而求值 select name, math chinese from exam_result;也可以重命名 select name, math chinese as total from exam_result;### 结构去重我们查询的结果可以去重 使用distinct select distinct 列名 from 表名;### 比较运算符在mysql中进行条件筛选的时候可能会用到一些运算符 比如下面的比较运算符以及后面的逻辑运算符。 这些运算符有的和我们以前的语言语法一样有的不一样, , , 大于大于等于小于小于等于等于NULL 不安全例如 NULL NULL 的结果是 NULL等于NULL 安全例如 NULL NULL 的结果是 TRUE(1)!, 不等于BETWEEN a0 AND a1范围匹配[a0, a1]如果 a0 value a1返回 TRUE(1)IN (option, …)如果是 option 中的任意一个返回 TRUE(1)IS NULL是 NULLIS NOT NULL不是 NULLLIKE模糊匹配。% 表示任意多个包括 0 个任意字符_ 表示任意一个字符### 逻辑运算符AND多个条件必须都为 TRUE(1)结果才是 TRUE(1)OR任意一个条件为 TRUE(1), 结果为 TRUE(1)NOT条件为 TRUE(1)结果为 FALSE(0)### where子句where子句能够按条件对数据进行行筛选 select * from exam_result where english 60;下面来几个案例1、查询语文成绩在30 ~ 50分的学生 select * from exam_result where chinese between 30 and 50; 2、数学成绩是58或者59或者98或者99的同学的以及数学成绩 select name, math from exam_result where math 58 or math 59 or math 98 or math 99; 也可以使用in select name, math from exam_result where math in (58, 59, 98, 99); 3、姓孙的同学以及孙某同学 姓孙的同学可能是孙某 孙某某。 而孙某只能是孙某 名为单字。 所以使用的通配符不一样 %可以模糊匹配任意多个字。 而_只能模糊匹配一个字 select name from exam_result where name like ‘孙%’; select name from exam_result where name like ‘孙_’; 4、总分在150以下的同学 select name, chinese math english as total from exam_result where chinese math english 150; //注意 where这里不能使用total 因为条件筛选执行顺序是在select 之前。 所以在where的时候还看不到as total。 5、名字不为空的人 select * from exam_result where name is not null; 结果排序----我们可以对查询后的结果进行排序 select name, math from exam_result order by math desc; //desc为降序排序, asc为升序ps:这里要知道的是 null值要比任何值都要小。下面为示例1、查询同学各门成绩 依次按照数学降序英语升序 语文升序的方式显示当数学相同看英语的大小。 当英语相同的时候再看语文的大小 select name, math, english, chinese from exam_result order by math desc, english desc, chinese asc; 2、查询同学的总分 升序排序 select name, math english chinese as total from exam_result order by total; 这里的问题是为什么order by又可以使用别名了呢 首先对于我们来说 要对一个表进行排序 一定要先有数据。但是筛选一定是先让数据筛出再有数据。 **对于一套select语句来说。 一定是from第一 where第二 select第三 order by第四。**筛选分页结果------我们的数据库数据量太大 所以有时候我们就可以使用一下分页 先看几行 再看几行。limit 后面跟数字就是从第一行往下数几行打印。 然后如果是limit数字 数字就是从第一个数字开始往下数几行打印。select * from exam_result limit 1; select * from exam_result limit 3; select * from exam_result limit 2,3;也可以使用limit 数字 offset 页数。 其中 limit是每一页的行数 offset是默认从第几行开始 select * from exam_result limit 2 offset 0; select * from exam_result limit 2 offset 2; select * from exam_result limit 2 offset 3;综合使用----现在示例一个综合使用的例子作为文章的结尾查询大于150的人并按照总分的降序进行排序 然后拿出第一个人的信息 select name, english math chinese total from exam_result as total where english math chinese 150 order by total desc limit 1;——————以上就是本节全部内容哦 如果对友友们有帮助的话可以关注博主 方便学习更多知识哦
返回列表