当前位置: 技术文章>> mysql数据库实战之详解DQL语句详细用法

文章标题:mysql数据库实战之详解DQL语句详细用法
  • 文章分类: 后端
  • 26676 阅读

1.1、什么是DQL

DQL:数据查询语言,用于从数据库表中查询数据,并不会修改数据,只是一种显示数据的方式。由select语句构成。

1.2、记录查询格式

格式:select */字段列表 from 数据库表名 [where 条件表达式];

格式说明:

select */字段列表: 查询完后需要展示的字段

from 数据库表名: 指定要查询的数据库表

[where 条件表达式]: 查询满足条件的记录

二、记录查询

2.1、简单查询

查询表中的记录和列

格式:select * from 数据库表名;   #查询表中所有记录,显示所有列或select 字段名1,字段名2,...,字段名n from 数据库表名;   #查询表中所有记录,显示指定列

案例:

查询student表中的所有记录,显示所有列

#显示所有记录mysql> select * from student;+------+-----------+------------+------+| id   | sname     | birthday   | sex  |+------+-----------+------------+------+| 1    | 郭德纲 | 1973-01-18 | 男  || 2    | 林志颖 | 1974-10-18 | 男  || 3    | 柳岩    | 1980-11-08 | 女  |+------+-----------+------------+------+3 行于数据集 (0.01 秒)

查询student表中的所有记录,显示所有姓名、性别列

#显示所有记录,显示列为姓名、性别mysql> select sname,sex from student;+-----------+------+| sname     | sex  |+-----------+------+| 郭德纲 | 男  || 林志颖 | 男  || 柳岩    | 女  |+-----------+------+3 行于数据集 (0.01 秒)

2.2、别名查询

别名有二种:字段别名、表别名

作用:

字段别名查询出记录显示新的名字,并不影响表的结构。

表别名取了一个新的名字,可以代替表名使用。

字段别名

格式:select 字段名1 as 别名1,字段名2 as 别名2,...,字段名n as 别名n from 数据库表名;

案例:

查询student表中的sname和sex,以别名’姓名’和’性别’显示

#使用字段别名显示姓名、性别mysql> select sname as 姓名,sex as 性别 from student;+-----------+------+| 姓名        | 性别   |+-----------+------+| 郭德纲 | 男  || 林志颖 | 男  || 柳岩    | 女  |+-----------+------+3 行于数据集 (0.01 秒)

表别名

格式:select 字段名1 as 别名1,字段名2 as 别名2,...,字段名n as 别名n from 数据库表名 as 别名;

案例:

查询student表中的sname和sex,以别名’姓名’和’性别’显示,并为student表取了一个别名 s

#使用字段别名显示姓名、性别,表别名没有具体表现mysql> select sname as 姓名,sex as 性别 from student as s;+-----------+------+| 姓名        | 性别   |+-----------+------+| 郭德纲 | 男  || 林志颖 | 男  || 柳岩    | 女  |+-----------+------+3 行于数据集 (0.01 秒)

注意:

表别名一般用于多表查询,单表查询中没有具体体现。

2.3、清除重复记录查询

格式:select distinct 字段名 from 数据库表名;

案例:

去掉性别重复的记录

去掉性别和姓名同时重复的记录

#查看所有记录mysql> select * from student;+------+-----------+------------+------+| id   | sname     | birthday   | sex  |+------+-----------+------------+------+| 1    | 郭德纲 | 1973-01-18 | 男  || 2    | 林志颖 | 1974-10-18 | 男  || 3    | 柳岩    | 1980-11-08 | 女  |+------+-----------+------------+------+3 行于数据集 (0.01 秒)#查看sex不重复的记录mysql> select distinct sex from student;+------+| sex  |+------+| 男  || 女  |+------+2 行于数据集 (0.01 秒)#查看sex,sname都不重复的记录mysql> select distinct sex,sname from student;+------+-----------+| sex  | sname     |+------+-----------+| 男  | 郭德纲 || 男  | 林志颖 || 女  | 柳岩    |+------+-----------+3 行于数据集 (0.01 秒)

2.4、运算查询

字段与固定值运算

格式:select 字段名+固定值 from 数据库表名;

注意:

运算的字段必须是数值型

案例:

查询student表中年龄减10岁,并显示sname和age

mysql> select age-10 as age ,sname from student;+-----+--------+| age | sname  |+-----+--------+|  37 | 郭德纲 ||  36 | 林志颖 ||  30 | 柳岩   |+-----+--------+3 rows in set

字段与字段运算

格式:select 字段名+字段名 from 数据库表名;

注意:

运算的字段必须是数值型

案例:

查询student表中age与id的和,并显示出来age和id

mysql> select age+id,age,id from student;+--------+-----+----+| age+id | age | id |+--------+-----+----+|     48 |  47 |  1 ||     48 |  46 |  2 ||     43 |  40 |  3 |+--------+-----+----+3 rows in set

三、条件查询

3.1、条件查询前准备

新建学生信息表(students)

字段:学生ID(sid)、学生姓名(sname)、学生性别(sex)、学生年龄(age)、英语成绩(english)、数学成绩(math)、入学时间(entertime)、备注(remark)

create table students(    sid int,    sname varchar(20),    sex varchar(2),    age int,    english double(4,1),    math double(4,1),    entertime date,    remark text);

记录:

insert into students values(1,'张三','男',19,98.5,88,'2017-09-01','他来自四川'),(2,'李四','男',20,80,88,'2017-09-01','他来自重庆'),(3,'张红','女',19,86,80,'2017-09-01','他来自北京'),(4,'张八','男',18,80,85,'2017-09-01','他来自天津'),(5,'李三','男',19,60,88,'2017-09-01','他来自湖北'),(6,'王六','女',20,50,70,'2017-09-01','他来自湖南'),(7,'刘红','女',18,90,98,'2017-09-01','他来自甘肃');

推荐文章