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