1. 創建數據庫: CREATE DATABASE db_test;
2. 刪除數據庫: DROP DATABASE db_test;
3. 選擇數據庫: USE db_test;
4. 創建數據表:CREATE TABLE IF NOT EXISTS table_test (column_id INT UNSIGNED AUTO_INCREMENT, column_name VARCHAR(100), submission_date DATE, PRIMARY KEY (column_id))ENGINE=InnoDB DEFAULT CHARSET=utf8;
5. 刪除數據表:DROP TABLE table_test;
6. 插入數據:INSERT INTO table_test (column_id, column_name, submission_date) values (666, 'get', '2018-09-03');
7. 查詢數據: SELECT column_id, column_name, submission_date FROM table_test WHERE column_id=666 AND column_name='get';
8. 修改或更新:
同時更新一個或者多個字段:UPDATE table_test SET column_name='got' WHERE column_id=666;
9. 刪除數據: DELETE FROM table_test WHERE [~]; // 如果沒有指定where 表中的所有數據將被刪除
10. 使用LIKE模糊查詢: SELECT * FROM table_test WHERE column_name LIKE '%t';
11. UNION操作:用於連接兩個以上的select語句的結果組合到一個結果集合中,多個SELECT語句會刪除重複的數據
SELECT country from Websites UNION SELECT country FROM apps ORDER BY country;
12. 分組:GROUP BY語句根據一個或者多個列對結果進行分組,在分組的列上我們可以使用COUNT SUM AVG等函數。
SELECT name,COUNT(*) FROM employee GROUP BY name;
WITH ROLLUP 可以實現在分組統計數據基礎上再進行相同的統計
SELECT name,SUM(singin) as singin_count FROM employee GROUP BY name WITH ROLLUP;
13. 連接:JOIN 按照功能分爲三類:
INNER JOIN:獲取兩個表中字段匹配關係記錄
LEFT JOIN:左連接
RIGHT JOIN:右連接
SELECT a.id, a.author, b.count FROM tb1 a INNER JOIN tb2 b ON a.author=b.author;
14 ALTER命令:
增加字段:ALTER TABLE table_test ADD column_name VARCHAR(30);
刪除字段:ALTER TABLE table_test DROP column_name;
修改字段類型:ALTER TABLE table_test MODIFY column_name VARCHAR(100);
修改默認值:ALTER TABLE table_test ALTER column_name SET DEFALUT 'got';
修改表名稱:ALTER TABLE table_test RENAME TO alter_test;
15. 索引:
創建有三種方式:
1) CREATE INDEX index_1 ON table_test (column_list);
2) ALTER TABLE table_name ADD INDEX index_name (column_list);
ALTER TABLE table_name ADD UNIQUE (column_list);
ALTER TABLE table_name ADD PRIMARY KEY (column_list);
3) 創建的時候直接指定
16. count(*), count(1), count(列名稱)這三個區別:
COUNT(*) 函數返回表中的記錄數,不會忽略列值爲NULL
COUNT(1)包括了所有列,用1代表代碼行,在統計結果的時候,不會忽略列值爲NULL
COUNT(column_name) 函數返回指定列的值的數目(NULL 不計入)
執行效率上:
列名爲主鍵,COUNT(列名)會比COUNT(1)快
列名不爲主鍵,COUNT(1)會比COUNT(列名快)
如果表有多個列並且沒有主鍵,則COUNT(1)的執行效率要優於COUNT(*)
如果只有一個字段,則SELECT COUNT(*)最優