MySQL常见命令语句
1.常看当前所有的数据库
show databases;
2.打开指定的库
use 库名;
3.查看当前库的的所有表
show tables;
4.查看其他库的所有表
show tables from 库名;
5.创建表
create table 表名(
列名 列类型,
列明 列类型,
...
)
6.查看表结构
desc 表名;
7.查看服务器版本
方式一:登录到mysql服务端
select version();
方式二:没有登录mysql服务端
mysql --version
或
mysql --V`在这里插入代码片`
MySQL的语法规范
1.不区分大小写,但建议关键字大写,表名、列名小写
2.每条命令最好用分号结尾
3.每条命令根据需要,可以进行缩进 或换行
4.注释:
单行注释:#注释文字
单行注释:-- 注释文字
多行注释:/* 注释文字 */
MySQL基础
1.去重
SELECT DISTINCT department_id AS id FROM employees;
2.连接
SELECT
CONCAT(last_name,first_name) AS 姓名
FROM
employees;
#如果有空值,则需要使用IFNULL
SELECT
CONCAT(last_name,',',first_name,',',IFNULL(commission_pct,0)) AS out_put
FROM
employees;
3.条件查询
SELECT
查询列表
FROM
表名
WHERE
筛选条件;
#分类
一、按条件表达式筛选
条件运算符:> < = != <> <= >=
二、按逻辑表达式筛选
逻辑运算符:
&& || !
and or not
三、模糊查询
like
% 任意多个字符,包含0个字符
_ 任意单个字符
between and
in
is null
select
last_name
from
employees
where
last_name like '_$_%' ESCAPE '$'; #ESCAPE转义
排序查询
SELECT * FROM employees ORDER BY salary DESC;
# DESC 降序
#ASC 升序 省略不写也为升序
字符函数
1.length 获取参数值的字节个数
SELECT LENGHT ('john');
2.concat 拼接字符串
SELECT CONCAT(last_name,'_',first_name) 姓名 FROM employees;
3.upper、lower 大小写
SELECT CONCAT(UPPER(last_name),'_',LOWER(first_name)) 姓名 FROM employees;
4.substr、substring
SELECT SUBSTR('李莫愁爱上了陆展元',7) out_put; #返回结果为 陆展元
SELECT SUBSTR('李莫愁爱上了陆展元',1,3) out_put; #返回结果为 李莫愁
- instr
instr 返回字串第一次出现的索引,如果抄不到返回0
SELECT INSTR('12312ASSASA123','312') AS out_put;
7.trim 去除空格 还可以去除指定字符
SELECT LENGTH(TRIM(' AAA ')) AS OUT_PUT;
#指定去除
SELECT TRIM('指定字符' FROM '被去除字符的字符串') AS OUT_PUT;
例如:
SELECT TRIM('A' FROM 'AAADAAADD') AS OUT_PUT;
8.lpad 用指定的字符实现左填充指定长度,rpad 用指定的字符实现右填充指定长度
SELECT LPAD('aaa',10,'*')
SELECT RPAD('aaa',10,'*')
9.replace 替换
SELECT REPLACE('aaaaabbbbbbccc','a','z')
数学函数
1.round 四舍五入
SELECT ROUND (-1.55);
SELECT ROUND (1.567,2);
2.ceil 向上取整,返回>=该参数的最小整数
floor 向下取整,返回<=该参数的最大整数
SELECT CEIL (-1.55);
SELECT FLOOR (-1.55);
3.truncate 截断
SELECT TRUNCATE(1.6999,1) ;#结果为1.6
4.mod 取余
MOD(a,b):a-a/b*b
SELECT MOD(10,-3)
日期函数
1.now 返回当前系统日期+时间
SELECT NOW();
2.curdate 返回当前日期,不包含时间
SELECT CURDATE();
3.curtime返回当前时间,不包含日期
SELECT CURTIME();
4.可有获取指定的部分,年、月、日、时、分、秒
SELECT YEAR(NOW());
SELECT MONTH(NOW());
SELECT DAY(NOW());
str_to_date:将日期格式的字符转换成指定格式的日期
SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d')
date_format:将日期转换成字符
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日')
其他函数
SELECT VERSION(); #查看MySQL版本号
SELECT DATABASE(); #查看当前数据库
SELECT USER(); #查看当前用户
流程控制函数
1.if函数;if else 的效果
SELECT last_name,commission_pct, IF (commission_pct IS NULL,'有奖金','没奖金') FROM employees;
2.case函数的使用一: switch case 的效果
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1
when 常量2 then 要显示的值2或语句2
...
else 要显示的值n或语句n
end
例如:
SELECT salary 原始工资,department_id,
CASE department_id
WHEN 30 THEN salary*1.1
WHEN 40 THEN salary*1.2
WHEN 50 THEN salary*1.3
ELSE salary
END AS 新工资
FROM employees;
3.case函数的使用二: 类似于 多重if
case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
...
else 要显示的值n或语句n
例如:
SELECT salary,
CASE
WHEN salary>20000 THEN 'A'
WHEN salary>15000 THEN 'B'
WHEN salary>10000 THEN 'C'
ELSE 'D'
END '工资级别'
FROM
employees;