1. 注意
1. is is 关键字只能给 NULL 用 is null 判断是否 为空 2. DESTINCK 去充关键字,使用该关键字可以去除重复项 3. group by,order by 支持字段和函数 分组查询和排序的根据值需在查询列表中出现 排序查询desc降序,asc升序 4. in in关键字用于判断是否包含 where col in(a,b,...) 5. between num and num 用于判断区间,小值在前,大值在后 6. desc desc table 显示表结构 7.数据类型 有符号无符号数据类型的值严格控制,否则报错 日期类型、字符类型的值需要用单引号括起来 8. 查看索引表 SHOW INDEX FROM表名 默认有主键 外键 唯一 9. into使用 into可以给在查询时变量或字段赋值 select 字段1 into 变量1 ,字段1 into 变量1 ,... select 字段1,字段2 , ... into 变量1,变量2, ... 10. delimiter 结束标记 delimiter 后面的所有字符都会被设置为结束标记 自定义mysql的结束标记,默认为分号 在创建存储过程时会使用,因为存储过程中的sql 语句必须要用分号,分号又会结束存储过程,所以 需要修改,修改是全局的不夸重启,存储过程中使 用完可以改回来 11. 存储过程 存储过程不能修改,想要实现修改功能需要删除 原有存储过程,添加修改后存储过程 12. char(m),varchar(m) 当中的m受字符集影响,不同的字符集的长度不同,utf8mb4一个字符四个字节 13. length()和 char_length() 获取字符长度使用char_length(),应为length计算的是字节长度,字节受字符集影响,char_lenght计算的是字符长度 14. truncate 表名 删除表内所有数据,比delete语句快,但是不能删除带有外键约束的表
2. 函数
2.1 判断
1. IFNULL(a,b) 判断 a 是否为空,如果为空就返回 b 如果不为空就 返回 a
2.2 字符函数
1. CONCAT(a,b,...) 连接字符串 a.b 或者跟多 2. UPPER(a) 将字符串 a 转化成大写 3. LOWER(a) 将 a 转化为小写 4. Substr(str,index) Substring(str,index) 截取字符串,从 index 位置开始 5. Substr(str,sta,count) Substring(str,sta,count) 截取字符串,从 sta 位置(包含前一位 sta),截 count(长度,或个数)个字符,这里的 sta 为光标位 置 6. INSTR(str,substr) 返回 substr 在 str 的起始位置 7. TRIM(str) 去掉 str 中前面的空格 8. TRIM(a FROM str) 去掉 str 前面的 a 9. LPAD(str,len,padstr) str 不足 len 长度,用 padstr 左补齐,str>len 左截>取 str 为 len 10. RPAD(str,len,padstr) str 不足 len 长度,用 padstr 右补齐,str>len 右截>取 str 为 len 11. REPLACE(str,a,b) 将 str 中的 a 替换成 b 12. cast('abc',binary); 将char的值以二进制显示
2.3 数学函数
1. ROUND(a) 四舍五入 a 2. ROUND(a,len) 四舍五入,保留 len 位,不递增进位,例如 1.445 保留 1 位,得 1.4 3. CEIL(a) 向上取证,即取≥a 的最小整数(1.0 取 1,1.1 取 1) 4. FLOOR(a) 向下取证,取≤a 的最大整数(1.0 取 1,1.9 取 1) 分正负 5. TRUNCATE(a,len) 直接将 a 截取保存 len 位小数(1.44,1 得 1.4) 6. rand()*n 随机数
2.4 日期函数
1. NOW() 返回当前日期+时间 2. CURDATE() 返回当前日期,不包含时间 3. CURTIME() 返回当前时间,不包含日期 4. YEAR(Date)、MONTH(Date)等 获取指定部分,例如年月日时分秒(year(now())) 5. str_to_date(datestr,dateformat) 将日期格式字符转换为日期格式,datestr 为日期字 符串,dateformat 为该串的格式(str_to_date('9-13.1999','%m-%d.%Y)) 6. date_formate(date,dateformat) 将日期格式转换为指定的日期字符串 7. DATEDIFF(date1,date2) 求两个日期相差天数
2.5 流程控制函数
1. IF(expr1,expr2,expr3)函数 expr1条件表达式,真返回expr2,假返回expr3,用于任何地方 2. case 字段 | 表达式 | 变量 when 常量1 then 要显示的值或语句; when 常量2 then 要显示的值或语句; ... end case; 类似于switch case 3. case when 条件1 then 要显示的值或语句; when 条件1 then 要显示的值或语句; ... end 相当于于多重if
2.6 分组函数
1. sum()求和,只支持数值型 2. avg()平均值,只支持数值型 3. max()最大,支持任何类型 4. min()最小,支持任何类型 5. count()计数,支持非空的值,求个数,参数可以为 常量值 MyISAMB:count(*)效率最高 InnoDB:参数为常量值的效率高于字段,因为字段 要考虑null,*=常量值 所有分组函数忽略null,支持distinct去重关键字
3. 查询(DQL)
3.1分组查询
当分组查询需要在分组后筛选需要用HAVING关 键字 ,分组函数查询的值为筛选条件肯定放在 HAVING关键字后 select count(*),colname from table group by colname HAVING count(*) > 2 查询按照colname分组的记录,每一组的记录条数>2的记录
3.2连接查询
两张表联合查询时,没有有效条件时会出想笛卡尔 乘积现象,即记录条数为表一条数*表二条数 1. 分类 按年代 sql92标准:仅支持内连接 sql99标准(推荐):支持内连接+外链接(左+右)+交 叉 按功能 内连接: 等值连接 非等值连接 自连接 外链接: 左外链接 右外连接 全外连接 交叉连接 2. sql92标准 等值连接 select t1.*,t2.* from t1,t2 where t1.col=t2.col; 可分组,可排序,可添加约束 非等值连接 select t1.*,t2.* from t1,t2 where t1.col [<,!=,>,between and] t2.col; 可分组,可排序,可添加约束 自连接 相当于等值连接,有特殊值才可用,常用语子父 级,上下级等同类依赖 select t1.*,t2.* from t1 as t1 ,t1as t2 where t1.col = t2.col; 可分组,可排序,可添加约束 3. sql99标准 select 查询列表 from table1 别名 [连接类型] join table2 别名 on 连接条件 ~where 约束条件 ~gropy by 分组条件 ~HAVING 分组后筛选条件 ~order by 排序条件 排序类型 ~标注为可选可不选 内链接 用于查询有交集部分,没有不显示 select 查询列表 from table1 别名 inner join table2 别名 on 连接条件 ~where 约束条件 ~gropy by 分组条件 ~HAVING 分组后筛选条件 ~order by 排序条件 排序类型 ~标注为可选可不选 等值连接与非等值连接的差别在于连接条件判断 自连接用于子父级,上下级等同类依赖关系 外连接:左连接、右链接 用于查询一个表有,另一个表没有,没有返回null 特点: 外连接的查询结果为主表中的所有记录 如果从表有匹配值,显示匹配值 如果从表没有匹配值,显示null 左外连接:left join 左为主表 右外连接:right join 右边为主表 左外和右外交换两个表的顺序可以实现相同效果 select 查询列表 from table1 别名 [left,right] join table2 别名 on 连接条件 ~where 约束条件 ~gropy by 分组条件 ~HAVING 分组后筛选条件 ~order by 排序条件 排序类型 ~标注为可选可不选 全外连接 不仅能查交集,从表没在主表中出现的记录也能查 主表有从表没有不显示 select 查询列表 from table1 别名 FULL OUTER join table2 别名 on 连接条件 ~where 约束条件 ~gropy by 分组条件 ~HAVING 分组后筛选条件 ~order by 排序条件 排序类型 ~标注为可选可不选 交叉连接 笛卡尔乘积表, select 查询列表 from table1 别名 CROSS join table2 别名 on 连接条件 ~where 约束条件 ~gropy by 分组条件 ~HAVING 分组后筛选条件 ~order by 排序条件 排序类型 ~标注为可选可不选
3.3 子查询
出现在其他语句的select语句,叫做子查询或者内查询 可以在增删改查中使用 1. 分类 按查询位置 select | update | delete后 仅支持标量子查询 from后 支持表子查 where或having后 标量子查询(主要) 列子查询(主要) 行子查询 exists后(相关子查询) 按结果集的行列数 标量子查询(结果只有一行一列) 行子查询(一行多列) 列子查询(一列多行) 表子查询(多行多列)
3.4 分页查询
select 查询列表 from 表名1 别名 ~连接类型 join 表名2 别名 ~on 连接条件 ~where 约束条件 ~gropy by 分组条件 ~HAVING 分组后筛选条件 ~order by 排序条件 排序类型 limit offset(起始索引,从0开始),size(每一页条数) ~标注为可选可不 查第n页,条数为size limit (page-1)*size
3.5 联合查询
union 联合 合并 select t1.*,t2.* from t1 as t1 ,t1 as t2 where t1.col = t2.col union [all] select t1.*,t2.* from t1 as t1 ,t1as t2 where t1.col = t2.col union ... union... ... 应用场景 要查询的结果来自多个表,且多个表没有直接的链接关系 注意事项 要求多条查询语句的插叙列数要一致 并且每条列数类型要一样 它会去除重复项,想要保存添加all关键字
3.6 查询系统信息
查询系统相关信息 (1)select database():查看数据库名需进入数据库 (2)select version():查看数据库版本 (3)select now():查看数据库当前时间 (4)show databases;查看所有数据库
4.DML(数据操作语言)
ps:SQL语句从from开始加载的
4.1插入语句
insert [into] 表明(列名1,列名2,列名3,...) values(值1,值2,值3,...), (值1,值2,值3,...),...; 确保插入的值和列的类型保持一致,数量一致,不能为null的值必须有值,支持插入多行,逗号隔开,支持子查询,能实现多行 insert 表名 set 列1=值1,列2=值2,... 确保插入的值和列的类型保持一致,不支持多行
4.2修改语句
update 表名 set 列2=新值,列2=新值,... where 筛选条件 添加筛选条件可实现多行修改 update 表1 别名 inner | left | right join 表2 别名 on 连接条件 set 列=值,... where 筛选条件 多表修改
4.3 删除语句
单表删除 delete from 表名 where 筛选条件 多表删除 sql92 delete 表名1 别名,表2 别名,... from 表1,表二,... where 连接条件 sql99 delete 表名1 别名,表2 别名... from 表1,表二,... inner | left | right join 表2 别名 on 连接条件 where 连接条件 truncate table 表名; 不允许加where,整表删除,清空,可清空自增
4.4 DDL(库和表的管理)
1.库的管理 创建数据库 creat database [if not exists] 库名; 修改数据库名 rename database 库名 to 新库名 更改字符集 alter darabase 库名 character set 字符集 删除库 drop database if exists books 2.表的管理 ALTER TABLE 表名 ADD | DROP | MODIFY | CHANGE COLUMN 列名 [列类型 约束]; 显示表结构 desc 表名 创建新表 creat table 表名( 列名 类型 [(长度) 约束], 列名 类型 [(长度) 约束], 列名 类型 [(长度) 约束]) 注:[]该括号里面为可选值 修改列名 ALTER TABLE 表名 CHANGE COLUMN 列名 新列名 类型; 添加新列 ALTER TABLE 表名 ADD COLUMN 列名 DOUBLE: 删除列 ALTER TABLE 表名 DROP COLUMN [IF EXISTS] 列名; 修改表名 ALTER TABLE 表名 RENAME TO 新表名: 删除表 DROP TABLE [IF EXISTS] 表名; 复制表,仅复制表结构到新表 CREATE TABLE 新表名 LIKE 目标表名; 复制表结构和数据到新表,筛选列表可以实现复制指定数据,查询列表实现指定列,可以是 *号,只要结构不要数据筛选条件为假即可,例如false,0,1=2 CREATE TABLE 新表名 SELECT 查询列表 FROM 目标表名 WHERE 筛选条件; ALTER TABLE 表名 DROP 约束条件(唯一约束用INDEX) 删除外键时后面需要加 索引表中外键索引名 3.标识列(自增长列) 可以不用手动插入值,系统提供默认色序列值 在约束添加后添加AUTO_INCREMENT关键字即可, 插入时给null即可,也可以赋值,必须跟key搭配,一 个表至多一个,类型必须是数值型,修改时支持修改 约束的写 设置步长 SET auto_increment_incrwment=步长值
5.约束(数据完整性)
1.常见约束 一种限制,用于限制表中数据,为了保证表中数据的准确性和可靠性,check约束mysql不支持,但不报错 NOT NULL 非空约束 | 不能为空 | DEFAULT 默认约束 | 设置默认值 PRIMARY KEY 主键约束 | 不能为空 唯一性 UNIQUE 唯一约束 | 唯一性 可以为空 CHECK 检查约束 | 限制范围 FOREING KEY 外键约束 | 限制两个表的关系 外键约束需要加 REFERWNCES 表名(外键) 外键约束两个列名字可以不同,但是类型需要相同,被引用的键必须是个key,例如主键、外键、唯一键删除时先删从表,才能删除主表PRIMARY KEY(列1,列2)组合主键 列级约束 六大约束语法上都支持 表级约束 除了非空,默认,其他都支持 creat table 表名( 列名 类型 [(长度) 约束], 列名 类型 [(长度) 约束], 列名 类型 [(长度) 约束], CONSTRAINT 约束名 约束类型(列), CONSTRAINT 约束名 约束类型(列), CONSTRAINT 约束名 约束类型(列), ... , ... [该括号里面为可选值] mysql主键的约束名不可以自定义,但写了不报错,其他不写的时候默认有约束名 表姐约束可以添加联合主键,列级约束不行 修改表时添加约束修改约束 列级约束 ALTER TABLE 表名 MODIFY | ADD COLUMN 列名 类型 约束类型 表级约束 ALTER TABLE 表名 ADD | MODIFY 约束类型(列名) 用ADD关键字可以设置约束名 ADD CONSTRINT 约束名 删除约束 ALTER TABLE 表名 MODIFY COLUMN 列名 类型;
6.事务管理
6.1 TCL(事物控制语言)
Transaction Control Language 一个或一组sql语句组成一个执行单元,要么全执行, 要么都不执行,发生错误会回滚
6.2 事物的ACID属性
1.原子性(Atonmicity) 事务是一个不可分割的工作单位,事务的操作要么都 发生,要么都不发生 2.一致性(Consistency) 事务必须使数据库从一个一致状态转为另一个一致状 态 3.隔离性(Isolation) 事务不被其他事务干扰,并发执行时是隔离的,首隔 离机制影响 4.持久性(Duarbility) 事务一但提交,对数据库中数据的改变是永久的,不 可撤销
6.3 事务的创建
1.隐式事务 事务没有明显的开始和结束标记,比如insert updata delete语句,他们的autocommit(自动提交)是开启的 2.显示事务 具有明显的开始和结束的标记 前提必须先设置自动提交为禁用 SET AUTOCOMMIT=0;每一次都要设置 开始一个事务 SET AUTOCOMMIT=0; [START TRANSACTION;]可选 语句1; 语句2; ...; commit;提交 | rollback;回滚
6.4 事务并发
同时运行多个事务,访问相同的数据时,没有采取必要 的隔离机制,导致的并发问题 1.脏读 对于两个事务T1,T2,T1读取了已经被T2更新但还没 有被提交的数据时,T2回滚,T1的数据就是无效的 2.不可重复读 对于两个事务T1,T2,T1读取了一个字段,T2更新 了,T1再次读取时就不同了 3.幻读 对于两个事务T1,T2,T1读取了一个字段,T2插入了一 些数据,T1再次读取会多出几行 隔离级别 MYSQL有四中隔离级别,默认为REPEATABLE READ 1.读未提交(Read uncommitted) 这种事务隔离级别下,select语句不加锁。 此时,可能读取到不一致的数据,即“读脏 ”。这 是并发最高,一致性最差的隔离级别。 2.读已提交(Read committed): 可避免 脏读 的发生。 在互联网大数据量,高并发量的场景下,几乎 不会 使用 上述两种隔离级别。 3.可重复读(Repeatable read)MySql默认隔离级别。 可避免 脏读 、不可重复读 的发生。 4.串行化(Serializable ): 可避免 脏读、不可重复读、幻读 的发生。 设置当前数据库隔离级别 set session transection isolation level 隔离级别; 设置全局数据库隔离级别 set global transection isolation level 隔离级别; 查看隔离级别 select @@tx_isolation; 设置回滚点 savepoint 回滚点名; 回到回滚点 rollback 回滚点名;
6.5 delete 与 truncate在事务中的区别
delete支持回滚,truncate不支持
7 视图
7.1介绍
虚拟表,和普通表一样 mysql5.1出现的新特性,是通过表动态生成的数据 一般用于复杂的查询
7.2 视图的创建与使用
create view 视图名 AS select 查询列表 from table1 别名 [连接类型] join table2 别名 on 连接条件 ~where 约束条件 ~gropy by 分组条件 ~HAVING 分组后筛选条件 ~order by 排序条件 排序类型 ~标注为可选可不选 查看视图数据 select * from 视图名;
7.3 视图的修改
方式一 create or repleace view 视图名 AS 查询语句 方式二 alter view 视图名 as 查询语句;
7.4 视图的删除
drop view 视图名1,视图名2,...:
7.5 查看视图信息
方式一 desc 视图名; 方式二 show create view 视图名;
7.5 视图的更新(更改数据)
1. 插入数据(同步原始表) insert into 视图名 values(字段1,字段2,...); 2. 更改(同步原式表) update 视图名 set 字段1=值,字段2=值2,...; 3. 删除数据(同步原式表) delete from 视图名 where 筛选条件; 具备以下特点的视图不允许增删改 包含关键字 分组函数,distincat,having,union [all] 常量视图 select语句中有包含子查询 join from 一个不能更新的视图 where子句的子查询引用了from子句中的表
7.6 对比视图和表
视图没有占用物理空间(占用的仅仅是逻辑,并没有为 保存的数据开辟内存),表占用,视图一般不支持更新数据(指的是crud操作),表支持
8 变量
8.1 系统变量
1.说明: 变量由系统提供的,不是用户自定义,属于服务 器层面 2.使用的语法: 查看所有的系统变量 查看会话 | 全局 变量,session为默认可省略 show ~session | global variables; 查看满足条件的部分变量 show ~session | global variables like '%char%'; 查看指定的某个系统变量的值 show ~@@session | @@global .系统变量名 为某个系统变量赋值 方式一 set global | ~session 系统变量名=值; 方式二 set @@global | ~@@session. 系统变量名=值; 3.注意: 如果是全局变量需要加global,如果是会话变量可以加 session或者什么都不加 全局变量可以跨连接,但是不能跨重启,mysql重启 会恢复默认值,针对于所有会话 会话变量仅仅针对于当前会话
8.2 自定义变量
1.说明: 变量是用户自定义的,不是由系统提供的 2.使用步骤: 声明 赋值 使用 3.用户变量 针对于当前会话,相当会话变量,可以放在任何地 方,可以在begin...end里面也可以在外面 声明并初始化(赋值操作符 =或 :=) set @用户变量名 = 值; set @用户变量名 := 值; select @用户变量名 := 值; 赋值 方式一 set @用户变量名 = 值; set @用户变量名 := 值; select @用户变量名 := 值; 方式二 select 字段 into @用户变量名 from 表; 使用用户变量 select @用户变量名 ; 4.局部变量 仅仅用在begin...end里面,并且要在begin下面第一 句,定义事需要限定类型,可选默认值 声明 declare 变量名 类型; declare 变量名 类型 default 值; 赋值(相比于用户变量,没有@符号) 方式一 set 变量名 = 值; set 变量名 := 值; select 变量名 := 值; 方式二 select 字段 into 变量名 from 表;
9 存储过程
9.1 创建与使用
1.含义: 类似于java中的方法 一组预先编译好的sql语句的集合,可理解与批处理 语句 2.好处: 提高代码的复用性 简化操作 减少了编译次数并且减少了和数据库的连接次数, 提高了效率 3.创建语法 delimiter 结束标记 create procedure 存储过程名(参数列表) begin 存储过程体(一组合法的sql语句) end 结束标记 参数列表 参数模式 参数名 参数类型,... 参数模式: in:该参数可以作为输入该参数调用时需传值 out:该参数可以作为输出,可以作为返回值 inout:既可以作为输入,又可以作为输出 4.注意: 如果存储过程体仅仅只有一句话,begin end可以省 略,存储过程体每一条sql语句结束必须要用分号结 尾,存储过程的结尾可以使用delimiter重新设置 delimiter 结束标记 存储过程 结束标记 5.调用: 空参 /*修改结束符*/ delimiter 结束标记 create procedure 存储过程名(inout a int,inout b int) begin sql集合 end 结束标记 /*将结束符修改回分号*/ delimiter ; /*定义变量作为参数也接受返回值*/ cal 存储过程名(); 空参存储过程会按顺序执行sql集合,能看到最后一 条sql的结果,最后一个为查询就显示查询结果,插 入修改删除就打印相应的结果,相当与控制台执行 sql集合 带 in参数模式 call 存储过程名(in a int); 跟带空参一样 带out参数模式 带inout参数的存储过程 /*修改结束符*/ delimiter 结束标记 create procedure 存储过程名(in a int,out b int) begin set b=a+10; end 结束标记 /*将结束符修改回分号*/ delimiter ; /*定义变量作为参数也接受返回值*/ set @n=10; set @m=20; /*调用存储过程*/ cal 存储过程名(@n,@m); /*查看变量*/ select @m: 带inout参数的存储过程 /*修改结束符*/ delimiter 结束标记 create procedure 存储过程名(inout a int,inout b int) begin set a=a+b; set b=b*2; end 结束标记 /*将结束符修改回分号*/ delimiter ; /*定义变量作为参数也接受返回值*/ set @n=10; set @m=20; /*调用存储过程*/ cal 存储过程名(@n,@m); /*查看变量*/ select @n,@m: 6.存储过程的删除 语法 drop procedure 存储过程名; 只能删除一个 7.存储过程查看结构 show create procedure 存储过程名; 存储过程不支持修改,想要修改只能删了重新添加
10 函数(自定义函数)
10.1
1.含义: 一组预先编译好的SQL语句集合 2.优点: 1.提高代码的重用性 2.简化操作 3.减少了编译次数并且减少了和数据库服务器的连接次 数,提高了效率 3.跟存储过程的区别 函数只能有一个返回,适合做处理数据后返回一个结果 4.创建语法 CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型 BEGIN 函数体 END 注意: 参数列表: 参数名 参数类型 函数体: 肯定会有return语句,如果没有会报错,如果 return语句没有放在函数体的最后也不报错,但不 建议return值 函数体中只有仅有一句话,则可以省略begin end 使用 delimiter语句可以设置结束标记 5.调用语法 SELECT 函数名(参数列表) 6.查看函数 SHOW CREATE FUNCTION 函数名; 7.删除函数 DROP FUNCTION 函数名;
11 流程结构
11.1 分支结构
1.if函数 功能:实现双分支 语法:IF(表达式1,表达水2,表达式3) 执行顺序; 如果表达式1成立,则if函数返回表达式2的值,否则返回表达式3的值,用于任何地方 2.if结构 if 条件 then 语句; elseif 条件 then 语句; ... end if; 只能用在begin end 中,else可省略 3. case 字段 | 表达式 | 变量 when 常量1 then 要显示的值或语句; when 常量2 then 要显示的值或语句; ... end case; 相当于switch case 4. case when 条件1 then 要显示的值或语句; when 条件1 then 要显示的值或语句; ... end 相当于于多重if
10.2 循环结构
循环控制:只能在begin end 中 iterate类似于continue,leave类似于break; 1.while ~名字 while 循环条件 do 循环体; end while 名字 2.loop ~名字: loop 循环体 end loop 名字 模拟死循环 3.repeat ~名字: repeat 循环体 until 结束循环条件; end repeat !名字; 类似于do while,先执行后判断 leave | iterate 名字;实现所控制的循环体的退出中断
12.常用show命令
--MySQL 常用show命令 show tables或show tables from database_name; -- 显示当前数据库中所有表的名称。 show databases; -- 显示mysql中所有数据库的名称。 show columns from table_name from database_name; 或show columns from database_name.table_name; -- 显示表中列名称。 show grants for user_name; -- 显示一个用户的权限,显示结果类似于grant 命令。 show index from table_name; -- 显示表的索引。 show status; -- 显示一些系统特定资源的信息,例如,正在运行的线程数量。 show variables; -- 显示系统变量的名称和值。 show processlist; -- 显示系统中正在运行的所有进程,也就是当前正在执行的查询。大多数用户可以查看他们自己的进程,但是如果他们拥有process权限,就可以查看所有人的进程,包括密码。 show table status; -- 显示当前使用或者指定的database中的每个表的信息。信息包括表类型和表的最新更新时间。 show privileges; -- 显示服务器所支持的不同权限。 show create database database_name; -- 显示create database 语句是否能够创建指定的数据库。 show create table table_name; -- 显示create database 语句是否能够创建指定的数据库。 show engies; -- 显示安装以后可用的存储引擎和默认引擎。 show innodb status; -- 显示innoDB存储引擎的状态。 show logs; -- 显示BDB存储引擎的日志。 show warnings; -- 显示最后一个执行的语句所产生的错误、警告和通知。 show errors; -- 只显示最后一个执行语句所产生的错误。 show [storage] engines; --显示安装后的可用存储引擎和默认引擎。