MySQL拓展知识点
1、获取服务器元数据
-- 服务器版本信息
SELECT VERSION()
-- 当前数据库名 (或者返回空)
SELECT DATABASE()
-- 当前用户名
SELECT USER()
-- 服务器状态
SHOW STATUS
-- 查看MySQL5.5服务器配置变量,部分变量即属于全局也属于会话
SHOW GLOBAL VARIABLES #全局系统变量,319条数据
SHOW SESSION VARIABLES #会话系统变量,331条数据
SHOW VARIABLES #331条数据,默认是会话系统变量
-- 查看指定的系统变量
-- 方式一,查看数据库字符集和校对字符集
show variables like 'character_%'
show variables like 'collation_%'
-- 方式二,查看默认的数据库引擎,
SELECT @@session.default_storage_engine
SELECT @@global.default_storage_engine
2、获取表数据约束信息
SELECT * FROM information_schema.`TABLE_CONSTRAINTS` WHERE table_schema = '数据库名' AND table_name = '表名'
3、查看建表语句
SHOW CREATE TABLE 表名;
注意事项
- 标准sql语句中要求列的别名使用双引号括起来、字符串则使用单引号括起来。虽然mysql使用单或双引号都不会报错,尽量别用。
SELECT 1+1 "sum" FROM dual --推荐
SELECT 1+1 sum FROM dual --不使用引号也可以
SELECT 1+1 'sum' FROM dual -- 在oracle中会报错
- 分组函数一般都会和group by联合使用,这也是为什么它被称为分组函数的原因。并且任何一个分组函数(count sum avg max min)都是在group by语句执行结束之后才会执行的。当一条sql语句没有group by的话,整张表的数据会自成一组。
-- 记住一个规则:当一条语句中有group by的话,select后面只能跟分组函数和参与分组的字段。
select job,avg(sal) from emp group by job;
- distinct只能出现在所有字段的最前面,用于对查询结果集的去重。
select ename,distinct job from emp; -- 错误
- limit是sql语句最后执行的一个环节
select 5
...
from 1
...
where 2
...
group by 3:后面只能是select的字段,因为在select之前执行,所以不能使用别名
...
having 4
...
order by 6:后面可以跟任意字段(或字段别名)
...
limit 7
...;
- 如何删除表和清空表中的数据
-- 删除表
drop table 表名; -- 这个通用。
drop table if exists 表名; -- oracle不支持这种写法。
-- 删除大表中的数据(重点)
truncate table 表名; // 表被截断,不可回滚。永久丢失。
- 在MySQL当中,凡是标识符是可以使用飘号括起来的。最好别用,不通用。
CREATE TABLE `user` (
`id` int(11) DEFAULT NULL,
`name` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;