show character set; #查看支持的字符集
show collation; #显示字符集排序规则
show create database test\G; #查看库所支持的字符集
show table status from test like 'TB1'; #查看表所支持的字符集
show full columns from 表名; #查看表中所有列的字符集
show databases; #显示所存有的库
show tables; #显示库里所存有的表
show engines; #显示数据支持的数据引擎
show variables like '%storage_engine%'; #显示当前库所使用的存储引擎
show global variables like '%log%'; 查看日志的全局设置信息
show table status; #显示当前库中所表的结构相关信息
show table status like 'user'\G; #显示匹配到的表的结构相关信息,\G选项表纵向查看
select user,host,password from user; #查看用户名密码信息
show master status; #显示正在使用的二进制日志
SELECT LAST_INSERT_ID(); #执行mysql内置函数,都用SELECT 函数名;
mysqld --help -verbose #显示mysql支持的所有命令(非交互模式执行命令)
show global variables like 'sql_mode'; #显示数据库用的sql模型
sql_mode是个很容易被忽视的变量,默认值是空值(5.6),在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入。在生产环境必须将这个值设置为严格模式,所以开发、测试环境的数据库也必须要设置,这样在开发测试阶段就可以发现问题;5.6的sql_mode和5.7的sql_mode不一样,故升级可能导致有些sql不能用。
各种sql_mode的含义
- ONLY_FULL_GROUP_BY:对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中
- NO_AUTO_VALUE_ON_ZERO:该值影响自增长列的插入。默认设置下,插入0或NULL代表生成下一个自增长值。如果用户 希望插入的值为0,而该列又是自增长的,那么这个选项就有用了。
- STRICT_TRANS_TABLES:在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
- NO_ZERO_IN_DATE:在严格模式下,不允许日期和月份为零
- NO_ZERO_DATE:设置该值,mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告。
- ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如 果未给出该模式,那么数据被零除时MySQL返回NULL
- NO_AUTO_CREATE_USER:禁止GRANT创建密码为空的用户
- NO_ENGINE_SUBSTITUTION:如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常.
- PIPES_AS_CONCAT:将"||"视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似.
- ANSI_QUOTES:启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符
SELECT @@GLOBAL.SQL_MODE; #查看服务器sql_mode,@@表示引的服务器变量,单个@是用户自定义变量
SET GLOBAL | SESSION 变量名='VALUE'; #设置变量值,更改会话,只对当前会话有效,全局的,当前无效
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [create_specification] ...
create_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name #创建数据库,IF NOT EXISTS表示没这个数据库的时候,db_name创建的数据库,在其后面还可以跟上特殊的选项, 设置字符集,排序规则
ALTER {DATABASE | SCHEMA} db_name [alter_specification] #修改数据库
alter_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
DORP {DATABASE | SCHEMA} [IF EXISTS] db_name
CREATE TABLE [IF NOT EXTSTS] tb_name (col_name col_defination,constraint) #直接创建表,
例:CREATE TABLE TB1 (id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name CHAR(20) NOT NULL,age TINYINT NOT NULL)
create table testtb select * from TB1; #以其它表为模版,查询创建,这种表的格式定义可能会与原表不同,但会复制原表数据
create table testtb like TB1; #以其它表为模版,模仿创建,这种表的格式定义与原表想同,但不会复制原表数据
SELECT [DISTINCT] * FROM TB_NAME WHERE #[DISTINCT]表示查询出来的同一值只显示一次
SELECT * FROM TB_NAME WHERE NAME RLIKE '条件'; #RLIKE 支持正则表达式
SELECT * FROM TB_NAME WHER AGE IN (18,19,22); #IN() 匹配符合IN括号里的值
insert into tb_name (col_name,...) VALUES ({expr | DEFAULT},...),(...),... #向表中插入内容
INSERT INTO ProductType (product_type, sum_sale_price, sum_purchase_price)
-
SELECT product_type, SUM(sale_price), SUM(purchase_price)
-
FROM Product GROUP BY product_type; #复制某表插入