SELECT *FROM 表名;
2.查询特定的列:
SELECT id, name FROM student;
3.起别名:
SELECT 列名1 AS "列1别名",列名2 AS "列2别名" FROM 表名;
或
SELECT 列名1 "列1别名",列名2 "列2别名" FROM 表名;
4.查询去重
select distinct 字段名 from 表名;
5.+号的作用
select 数值+数值;
6.concat函数(拼接字符,相当于java中的 "1"+"23"="123")
select concat(字符1,字符2,字符3,...);
7.ifnull函数
select ifnull(commission_pct,0) from employees;
8.isnull函数
功能:判断某字段或表达式是否为null,如果是,则返回1,否则返回0
二.条件查询
select 查询列表 from 表名 where 筛选条件;
1.按条件表达式查询
SELECT * FROM employees WHERE salary>12000;
2.按逻辑表达式筛选
SELECT last_name, salary, commission_pct FROM employees WHERE salary>=10000 AND salary<=20000;
3.模糊查询
select last_name, salary FROM employees WHERE last_name LIKE '__e_a%';(查询员工名中第三个字符为e,第五个字符为a的员工名和工资)
4.IN查询
SELECT last_name, job_id FROM employees WHERE job_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');
5.IS NULL语句
SELECT last_name, commission_pct FROM employees WHERE commission_pct IS NULL;
6.安全等于<=>
SELECT last_name, salary FROM employees WHERE salary <=> 12000;
三.排序查询
ASC(ascend): 升序。DESC(descend): 降序
select 查询列表 from 表名 【where 筛选条件】 order by 排序的字段或表达式;
1.单个字段查询
SELECT * FROM employees WHERE department_id>=90 ORDER BY employee_id DESC;
2.按表达式排序
SELECT *,salary*12*(1+IFNULL(commission_pct,0)) FROM employees ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
3.按函数排序
SELECT LENGTH(last_name),last_name FROM employees ORDER BY LENGTH(last_name) DESC;
4.多个字段排序
SELECT * FROM employees ORDER BY salary DESC,employee_id ASC;
四.单行函数
字符函数:
1.length(s) 获取字符长度
SELECT LENGTH('john'); SELECT LENGTH('张三丰hahaha');
2.concat(s1,s2...sn) 拼接字符串
SELECT CONCAT(last_name,'_',first_name) 姓名 FROM employees;
3.upper(s) 将字符串转换为大写
SELECT UPPER('john');
4.lower(s) 将字符串转换为小写
SELECT LOWER('joHn');
5.substr(s,start,length)、substring() SUBSTR(s, start, length):从字符串 s 的 start 位置截取长度为 length 的子字符串
SELECT SUBSTR('李莫愁爱上了陆展元',1,3) out_put;
6.instr(s,s) 返回子串第一次出现的索引,如果找不到返回0
SELECT INSTR('杨不殷六侠悔爱上了殷六侠','殷八侠') AS out_put;
7.trim(s) 去掉字符串开始和结尾处的空格
SELECT LENGTH(TRIM(' 张翠山 ')) AS out_put;
8.lpad(s1,len,s2) 在字符串 s1 的开始处填充字符串 s2,使字符串长度达到 len
SELECT LPAD('殷素素',5,'*') AS out_put; --> **殷素素
9.rpad(s1,len,s2) 在字符串 s1 的结尾处添加字符串 s2,使字符串的长度达到 len
SELECT RPAD('殷素素',5,'*') AS out_put; --> 殷素素**
10.replace(s,s1,s2) 用字符串 s2 替代字符串 s 中的字符串 s1
SELECT REPLACE('张无忌爱上了周芷若','周芷若','赵敏') AS out_put; -->张无忌爱上了赵敏数学函数
1.round(x) ROUND(x,d):保留d位小数,四舍五入
SELECT ROUND(-1.55); --> -2
2.ceil(x) 向上取整
SELECT CEIL(-1.02); --> -1
3.floor(x) 向下取整
SELECT FLOOR(-1.58); --> -2
4.truncate(x,y) 返回数值 x 保留到小数点后 y 位的值(与 ROUND 最大的区别是不会进行四舍五入)
SELECT TRUNCATE(1.567,2); --> 1.56
5.mod(x,y) 返回 x 除以 y 以后的余数
SELECT MOD(10,-3); --> 1
日期函数
1.now() 返回当前系统时间(注:日期+时间)
SELECT NOW(); --> 2019-10-05 09:56:57
2.curdate() 返回当前系统日期,不包含时间
ELECT CURDATE(); --> 2019-10-05
3.curtime() 返回当前系统日期,不包含日期
SELECT CURTIME(); -->09:56:57
4.year(d) 返回年份
SELECT YEAR(NOW()); -->2019
5.month(d) 返回日期d中的月份值,1 到 12
SELECT MONTH(NOW()); --> 10
6.monthname(d) 返回日期当中的月份名称,如 November
SELECT MONTHNAME(NOW()); --> October
7.str_to_date(s,f) 将字符通过指定的格式转换成日期
SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d') AS out_put; --> 1998-03-02
8.date_format(d,f) 将日期通过指定的格式转换成字符
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日') AS out_put; --> 2019年10月05日
其他函数
1.version() 返回当前数据库名
2.user() 返回当前用户
SELECT USER();
流程控制函数
1.if(expr,v1,v2) 如果表达式 expr 成立,返回结果 v1;否则,返回结果 v2。
SELECT IF(1 > 0,'正确','错误'); --> 正确