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;        #複製某表插入

 

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