MySQL管理表和索引 創建表: 1、直接定義一張空表; 2、從其它表中查詢出數據,並以之創建新表; 3、以其它表為模板創建一個空表; 創建表時定義其中的欄位類型時為數值時 加 unisined表示無符號數值類型(只有正數)。 例如create table 表名 ( id int unisgned ...
MySQL管理表和索引
創建資料庫:
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
通過select查詢語句創建表時,創建的表可能和被查詢表的格式定義不太一樣
3.
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
{ LIKE old_tbl_name | (LIKE old_tbl_name) }
創建表時定義其中的欄位類型時為數值時 加 unisined表示無符號數值類型(只有正數)。例如create table 表名 ( id int unisgned ) ; id列的值只能為正數
修改表定義:
ALTER TABLE
添加、刪除、修改欄位
添加、刪除、修改索引
改表名
修改表屬性
刪除表:
DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
InnoDB支持外鍵
鍵也稱作約束,可用作索引,屬於特殊索引,BTree
索引由數據表中的一列或多列組合而成,創建索引的目的是為了優化資料庫的查詢速度。其中用戶創建的索引指向資料庫中具體數據的位置。當用戶通過索引查詢資料庫中的數據時
不需要遍歷所有資料庫中的數據,提高了查詢效率,索引是一種將資料庫中的單列或多列的值排序的結構
用戶通過索引查詢數據,系統可以不必遍曆數據表中的所有記錄,而是查詢索引列,一般的過程的數據查詢是通過遍歷全部數據,並尋找資料庫中的匹配記錄而實現的
SHOW {INDEX | INDEXES | KEYS} FROM tb_name:顯示指定表上的索引
DESC table_name 顯示表結構
索引創建:
CREATE INDEX index_name ON tb_name (col,...);
col_name [(length)] [ASC | DESC]
create index 索引名 on 表名 (欄位名(長度) aes|desc)創建索引時 欄位名(長度) 中"(長度)"表示只索引最左邊的幾個字元
刪除索引:
DROP INDEX index_name ON tbl_name
查詢語句類型:
簡單查詢
多表查詢
子查詢(嵌套查詢)
SELECT * FROM tb_name;
SELECT field1,field2 FROM tb_name; 投影
SELECT [DISTINCT] * FROM tb_name WHERE 條件; 選擇
DISTINCT 相同的值只顯示一次
FROM子句: 後面跟 表|多個表|其它SELECT語句
WHERE子句:布爾關係表達式
=、>、>=、<=、< 數值比較不加引號,字元串比較加引號
邏輯關係:
AND
OR
NOT
BETWEEN ... AND ...
LIKE ‘’
%: 任意長度任意字元
_:任意單個字元
REGEXP, RLIKE 支持正則表達式
IN ("value1" ,"value2"……) 取值在列表中的任意一個,則匹配
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開始顯示(註意第一行為0),顯示count個
聚合:SUM(), MIN(), MAX(), AVG(), COUNT()
GROUP BY: 分組
HAVING 條件(having 只能和group by 一起使用,用於對分組結果過濾)
多表查詢:
連接:
交叉連接:笛卡爾乘積
自然連接:
外連接:
左外連接:... 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