資料庫-Mysql語句
- 2020 年 3 月 29 日
- 筆記
Mysql語句
不定時更新
1.資料庫相關的語句
/* 資料庫操作 */ ------------------ -- 啟動MySQL net start mysql -- 接與斷開伺服器 mysql -h 地址 -P 埠 -u 用戶名 -p 密碼 -- 跳過許可權驗證登錄MySQL mysqld --skip-grant-tables -- 修改root密碼,密碼加密函數password() update mysql.user set password=password('root'); -- 顯示哪些執行緒正在運行 SHOW PROCESSLIST -- 查看系統變數及其值 SHOW VARIABLES -- 查看當前資料庫 select database(); -- 顯示當前時間、用戶名、資料庫版本 select now(), user(), version(); -- 創建庫 create database[ if not exists] 資料庫名 資料庫選項 資料庫選項: CHARACTER SET charset_name COLLATE collation_name -- 查看已有庫 show databases[ like 'pattern'] -- 查看當前庫資訊 show create database 資料庫名 -- 修改庫的選項資訊 alter database 庫名 選項資訊 -- 刪除庫 drop database[ if exists] 資料庫名 同時刪除該資料庫相關的目錄及其目錄內容
2.表的相關語句
/* 表的操作 */ ------------------ -- 創建表 create [temporary] table[ if not exists] [庫名.]表名 ( 表的結構定義 )[ 表選項] 每個欄位必須有數據類型 最後一個欄位後不能有逗號 temporary 臨時表,會話結束時表自動消失 對於欄位的定義: 欄位名 數據類型 [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY] [COMMENT 'string'] -- 表選項 -- 字符集 CHARSET = charset_name 如果表沒有設定,則使用資料庫字符集 -- 存儲引擎 ENGINE = engine_name 表在管理數據時採用的不同的數據結構,結構不同會導致處理方式、提供的特性操作等不同 常見的引擎:InnoDB MyISAM Memory/Heap BDB Merge Example CSV MaxDB Archive 不同的引擎在保存表的結構和數據時採用不同的方式 MyISAM表文件含義:.frm表定義,.MYD表數據,.MYI表索引 InnoDB表文件含義:.frm表定義,表空間數據和日誌文件 SHOW ENGINES -- 顯示存儲引擎的狀態資訊 SHOW ENGINE 引擎名 {LOGS|STATUS} -- 顯示存儲引擎的日誌或狀態資訊 -- 數據文件目錄 DATA DIRECTORY = '目錄' -- 索引文件目錄 INDEX DIRECTORY = '目錄' -- 表注釋 COMMENT = 'string' -- 分區選項 PARTITION BY ... (詳細見手冊) -- 查看所有表 SHOW TABLES[ LIKE 'pattern'] SHOW TABLES FROM 表名 -- 查看錶機構 SHOW CREATE TABLE 表名 (資訊更詳細) DESC 表名 / DESCRIBE 表名 / EXPLAIN 表名 / SHOW COLUMNS FROM 表名 [LIKE 'PATTERN'] SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern'] -- 修改表 -- 修改表本身的選項 ALTER TABLE 表名 表的選項 EG: ALTER TABLE 表名 ENGINE=MYISAM; -- 對錶進行重命名 RENAME TABLE 原表名 TO 新表名 RENAME TABLE 原表名 TO 庫名.表名 (可將表移動到另一個資料庫) -- RENAME可以交換兩個表名 -- 修改表的欄位機構 ALTER TABLE 表名 操作名 -- 操作名 ADD[ COLUMN] 欄位名 -- 增加欄位 AFTER 欄位名 -- 表示增加在該欄位名後面 FIRST -- 表示增加在第一個 ADD PRIMARY KEY(欄位名) -- 創建主鍵 ADD UNIQUE [索引名] (欄位名)-- 創建唯一索引 ADD INDEX [索引名] (欄位名) -- 創建普通索引 ADD DROP[ COLUMN] 欄位名 -- 刪除欄位 MODIFY[ COLUMN] 欄位名 欄位屬性 -- 支援對欄位屬性進行修改,不能修改欄位名(所有原有屬性也需寫上) CHANGE[ COLUMN] 原欄位名 新欄位名 欄位屬性 -- 支援對欄位名修改 DROP PRIMARY KEY -- 刪除主鍵(刪除主鍵前需刪除其AUTO_INCREMENT屬性) DROP INDEX 索引名 -- 刪除索引 DROP FOREIGN KEY 外鍵 -- 刪除外鍵 -- 刪除表 DROP TABLE[ IF EXISTS] 表名 ... -- 清空表數據 TRUNCATE [TABLE] 表名 -- 複製表結構 CREATE TABLE 表名 LIKE 要複製的表名 -- 複製表結構和數據 CREATE TABLE 表名 [AS] SELECT * FROM 要複製的表名 -- 檢查表是否有錯誤 CHECK TABLE tbl_name [, tbl_name] ... [option] ... -- 優化表 OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... -- 修復表 REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM] -- 分析表 ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
3.數據的相關語句
/* 數據操作 */ ------------------ -- 增 INSERT [INTO] 表名 [(欄位列表)] VALUES (值列表)[, (值列表), ...] -- 如果要插入的值列表包含所有欄位並且順序一致,則可以省略欄位列表。 -- 可同時插入多條數據記錄! REPLACE 與 INSERT 完全一樣,可互換。 INSERT [INTO] 表名 SET 欄位名=值[, 欄位名=值, ...] -- 查 SELECT 欄位列表 FROM 表名[ 其他子句] -- 可來自多個表的多個欄位 -- 其他子句可以不使用 -- 欄位列表可以用*代替,表示所有欄位 -- 刪 DELETE FROM 表名[ 刪除條件子句] 沒有條件子句,則會刪除全部 -- 改 UPDATE 表名 SET 欄位名=新值[, 欄位名=新值] [更新條件]