mysql基础常用命令

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)

  1. SELECT product_type, SUM(sale_price), SUM(purchase_price)

  2. FROM Product GROUP BY product_type;        #复制某表插入

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章