⒈常见命令
命令
说明
show databases;
显示数据库列表
use DataBaseName;
打开指定的数据库
show tables;
显示当前打开数据库的表列表
show tables from DataBaseName;
显示指定数据库的表列表
select database();
显示当前命令指向的数据库
create table TableName(id int,name varchar(50));
创建表
desc TableName;
查看表结构
show index from TableName
查看表索引
select * from TableName;
查询表数据
insert into TableName(id,name) values(1,'fanqi'),(2,'gaoxing');
插入数据
SET SQL_SAFE_UPDATES = 0;
禁用MySql安全更新模式
update TableName set name='fanqi' where id = 1;
更新数据
delete from TableName where id = 2;
删除数据
select version();
查询当前MySql版本
*如果某些字段名与MySql保留关键字一致,则加上`字段名`着重号即可。
*MySql有两种通配符
1.% 代表任意多个字符,包括0个字符
2._ 代表任意单个字符
MySql必要时需要使用'\'转义符,也可以使用escape声明特定的转义符
*is null 和<=>(安全等于)的区别
is null
仅仅可以判断null值,可读性较高,建议使用
<=>
既可以判断null值,也可以判断普通数值,可读性较低
*排序中,asc代表升序,desc代表降序,默认asc升序。
⒉常见函数
1.字符串类
命令
说明
select concat('fan','_','qi');
字符串连接
select ifnull(null,10);
判断是否为空,参数1是判断的表达式或值
参数2是如果为空返回的值
select length('fanqi');
显示长度
*UTF-8编码一个汉字3个字节
*GBK编码一个汉字2个字节
select upper('fanqi');
将参数转化为大写
select lower('FANQI');
将参数转化为小写
select substr('fanqi is very good',6);
select substring('fanqi is very good',6);
功能一样,另一个为简写,截取字符串
*SQL中索引从1开始
select instr('fanqi is very good','fanqi');
返回指定字符第一次出现的索引,如果找不到
则返回0
select trim('a' from 'aaaaaa樊奇aaaaa');
去除字符串中指定字符,如未指定则默认空格
select lpad('fanqi',2,'*');
用指定的字符实现左填充指定长度
*原字符已超出指定长度,则会自动从左截取
select rpad('fanqi',2,'*');
用指定的字符实现右填充指定长度
select replace('fanqi is very good','fanqi','樊奇');
替换指定的字符串
2.数学函数
select round(1.1923,2);
四舍五入,如果不指定保留的小数位数
则默认只保留整数
select ceil(1.1923);
向上取整,返回>=该参数的最小整数
select floor(1.1923);
向下取整,返回<=该参数的最大整数
select truncate(1.1923,1);
截断,后面有什么都不要了
第二个参数是保留的小数位
select mod(10,3);
取余,mod(a,b)
计算机内部取余公式 a-a/b*b
若a为正,则取余结果为正
若a为负,则取余结果为负
3.日期函数
select now();
返回当前系统日期+时间
select curdate();
返回当前系统日期,不包含时间
select curtime();
返回当前系统时间,不包含日期
select year(now());
select year('1994-06-24');
select month(now());
select monthname(now());
可以获取日期中指定的部分
年、月、日、时、分、秒
select str_to_date('1994-06-24','%Y-%c-%d');
将字符串通过指定的格式转换成日期
格式符详见下表
select date_format(now(),'%Y年%c月%d日');
将日期通过指定的合适转换成字符串
格式符详见下表
select datediff(now(),'1994-06-24');
计算两个日期之间相差的天数
附加:
序号
格式符
含义
1
%Y
4位的年份
2
%y
2位的年份
3
%m
月份(01,02,... 12)
4
%c
月份(1,2,... 12)
5
%d
日(01,02,...)
6
%H
小时(24小时制)
7
%h
小时(12小时制)
8
%i
分钟(00,01,02,... 59)
9
%s
秒(00,01,02,... 59)
4.其它函数
select version();
查看当前MySql版本
select database();
查看当前打开的库
select user();
查看当前用户
select md5('fanqi');
返回当前字符串的md5加密形式
5.流程控制函数
①if函数,提供类似于if elst的效果,三目运算符。
1 select if(10<5,'大','小');
②case函数,有两种用法
Ⅰ类似于switch case的效果(既可以当表达式又可以单独出来作为语句)
语法:
case 要判断的字段或表达式
when 常量1 then 要显示的值1或语句1; //如果为值得话此处不加分号
when 常量2 then 要显示的值2或语句2; //
........
else 默认要显示的值n或语句n
end
案例:查询员工的工资,要求
部门号=30,显示的工资为1.1倍
部门号=40,显示的工资为1.2倍
部门号=50,显示的工资为1.3倍
其它部门,显示的工资为原工资
1 selectsalary 原始工资,department_id,2 casedepartment_id3 when 30 then salary * 1.1
4 when 40 then salary * 1.2
5 when 50 then salary * 1.3
6 elsesalary7 end as新工资8 from employees;
Ⅱ类似于多重if
语法:
case
when 条件1 then 要显示的值1或语句1
when 条件2 then 要显示的值2或语句2
.......
else 默认要显示的值n或语句n
end
案例:查询员工的工资情况
如果工资>20000,显示A级别
如果工资>15000,显示B级别
如果工资>10000,显示C级别
否则,显示D级别
1 selectsalary 原始工资2 case
3 when salary > 20000 then 'A'
4 when salary > 15000 then 'B'
5 when salary > 10000 then 'C'
6 else 'D'
7 end as工资级别8 from employees;
6.分组函数
用于统计使用,又称之为聚合函数或统计函数或组函数
sum
求和
avg
求平均值
max
最大值
min
最小值
count
计算个数
sum、avg一般用于处理数值型,max、min、count可以处理任何类型
以上分组函数全部忽略null值,null不参与它们的运算
可以和distinct搭配实现去重的运算
select count(字段) from 表名; //计算非null的行数
select count(*) from 表名; //一般用于统计表的行数(带null)
select count(7) from 表名; //相当于在表中加了一列常量值,一般用于统计行数