MySQL管理表和索引
SQL語句:
數據庫
表
索引
視圖
DML
創建數據庫: CREATE DATABASE|SCHEMA [IF NOT EXISTS] db_name [CHARACTER SET=] [COLLATE=] 刪除數據庫: DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
創建表:
1、直接定義一張空表;
2、從其它表中查詢出數據,並以之創建新表;
3、以其它表爲模板創建一個空表;
1. CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [partition_options] 2. CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [partition_options] select_statement 3. CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) } 創建一個空白表: CREATE TABLE [IF NOT EXISTS] tb_name (col_name col_defination, constraint ) ENGINE [=] engine_name
鍵也稱作約束,可用作索引,屬於特殊索引(有特殊限定):B+Tree
CREATE INDEX創建索引 SHOW INDEXES FROM tb_name:顯示指定表上的索引 DESC table_name 顯示錶結構
修改表定義:
ALTER TABLE
添加、刪除、修改字段
添加、刪除、修改索引
改表名
修改表屬性
InnoDB支持外鍵(外鍵約束極其消耗系統資源)
刪除表: DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE] 索引創建: CREATE INDEX index_name ON tb_name (col,...); col_name [(length)] [ASC | DESC] 刪除索引: DROP INDEX index_name ON tbl_name SELECT select-list FROM tb WHERE qualification
查詢語句類型:
簡單查詢
多表查詢
子查詢(嵌套查詢)
SELECT * FROM tb_name; SELECT field1,field2 FROM tb_name; 投影 SELECT [DISTINCT] * FROM tb_name WHERE qualification; 選擇
DISTINCT 相同的值只顯示一次
FROM子句: 要查詢的關係 表、多個表、其它SELECT語句
WHERE子句:布爾關係表達式
=、>、>=、<=、< 數值比較不加引號,字符串比較加引號
邏輯關係:
AND
OR
NOT
BETWEEN ... AND ...
LIKE ‘’
%: 任意長度任意字符
_:任意單個字符
REGEXP, RLIKE 支持正則表達式
IN 使用離散取值
IS NULL
IS NOT NULL
ORDER BY field_name {ASC|DESC} 查詢結果排序(ASC升序,DESC降序)
字段別名:AS
select name as student_name from student; 顯示時顯示爲student_name不是name
LIMIT子句:LIMIT [offset,]Count 從第offset開始顯示,顯示count個
聚合:SUM(), MIN(), MAX(), AVG(), COUNT()
GROUP BY: 分組
HAVING qualification 過濾
多表查詢:
連接:
交叉連接:笛卡爾乘積
自然連接:
外連接:
左外連接:... LEFT JOIN ... ON ...
右外連接: ... RIGHT JOIN ... ON ...
自連接: 使用別名來進行
子查詢:
比較操作中使用子查詢:子查詢只能返回單個值;
IN(): 使用子查詢;
在FROM中使用子查詢;
聯合查詢:
UNION
視圖: 存儲下來的SELECT語句;(在MySQL中用處不大,跟安全相關時有意義)
基於基表的查詢結果;
CREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}] [DEFINER = { user | CURRENT_USER }] [SQL SECURITY { DEFINER | INVOKER }] VIEW view_name [(column_list)] AS select_statement [WITH [CASCADED | LOCAL] CHECK OPTION]
顯示創建某個表、視圖、數據庫等用了什麼語句 SELECT CREATE {DATABASE | TABLE | VIEW} NAME
廣義查詢:
DML:
DELETE
INSERT INTO
UPDATE
INSERT INTO tb_name (col1, col2, ...) VALUES (val1, val2, ...)[,(val1, val2, ...),...] INSERT INTO tb_name SET col1= ,col2= ,.... INSERT INTO tb_name (col1,col2...) SELECT ....
字符型:單引號
數值型:不需要引號
日期時間型:
空值:NULL, ''
REPLACE INTO 與INSERT類似
DELETE: DELETE FROM tb_name WHERE condition; TRUNCATE tb_name: 清空表,並重置AUTOINCREMENT計數器; UPDATE tb_name SET col1=..., col2=... WHERE