MySQL管理表和索引

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章