概述
一、基础查询
查询1:查询常量
SELECT '110';
SELECT '管理员';
查询2:查询表达式运行结果
SELECT 999+110;
#如果+两端都是数值那么就直接相加,结果集中是结果。
SELECT 999+'abc';
#如果+两端有一端是字符,那么会首先将字符转成数值,如果转换成功则相加,并返回结果,如果转换失败,则变成0再加。
SELECT 999+'123';
SELECT '999'+'abc';
SELECT CONCAT('999','abc');
SELECT 111+NULL
#+号两端有一端是null,那么返回结果就一定是null。
#如果想执行两个字符串的拼接需要使用CONCAT()函数。
查询3:函数的返回值
SELECT VERSION();
#返回当前mysql数据库的版本信息
SELECT DATABASE();
#返回当前书库的名字
查询4:返回表中的单个列,select 后面是列名 from后面是表名,查询单个列就只写一个列名。
SELECT employee_id FROM employees;
查询5:查询返回多个列,select 后面是列名,多个列名用逗号分隔。 from后面是表名。
SELECT employee_id,first_name,last_name FROM employees;
查询6:查询返回所有列,select 后面是所有列名,用逗号分隔,from后面是表名。查询的时候select后面写 * 代表查询所有列。
SELECT
employee_id,
first_name,
last_name,
email,
phone_number,
job_id,
salary,
commission_pct,
manager_id,
department_id
FROM employees;
SELECT * FROM employees;
查询7:给列起别名,两种形式,在列后加as关键字加列的别名。列后空格加列的别名。别名可以使用单引号,也可以不使用。
SELECT employee_id,first_name,last_name,
(salary * 12 *(1+IFNULL(commission_pct,0))) AS '年薪'
FROM employees;
SELECT employee_id,first_name,last_name,
(salary * 12 *(1+IFNULL(commission_pct,0))) 年薪
FROM employees;
SELECT employee_id,first_name,last_name,
(salary * 12 *(1+IFNULL(commission_pct,0))) '年 薪'
FROM employees;
#在列名的别名中如果有特殊字符,则别名必须两端加单引号。
二、条件查询
查询1:关系运算符(>,<,<>)
#查询所有工资大于等于10000的员工信息
SELECT * FROM employees WHERE salary >= 10000;
#查询所有隶属IT部门的员工信息
SELECT * FROM employees WHERE department_id = 60;
#所有manager_id不是103的员工信息
SELECT * FROM employees WHERE manager_id <> 103;
查询2:逻辑运算符(and,or,not)
#所有工资在15000到25000之间的员工信息 and与 运算符两端的表达式必须同时满足条件才能满足整个条件。
SELECT * FROM employees WHERE salary >= 15000 AND salary <= 25000;
#所有manager_id是103或者102的员工信息 or或 运算符两端的表达式有一端满足条件,整个条件就满足。
SELECT * FROM employees WHERE manager_id=102 OR manager_id=103 ;
#工资不在10000到20000之间的员工信息
SELECT * FROM employees WHERE NOT(salary > 10000 AND salary < 20000)
查询3:模糊查询(like,between...and...,in,is null,is not null)
说明:like关键字代表像什么什么的样子,必须和通配符配合。%通配符代表任意长度个任意字符。
#所有名字以e开头的员工信息:
SELECT * FROM employees WHERE first_name LIKE 'e%';
#所有名字有e的员工信息
SELECT * FROM employees WHERE first_name LIKE '%e%';
#查询第二个字母是e的员工信息:_通配符,一个长度个任意字符
SELECT * FROM employees WHERE first_name LIKE '_e%';
#查询倒数第三个字母是f的员工信息:
SELECT * FROM employees WHERE first_name LIKE '%f__';
#查询第二个字母是_的员工信息:转译字符 _就不是通配符了,是_的意思。
SELECT * FROM employees WHERE first_name LIKE '__%';
#查询第二个字母是_的员工信息:任意字符做转译字符 $_就不是通配符了,是_的意思。自定义转译字符不推荐使用字母
SELECT * FROM employees WHERE first_name LIKE '_$_%' ESCAPE('$');
#between and模糊查询,一个数值的区间查询。包含边界值。必须是小数在前大数在后。
#查询所有工资在10000到20000之间的员工
SELECT * FROM employees WHERE salary >= 10000 AND salary <= 20000;
SELECT * FROM employees WHERE salary BETWEEN 10000 AND 20000;
#in模糊查询,只要检索条件匹配in后面任何一个条件,就会符合检索条件。
#manager_id是102或者103或者114的员工信息
SELECT * FROM employees WHERE manager_id=102 OR manager_id=103 OR manager_id=114;
SELECT * FROM employees WHERE manager_id IN (102,103,114);
#is null 和 is not null
#查询出所有manager_id为null员工信息
SELECT * FROM employees WHERE manager_id IS NULL;
#查询出所有manager_id不为null员工信息
SELECT * FROM employees WHERE manager_id IS NOT NULL;
#查询出所有年底有奖金的员工信息
SELECT * FROM employees WHERE commission_pct IS NOT NULL;
三、排序查询(order by)
说明:ASC升序 (可省略),DESC降序,order by始终在一句话最后面。
排序1:单个列排序
#按照员工的工资升序排列 asc是按照列的升序排列 如果不写默认就是asc
SELECT * FROM employees ORDER BY salary ASC;
#按照员工的工资降序排列 desc是降序排列
SELECT * FROM employees ORDER BY salary DESC;
#按照员工的名进行降序排列 如果是字符就按照字典顺序就行排列
SELECT * FROM employees ORDER BY first_name DESC;
排序2:多个列排序
#按照员工的工资降序排列 desc是降序排列 如果工资相同就按照名字的升序排列
#按照多个列排序的时候,用逗号分隔各排序规则,在前面的就是高排序规则,写在后面的就是低排序规则,个排序规则单独指定升序或者降序。
SELECT * FROM employees ORDER BY salary DESC,first_name;
四、常见函数
说明:单行函数:字符函数,数学函数,日期函数,流程控制函数,其他函数。
4.1 字符函数(UPPER,LOWER,CONCAT)
#转大写函数
SELECT UPPER('abc');
SELECT UPPER(first_name) FROM employees;
#转小写函数
SELECT LOWER('ABC');
SELECT LOWER(first_name) FROM employees;
#拼接字符串函数
SELECT UPPER(CONCAT('a','b','c'));
SELECT CONCAT(first_name,'-',last_name) FROM employees;
#截取子字符串,在mysql的字符串中,索引从1开始。从源串截取,第二个参数位置开始一直到字符串末尾。
SELECT SUBSTR('hello world',7); = > word
#截取子字符串,三个参数的形式,第一个参数源串,第二个参数从这个位置开始截取,第三个参数截取的长度。
SELECT SUBSTR('hello world',7,2); = > wo
#获取字符串的字节数
SELECT LENGTH('你好啊') = > 9 一个汉字是三个字节
#获取目标串在源串中出现的第一次索引,返回0代表没有找到目标
SELECT INSERT ('one world one dream','world') = > 5
#lpad和rpad左填充和右填充,源串加上填充串长度正好是给出的参数长度
SELECT LPAD('小强',10,'*');
SELECT RPAD('小强',10,'*');
#去掉两端空格,不能去掉中间空格
SELECT LENGTH(TRIM(' 张 学 友 '))
#从源串中用新串替换老串
SELECT REPLACE('123','456')
4.2 数学函数(CEIL(),FLOOR(),ROUND(),RAND(),ABS(),MOD())
#向上取整,大于参数的最小的整数
SELECT CEIL(-3.15); = > -3
#向下取整,小于参数的最大的整数
SELECT FLOOR(-3.15); = > -4
#四舍五入
SELECT ROUND(-3.15); = > -3
#取随机数,取0到1之间的浮点数
SELECT RAND();
#取绝对值
SELECT ABS(-3);
#取余
SELECT MOD(15,4);#相当于15%4
4.3 日期函数(NOW(),CURTIME(),CURDATE())
#取系统时间
SELECT NOW();
#取系统时间,只有时分秒
SELECT CURTIME();
#取系统时间,只有年月日
SELECT CURDATE();
4.4 其他函数(IFNULL)
SELECT IFNULL('hello','ok');
SELECT IFNULL(NULL,'ok');
SELECT IFNULL('NULL','ok');
4.5 流程控制函数
#判断控制函数
SELECT IF(10=9,'one','two');#if函数有三个参数,第一个参数是一个条件表达式,表达式返回true则显示第二个参数,表达式返回false则显示第三个参数。
#多重判断,相当于多重if-else
/*
select *
case
when 条件表达式1 then 表达式1
when 条件表达式2 then 表达式2
.......
else 表达式n
end
*/
SELECT first_name,last_name,
CASE
WHEN salary >2000 AND salary < 4000 THEN salary * 1.1
WHEN salary >=4000 AND salary < 8000 THEN salary * 1.5
WHEN salary >=8000 AND salary < 12000 THEN salary * 2.0
ELSE salary * 2.5
END '工资'
FROM employees;
#多重判断,switch-case
/*
select *
case
when 等值判断 then 表达式1
when 等值判断 then 表达式2
.......
else 表达式n
end
*/
SELECT first_name,last_name,
CASE
WHEN job_id='AD_PRES' THEN salary * 1.1
WHEN job_id='AD_VP' THEN salary * 1.5
WHEN job_id='IT_PROG' THEN salary * 2.0
ELSE salary * 2.5
END '工资'
FROM employees;
五、分组函数(AVG(),AUM(),MAX(),MIN(),COUNT(),GROUP BY(),HAVING())
说明:分组函数,分组函数只能返回一行记录,不要将分组函数和普通列放在一起查,除非这个列就是分组列。
#AVG()取平均值
#看看所有员工的平均工资
SELECT AVG(salary) FROM employees;
#SUM()去总和
#看看所有员工的工资和
SELECT SUM(salary) FROM employees;
#MAX()去最大值
#看看工资最高是多少
SELECT MAX(salary) FROM employees;
#MIN()去最大值
#看看工资最低是多少
SELECT MIN(salary) FROM employees;
#COUNT()统计行数
#员工信息表中有多少名员工的工资是超过10000
SELECT COUNT(*) FROM employees WHERE salary>10000;
/*
分组查询 分组查询子句group by
*/
#查询IT岗位所有员工的平均工资
SELECT AVG(salary) FROM employees WHERE job_id='IT_PROG';
#查询每个岗位的员工的平均工资
#group by 后面的列就是分组列,列值相等的数据会被分到一组中。
#分组函数在没有分组前是对全表数据进行检索,一旦分组,就会按照各个组分别检索的方式运算。
#不要将普通的列和分组函数放在一起查询,除非这个列是分组列。
SELECT job_id,AVG(salary),COUNT(*) FROM employees GROUP BY job_id;
#查询每个岗位的员工的平均工资大于5000
#where是过滤分组前的原表数据
#having是过滤分组之后的组。
SELECT job_id,AVG(salary),COUNT(*) FROM employees GROUP BY job_id HAVING AVG(salary)>5000;
SELECT job_id,AVG(salary),COUNT(*)
FROM employees
WHERE salary>3000
GROUP BY job_id
HAVING AVG(salary)>5000;
最后
以上就是美好音响为你收集整理的mysql big转字符串_MySQL之DQL语言的全部内容,希望文章能够帮你解决mysql big转字符串_MySQL之DQL语言所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复