关于MySQL中DQL的部分基础语法
#进入数据库每次进行操作之前都要use上库名
USE information_schema;
#1.查询表中的单个字段
SELECT FILE_ID FROM FILES;
#2.查询表中的多个字段,使用逗号隔开
SELECT FILE_ID,FILE_NAME FROM FILES;
#3.查询所有字段,可以双击你要查中的字段,但是要手动加逗号
SELECT
`FILE_ID`,
`FILE_TYPE`,
`FILE_NAME`
FROM
FILES;
#还有一种方法
SELECT * FROM FILES;
#查询常量值
SELECT 100;
#查询字符型常量值;
SELECT "john";#字符型用单引号
#查询表达式
SELECT 100 * 98 ;
#查询函数
SELECT VERSION();#调用version函数并返回他的值
#起别名方式1使用AS(1.为了提高可读性2.如果查询字段重名的情况,使用别名可以区分)
SELECT 100%98 AS "结果";
SELECT `FILE_ID`AS "id" FROM FILES;
#方式2使用空格
SELECT `FILE_ID` 'id' FROM FILES;
#去重
SELECT DISTINCT `FILE_ID` FROM FILES;
#+号的作用
/*
mysgl中的+号:
仅仅只有一个功能:运算符
select 100+90;两个操作数都为数值型,则做加法运算
select '123'+90;其中一方为字符型,试图将字符型数值转换成数值型
如果转换成功,则继续做加法运算
select 'john'+90;如果转换失败,则将字符型数值转换成0
select null+10;只要其中一方为null,则结果肯定为null
*/
#扩展 concat
#例:两个字符连成一个字段,并显示id
SELECT CONCAT("a","b","c") AS 结果;
#表中栏位也能进行拼接
#IFNULL表达式 这个表达式只能对比null
SELECT IFNULL(`FILE_NAME`,0)/*如果为null则返回0*/ AS zz FROM FILES ;
#可以于concat连用
SELECT CONCAT(`FILE_ID`,IFNULL(`FILE_NAME`,0) AS 结果;
#======================================================
#进阶2:条件查询
/*
语法:
select
查询列表
from
表名
where
筛选条件;
执行顺序:from-->where-->select
一、按条件表达式筛选
简单条件运算符: > <= != <> >= <=
二、按逻辑表达式筛选
逻辑运算符: && ll !
and or not
三、模糊查询
like
between and
in
is null
*/
#一、按条件表达式筛选
#案例1查询栏位id = 0 的数字
SELECT
*
FROM
FILES
WHERE
FILE_ID=0;
#二、按逻辑表达式筛选
#案例:查询FILE_ID = 0 and FREE_EXTENTS = 2 的
SELECT
*
FROM
FILES
WHERE
FILE_ID=0,andFREE_EXTENTS=2;
#出了点小bug,但是格式没错
#-------------------------------------------------
#三、模糊查询
#案例1:查询栏位中包含a的信息
#1.like
SELECT
*
FROM
FILES
WHERE
`FILE_NAME`LIKE'%i%';#%的意思,是表示要包含的这个字符前后都有可能还有其他字符,所以加上%号
#查询name中第三个字符为m的信息配合通配符下划线——
SELECT
*
FROM
FILES
WHERE
`FILE_NAME`LIKE'__m%';
#查询第二个字符为下划线_的(涉及转义关键字escape)
SELECT
*
FROM
FILES
WHERE
`FILE_NAME`LIKE'_$_%'ESCAPE '$';#这个关键字的意思是&现在是一个转义符号了
#记住ESCAPE要引用后加引号
#----------------------------------
#2.between and
/*
使用between and可以提高语句的简洁度
包含临界值
两个临界值不要调换顺序
*/
#案例1:查询员工编号在100到120之间的员工信息
SELECT
*
FROM
employees
WHERE
employee_id>=100 AND employee_id<=120;
#-------------—-
SELECT
*
FROM
employees
WHERE
employee_id BETWEEN 100 AND 120;
#----------------------------------
#3.in
/*
含义:判断某字段的值是否属于in列表中的某一项特点:
使用in提高语句简洁度
in列表的值类型必须一致或兼容
*/
#查询在FILE_TYPE栏位中有 UNDO LOG 的
SELECT
FILE_TYPE
FROM
FILES
WHERE
FILE_TYPE IN('UNDO LOG');
#4.is null
/*
=或<>不能用于判断null值
is null或is not null 可以判断null值
*/
#查询在TABLE_NAME中为null的元素
SELECT
TABLE_NAME
FROM
FILES
WHERE
TABLE_NAME IS NULL;
#查询在TABLE_NAME不为null的元素
SELECT
TABLE_NAME
FROM
FILES
WHERE
TABLE_NAME IS NOT NULL;
#安全等于<=> 效果是一样的
SELECT
TABLE_NAME
FROM
FILES
WHERE
TABLE_NAME <=>NULL;
#安全等于<=>还可以用于普通查询
SELECT
FILE_ID
FROM
FILES
WHERE
FILE_ID <=>1;#查询id为1的元素
/*
IS NULL:仅仅可以判断NULL值,可读性较高,建议使用
<=>:既可以判断NULL值,又可以判断普通的数值,可读性较低
*/