上篇已经讲过数据库与表相关的一些相关的操作了,如果你对这部分依旧不太熟悉建议先去看看
传送门:【MySQL】逻辑库与数据表相关操作.
这篇就来说一下数据库中表的基本查询,看见是基本查询,就知道肯定有高级查询,这个我们下一篇来讲。我们把数据库的查询分为两部分来讲,它的重要性就不言而喻了,很多数据库都是多查询,少修改的,查询也是使用数据库的一项基本技能,所以大家要多多练习,接下来正文开始。
大家也许会觉得很奇怪,你标题不是写的数据库查询吗?为什么第一部分是建表呢?
因为我们查询就是对于数据库中的表进行查询的,没有表我们怎么进行查询呢?所以我们第一部分是建表方便后面示例,这样大家理解起来就方便了,正好我们也可以复习一下上一篇学到的知识
建表过程:
create table t_student(
id INT PRIMARY KEY NOT NULL,
name VARCHAR(4) NOT NULL,
age INT NOT NULL,
sex CHAR(1) NOT NULL,
class VARCHAR(10) ,
birthplace varchar(10)
);
INSERT INTO t_student VALUES('88201','张三',18,'男','软件211','浙江杭州');
INSERT INTO t_student VALUES('88202','李四',19,'男','软件212','河南郑州');
INSERT INTO t_student VALUES('88203','小红',18,'女','计算机211','北京');
INSERT INTO t_student VALUES('88204','王五',16,'男','软件214','浙江杭州');
INSERT INTO t_student VALUES('88205','小蓝',17,'女','计算机212','江苏常州');
INSERT INTO t_student VALUES('88206','小王',20,'男','软件211','北京');
INSERT INTO t_student VALUES('88207','张四',18,'男','计算机211','江苏常州');
表已经建好了,接下来我们正式开始学习数据库的基本查询
普通查询就是查询出表中有哪些信息,格式为:
SELECT *FROM 表名;
示例:
SELECT * FROM t_student;
SELECT name,class,birthplace FROM t_student;
SELECT name,age+10 FROM t_student;
输出:
但是这样查询出来的信息,看起来可能不太舒服,那么我们可以重新弄命名,如下:
SELECT name,age+10 AS new_age FROM t_student;
输出:
如果我们查询出来的信息里面有重复的数据,那我们可以在SELECT
后面加上DISTINCT
这个关键字,可以达到去重效果,大家可以自己试试效果。
但是请记住这是信息查询并不会改变原始表里面的信息
如果你需要查询特定的几条连续数据,我们可以对数据进行分页,这里用到关键字LIMIT
,具体格式为
SELECT 字段名1,字段名2,… FROM 表名 LIMIT 分页起始页,每页显示条数;
这里要注意默认第一条数据的起始页为0
示例:
SELECT * FROM t_student LIMIT 2,2;
输出:
如果分页起始页被省略了,那么默认为0,即:从第一条数据开始
我们在进行数据库查询的时候往往是需要查出符合要求的一些数据,而不是所有数据,在这个时候我们就得用到选择查询里面的WHERE
关键字了,格式如下:
SELECT 字段名1,字段名2,… FROM 表名 WHERE 条件表达式
示例:
查询学生表里面年龄大于18岁的人有哪些?
SELECT name,age FROM t_student WHERE age>18;
输出:
为了满足多种查询场所,往往我们在查询时候的条件表达式不止一个,表达式之间的关系也是多变的。在条件查询时常用到的关键字还有:
IN
关键字:用于判断某个子弹的值是是否在指定集合中。
AND
关键字:在多条件查询时满足所有条件的数据
OR
关键字:满足任意一个条件的数据
NOT
关键字:满足这个条件取反的数据
BETWEEN AND
关键字:查询区间值,判断某个字段值是否在指定的范围内。
DISTINCT
:查询会过滤表中重复的数据
LIKE
关键字:模糊查询,与%和_联用
- 百分号(%)通配符:匹配任意长度的字符串,包括空字符,如:“%c”匹配以字符C开头的。“w%g”表示以w开头g结尾的字符串“可,”%C%“表示出现c的字符串。
- 下划线( _ )通配符:只匹配单个 字符,需要匹配多个需要使用多个下划线通配符。
- 加入字符串中出现了_或%则用\进行转义。如“_“和”%”。
示例:查询出来自软件211班级且出生地不在北京的成年人
SELECT id,name,age,birthplace
FROM t_student
WHERE age>=18 AND class="软件211" AND NOT birthplace="北京";
我们在查询时候往往需要查出来的数据,是有一定顺序的,这样我们观察起来更加方便,这时候我们就需要使用到关键字 ORDER BY
了,格式如下:
SELECT 字段名1,字段名2,… FROM 表名 ORDER BY 排序依据字段 ASC|DESC;
注:
ASC
:顺序,正序;数值 :递增,字母:自然顺序(a-z),可省略
DESC
:倒序 ,反序 ;数值:递减, 字母:自然反序,不可省略
示例:
SELECT * FROM t_student ORDER BY age;
学习完了基本查询,是不是大家就开始迷茫,他们的书写顺序还有执行顺序了啊,首先这个肯定不是按顺序执行的,正解如下:
首先在SQL语句中空格与换行对语法没有破坏,所以在书写的时候如果过长我们可以把它们分行书写,看起来也比较舒服,可读性高。
书写顺序是:
SELECT id,name,age,birthplace
FROM t_student
WHERE age>=18 AND class="软件211" AND NOT birthplace="北京"
ORDER BY age
LIMIT 2;
执行顺序为:
FROM->WHERE->SELECT->ORDER BY->LIMIT
这些仅仅是数据库的基本查询,下一篇我们来总结高级查询,想要熟练掌握这些东西还是得多多动手操作,不要以为自己懂了就不动了。
欢迎关注本专栏,持续更新…