基础查询
基础语法:
代码语言:javascript复制SELECT 查询字段列表(最后一个字段不加逗号) FROM 表名;
执行顺序:先执行 FROM 再执行SELECT
注意:
查询字段列表中:字段,函数,表达式,常量
查询结果是一张虚拟的二维表,不能对查询结果进行更新和删除。
查询常量
代码语言:javascript复制SELECT 1;
查询函数
代码语言:javascript复制SELECT VERSION();
表达式
代码语言:javascript复制SELECT 100 200;
SELECT 1>2;-- mysql中没有boolean类型,0代表false,1代表true
查询单个字段
代码语言:javascript复制SELECT name FROM temp_user;
多字段查询
代码语言:javascript复制SELECT * FROM temp_user;
SELECT name,sex FROM temp_user;-- 在企业开发过程中推荐使用
多个字段 常量 函数 表达式
代码语言:javascript复制SELECT name,sex,2,VERSION(),100 200,user_id*2 FROM temp_user;
IFNULL(参数1,参数2)
参数1放字段名,参数2放参数1字段为空时,你需要替换的值;
代码语言:javascript复制SELECT name,IFNULL(birthday,'未知') FROM temp_user;
别名设置 AS
关键字设置,别名可以用单引号括起来,也可以不加单引号;
代码语言:javascript复制SELECT name,IFNULL(birthday,'未知') AS 'birthday'FROM temp_user;
省去AS关键字,别名可以用单引号括起来,也可以不加单引号;
代码语言:javascript复制SELECT name,IFNULL(birthday,'未知') birthday FROM temp_user;
去重 DISTINCT
代码语言:javascript复制SELECT DISTINCT name FROM temp_user;
即将重复的name字段只显示一个;
字符拼接
在oracle和sqlserver中字符拼接直接用 可以拼接
语法:
代码语言:javascript复制CONCAT(字符1,字符2);--将字符1和字符2拼接
代码示例:
代码语言:javascript复制SELECT CONCAT('篮球',name) AS name FROM temp_user;
条件查询
语法结构:
代码语言:javascript复制 SELECT 查询字段列表 FROM 表名 WHERE 筛选条件;
筛选条件
1. 条件表达式:>,>=,<,<=,=,!=,<>,IS NULL(空) , IS NOT NULL (非空);
2. 逻辑表达式:AND(与),OR(或),NOT(非);
3. 模糊查询:LIKE,BETWEEN AND,IN
条件查询的执行顺序
1. from
2. where
3. select
条件表达式
查询年龄>18的运动员
代码语言:javascript复制SELECT * FROM temp_user WHERE age>18;
查询年龄不等于18
代码语言:javascript复制SELECT * FROM temp_user WHERE age!=18;
或
代码语言:javascript复制SELECT * FROM temp_user WHERE age<>18;
注意:对于NULL值的条件表达式,只能使用IS NULL或IS NOT NULL;
查询生日不为空的
代码语言:javascript复制SELECT * FROM temp_user WHERE birthday IS NOT NULL; --不为空
SELECT * FROM temp_user WHERE birthday IS NULL;--为空
注意:如果筛选条件中包含2个或以上个条件表达式,我们应该在条件表达式中间使用逻辑表达式;
查询年龄>18的并且生日不能为空
代码语言:javascript复制SELECT * FROM temp_user WHERE age>18 AND birthday IS NOT NULL;
查询年龄<=18 或生日为空的
代码语言:javascript复制SELECT * FROM temp_user WHERE age<=18 OR birthday is null;
SELECT * FROM temp_user WHERE NOT(age>18 AND birthday IS NOT NULL);
模糊查询
模糊查询的语法:
代码语言:javascript复制SELECT 查询字段列表 FROM 表名 WHERE 字段名 LIKE '通配符 字符';
2种通配符
% 代表任意(0或多个)个任意字符
代码语言:javascript复制SELECT * FROM temp_user WHERE name LIKE 'kobe%';-- 查询以kobe开头的用户
SELECT * FROM temp_user WHERE name like '%kobe';-- 以kobe结尾的用户
SELECT * FROM temp_user WHERE name like '%kobe%';-- 包含kobe的用户
_ 代表1个任意字符,如果要表示_字符,使用_
代码语言:javascript复制SELECT * FROM temp_user WHERE name like 'kobe_';
-- 是以kobe开头,但是应该是5个字符
SELECT * FROM temp_user WHERE name like '_kobe';
-- 以kobe结尾,前面只能有一个任意字符
SELECT * FROM temp_user WHERE name like '_kobe_';
-- 包含kobe,前后只能有一个字符