一、MySQL指令
1.1、查看当前所有数据库
show databases;
1.2、打开指定库名
use 库名
1.3、查看当前库的所以表
show tables;
1.4、查看其它库的所有表
show tables from 表名
1.5、创建表
create table 表名(
列名 列类型,
列名 列类型,
…………
);
1.6、查看表结构
desc 表名;
1.7、开启数据库
以管理员身份打开命令提示符,输入net start mysql
1.8、关闭数据库
以管理员身份打开命令提示符,输入net stop mysql
1.9、mysql不区分大小写,但建议关键字大写,表名、列明、行名小写
1.10、查看服务器版本号:
select version();
1.11、查看表中的所有成员:
select * from 表名;
1.12、注释:
1) 、单行使用 ‘#’
2、/* 注释 */
1.13 、计算字符长度
select length(‘hhh’);
结果是3.
二、DDL查询语句
2.1、查询语句
①、选中字段之后,按下F12之后,便会将该选中的字段进行格式化。
②、按下F9或者点击运行,便会执行选中的字段。
③、尽量在开始处,执行SQL语句:use 库名。
④、在字段上,着重号可以加也可以不加,着重号是为了区别输入的字段到底是关键字还是普通的字段名。
2.2、查询语句—修改字段
2.3、去重关键字和‘+’作用
2.4、拼接字符关键字–CONCAT
2.5、IFNULL语句
2.6、按照表达式查找
2.7、按照逻辑语句查找
2.8、模糊查找----like
带有ESCAPE关键字的转义字符可以可以是任意的
2.9、模糊查找—BETWEEN
关键字BETWEEN要点:
(1) 包含了边界值
(2) 边界值不能颠倒
2.10、模糊查找—IN
要点:
(1) 关键字IN列表的值类型必须统一或兼容(‘123’—>123)
(2) 使用关键字IN提高语句简洁
(3) 关键字IN列表中的值,不能带有通配符
2.11、模糊查找—IS NULL
IS NULL:表示不包括
IS NOT NULL :表示包括在内
<>、=不能用于判断NULL值,只能使用IS NULL 或IS NOT NULL
2.12、安全等于 <=>
安全等于 vs IS NULL / IS NOT NULL
<=>:既可以比较NULL值,也可以比价普通值,但是阅读性低
IS NULL / IS NOT NULL:只能比较NULL值,阅读性高
2.13、计算时间差天数 ---- DATEDIFF
三、数据库总结
3.1、数据库事务
是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。
四、排序语句
注意:ORDER BY语句位置放在最后面查询语句的后面,limit语句除外。
执行顺序:FROM -> WHERE -> SELECT -> ORDER BY
4.1 排序语句— ORDER BY
注意:排序语句:ORDER BY
默认情况下,按照从小到大顺序排序;或者可以输入ASC从小到大排序;输入DESC按照从大到小排序。
4.2 按照筛选条件排序
4.3 按照表达式排序
4.4 按照取别名排序
注意:取别名可以是 AS ‘别名’;也可以是 空格 + 别名。
在本地编译器编译之后,发现只能是空格的别名,可以用来排序。关键字AS的别名排序时,会报错。
4.5、按照函数排序
4.6、按照多个字段排序
注意:多个字段排序,优先给第一个字段排序,以第一个字段为标准排序
五、常见函数
5.1、函数概述
注意:
(1)函数概念:
函数:表示将一组逻辑语句封装在一个方法体内,对外暴露方法名
(2)调用
SELECT 函数名(实参列表) 【FROM 表】
(3)分类
①单行函数
例:CONCAT 、 LENGTH 、DISTINCT,传入一个值,返回一个值
②组合函数
功能:做统计使用,,传入一组函数,返回一个值。又称为聚合函数、组函数、统计函数。
5.2、单行函数
5.2.1 字符函数
5.2.1.1 查看字符字节数—LENGTH
SELECT LENGTH( 字符 );
5.2.1.2 查看当前字符所有类型—VARIABLES
SHOW VARIABLES LIKE ‘%char%’ ;
5.2.1.3 拼接字符—CONCAT
SELECT CONCAT ( 字符,字符 );
5.2.1.4字符改变字符大、小写— UPPER 、LOWER
SELECT UPPER( 字符 ); 将字符改为大写输出
SELECT LOWER( 字符 ); 将字符改为小写输出
5.2.1.5截取字符— SUBSTR / SUBSTRING
(1) 截取从指定字符后面的所有字符
(2) 截取从指定字符开始的n个字符
(3) 姓名首字母大写,其他字母小写,然后拼接
5.2.1.6返回子字符串第一次出现的索引— INSTR
(1) 获取子字符串第一次出现的索引,如果没有找到,则返回0
5.2.1.7去掉字符串前后空格— TRIM
(1) 如果需要去掉字符串前后的空格,则直接输入字符串即可
(2) 如果需要去掉字符串前后指定的字符
5.2.1.8左填充指定长度的字符— LPAD
(1) 填充的字符大于原字符,则显示原子符+填充字符
(2) 填充的字符小于原字符,则显示原子符-填充字符数
5.2.1.9右填充指定长度的字符— RPAD
(1) 填充的字符大于原字符,则显示原子符+填充字符
(2) 填充的字符小于原字符,则显示原子符-填充字符数
5.2.1.10替换字符— REPLACE
(1) 替换单个指定字符
(2) 替换多个指定字符
5.2.2 数学函数
5.2.2.1四舍五入— ROUND
(1) 四舍五入整数
(2) 四舍五入,保留1位小数
5.2.2.2向上取整— CEIL
注意:得到的结果就是大于等于改参数的整数
5.2.2.3向上取整— FLOOR
注意:得到的结果就是小于等于改参数的整数
5.2.2.4取余— MOD
注意:MOD函数与%是一样的。
取余计算公式:MOD(a,b) ===> a – a / b * b
5.2.2.5截断— TRUNCATE
注意:TRUNCATE函数截取数值的小数后面的位数
注意:如果小数后面的个数不够,则0补足
5.2.3日期函数
5.2.3.1获取当前日期,包含时间 — NOW
5.2.3.2获取当前日期,不包含时间 — CURDATE
5.2.3.3获取当前时间,不包含日期 — CURTIME
5.2.3.4获取日期的年、月、日、时、分、秒 — YEAR……
查询表中员工入职年份
使用英文显示月份—MONTHNAME
5.2.3.5将字符串日期格式转换成数值格式—STR_TO_DATE
5.2.3.6将日期转换成字符格式—DATE_FORMAT
5.2.3.7时间格式表
5.2.4 流程控制函数
5.2.4.1条件判断语句 — IF
查找有奖金和没有奖金的员工,分别给出批语(IS NULL判断奖金率为NULL)
5.2.5 CASE ----(类似switch)
CASE 要判断的字段和表达式
WHEN 常量1 THEN 要显示的值1或语句1
WHEN 常量2 THEN 要显示的值1或语句2
WHEN 常量3 THEN 要显示的值1或语句3、
……
ELSE 要显示的值n或语句n
END ;
5.2.6 CASE ----多重if
CASE
WHEN 常量1 THEN 要显示的值1或语句1
WHEN 常量2 THEN 要显示的值1或语句2
WHEN 常量3 THEN 要显示的值1或语句3、
……
ELSE 要显示的值n或语句n
END ;
5.3、分组函数
功能:用作统计使用,又被称为聚合函数,或统计函数或组函数
分类:sum求和; avg平均值; max最大值;min最小值;count计算个数
特点:
(1)、sum 、avg一般用于处理数值型
(2)、max、min、count用于处理任何类型
(3)、以上分组函数都可以忽略null值
(4)、可以和distinct函数搭配,实现去重
(5)、在MYISAM存储引擎下,COUNT()的效率最高;在INNODB的存储引擎下,COUNT()和COUNT(1)的效率差不多,比COUNT(字段)效率高
(6)、和分组函数一同查询的字段要求是GROUND BY后的字段
5.4、分组查询
使用GROUND BY字句将表中的数据分钟若干组
SELECT column,ground_function(column)
FROM table
[WHERE condition ]
[GROUND BY group_by_expression]
[ORDER BY column];
明确:WHERE一定要放在FROM后面
特点:
(1)、分组查询中的筛选条件:
数据源 位置 关键字
分组钱筛选: 原始表 group by字句前面 where
分组后筛选: 分组后的结构集 group by字句后面 having
(2)、分组函数做条件肯定是放在having字句中
(3)、能用分组前筛选的,优先使用分组前筛选
(4)、group by字句支持单个字段,多个字段分组(多个字段之间用逗号隔开,没有顺序要求)
5.4.1 HAVING ---- 在GROUP BY后的筛选条件
5.6、连接查询
1、按年代分类:
SQL192标准:仅仅支持内连接
SQL199标准【推荐】:支持内连接+外连接(左外和右外) +交叉连接
2、按功能分类:
内连接:
等值连接
非等值连接
自连接
外连接:
左外连接
右外连接
全外连接
交叉连接
5.6.1 等值连接
为表取别名,提高语句的简洁性。
注意:如果为表取别名,查询的字段就不能使用原来的表名去限定。
特点:
1、 多表等值连接的结果是几个表的交集
2、 N表连接,至少需要n-1个连接条件
3、 多表的顺序没有要求
4、 一般需要为表取别名