MySQL的DQL基础查询语言
每一个数据库都包含表,表中包含列,列中包含一个个数据元素,在访问时,要先打开数据库,然后通过在库中查询表中的元素位置,DQL语言就是用于查询表中元素而生的,在数据库中来对数据进行查找。
查询数据库首先要先打开数据库,通过下述语句打开数据库
USE 数据库名;
查询表的结构:
desc 表名;
打开数据库后就可以对数据库中的内容进行查询了,下面我们将介绍一种用于MySQL的查询语言DQL语言。 DQL即为查询语言,是基础查询语言。
一、DQL语言的特点:
1、查询的可以是:表中的字段、常量值、表达式、函数
2、查询的结构是一个虚拟的表格
二、DQL语言的语法:
select 查询列表 from 表名;
三、常用的查询语句:
1、查询表中的单个字段
select 列名 from 表名;
2、查询多个字段
select 列名1,列名2 , ... ,列名n from 表名;
3、查询所有字段
select * from 表名;
4、查询数值
默认返回该数值
select 100;
5、查询字符型和日期型
都使用’ '单引号将其引用,单引号中为字符串,默认返回值为该字符串
select 'lmzaixxq';
6、查询表达式
默认返回值为表达式所得到的值
select 100*98;
7、查询函数
select 函数名(实参列表);
8、为列起别名
特点:①便于理解; ②如果查询字段有重名情况,使用别名可以区分开来; ③使用别名时如果使用字符中含有关键字或空格,可以使用双引号将起引起
方式1使用as
select 100%98 as 别名;
多个变量起别名:
select 列1 as 别名1,列2 as 别名2 from 表名;
方式2 使用空格
select 列1 别名1,列2 别名2 from 表名;
9、查询某一列元素并去掉重复的情况
检索某列的全部值,去除掉重复的部分,添加关键字distinct即可实现。
select distinct 列名 from 表名;
10、+号的作用
MySQL中+仅有运算符的功能,‘+’为运算符,前后有两个操作数
只要其中一方为null则结果肯定为null
select 100+90;
两个操作数都为数值型,则做加法运算
select '123'+90;
其中一个为字符型,另一个为数值型,则将字符型数值转换为数值型:
转换成功则做加法运算
如果转换失败,则将字符型数值转换成0,然后进行加法运算
11、字符串连接函数
用于将两个字符串连接到一起
select concat(连接的参数变量) from 表名;
其中参数变量可以有数个,但每个参数变量中间要由逗号隔开
12、判断参数是否为null
select ifnull(参数1,参数2),from 表名;
其中参数1为被判断的表达式,参数2为将判断的表达式转换为目标表达式
四、条件查询
语法:
select
查询列表
from
表名
where
筛选条件;
含义先判断表名是否在库中,若在则判断是否符合where后的条件,若满足则展示
分类:
①按条件表达式筛选
条件运算符:
> 大于
< 小于
= 等于
<> 不等于
>= 大于等于
<= 小于等于
②按逻辑表达式筛选
逻辑运算符:
&& and
|| or
! not
③模糊查询
like
between and
in
is null
1、按条件表达式筛选
条件运算符:> < = <>不等于>= <=
//查询列名中大于12的项
SELECT
*
FROM
表名
WHERE
列名>12;
//查询列名中不等于90的项
SELECT
*
FROM
表名
WHERE
列名 <> 90 ;
2、模糊查询
(1)like
特点
一般和通配符一起使用
通配符:
% 表示任意多个字符
_ 表示任意单个字符
//查询在某表中的某列中包含特定字符‘a'的项
SELECT *
FROM
表名
WHERE
列名 LIKE '%a%';
MySQL中默认的转义字符为’/’
在MySQL中可以通过关键字escape来指定转义字符,定义的转义字符可以为任意字符,但不可为字符串
//下列语句的含义为判断列名中第二个字符为_的项
SELECT
*
FROM
表名
WHERE
列名 '_x_%' ESCAPE 'x';
(2)between and
含义:在什么什么之间
特点:
①提高语句的简洁度
②包含临界值
③不能调换顺序
//查询某列中在100到120之间的项
SELECT *
FROM
表名
WHERE
列名 BETWEEN 100 AND 120 ;
(3)in
含义:判断某字段的值是否属于in列表中的某一项
特点:
①使用in提高简洁度
②in列表的值类型必须一致或兼容
③不能使用通配符
查询员工工种编号为IT_PrOG|AD_VP
SELECT
*
FROM
表名
WHERE
列名 IN(参数);
(4)is null
=或<>不能用于判断null值
只能使用is null 或is not null来判断是否为null值
#查询列表中的null值
SELECT
*
FROM
表名
WHERE
列名 IS NOT NULL;
3、安全等于<=>
#查询列表中的null值
SELECT
*
FROM
表名
WHERE
列名 <=> NULL;
4、is null与<=>的区别
is null仅仅可以判断null值,可读性较高,建议使用
<=>仅仅可以判断null值,又可以判断普通的数值,可读性较低