02 高级教程

sql高级教程

DDL(数据库定义语言)

**DATABASE**
-- 创建数据库
CREATE DATABASE db_name;
-- 删除数据库
DROP DATABASE db_name;

**TABLE**
-- 创建表
CREATE TABLE table_name(
column_name datatype,
column_name datatype,
column_name datatype
);
-- 删除表
DROP TABLE table_name;
-- 清空表
TRUNCATE TABLE table_name;
-- 修改表(基本)
    -- 添加列
    ALTER TABLE table_name ADD COLUMN column_name datatype; -- 列名不加``或''
    -- 删除列
    ALTER TABLE table_name DROP COLUMN column_name;
    -- 更改列数据类型
    ALTER TABLE table_name MODIFY COLUMN column_name datatype;
-- 修改表(约束 CONSTRAINT)
    -- 1、CREATE TABLE时
        CREATE TABLE(
        -- ① AUTO_INCREMENT
        column_name datatype AUTO_INCREMENT, -- AUTO_INCREMENT可以直接再后面加
        -- ② NOT NULL
        column_name datatype NOT NULL, -- NOT NULL可以直接在后面加
        -- ③ UNIQUE
        UNIQUE(column_name[,column_name,...]),
        CONSTRAINT constraint_name UNIQUE (column_name[,column_name,...]),
        -- ④ PRIMARY KEY ( UNIQUE and NOT NULL )
        PRIMARY KEY (column_name[,column_name]),
        CONSTRAINT constraint_name PRIMARY KEY (column_name),
        -- ⑤ FOREIGH KEY
        FOREIGH KEY (column_name) REFERENCES other_table (column_name),
        CONSTRAINT constraint_name FOREIGH KEY (column_name) REFERENCE other_table (column_name),
        -- ⑥ CHECK
        CHECK (表达式)
        CONSTRAINT constraint_name CHECK (表达式),
        -- ⑦ DEFAULT
        column_name datatype DEFAULT default_value
        );
    -- 2、ALTER TABLE时 ( ③ ④ ⑤ ⑥ 在约束后面指定列,因此不需要ALTER COLUMNS )
        -- ① AUTO_INCREMENT
        ALTER TABLE table_name AUTO_INCREMENT=100;
        -- ③ UNIQUE
        ALTER TABLE table_name ADD UNIQUE (column_name);
        ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name);
        -- ④ PRIMARY KEY
        ALTER TABLE table_name ADD PRIMARY KEY (column_name);
        ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY (column_name);
        -- ⑤ FOREIGH KEY
        ALTER TABLE table_name ADD UNIQUE (column_name);
        ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGH KEY (column_name) REFERENCES other_table (column_name);
        -- ⑥ CHECK
        ALTER TABLE table_name ADD CHECK (表达式)
        ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK (表达式);
        -- ⑦ DEFAULT
        ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT value;
    -- 3、删除CONSTRAINT
        -- 删除约束
        ALTER TABLE table_name DROP CONSTRAINT constraint_name;
        -- ③ UNIQUE
        ALTER TABLE table_name DROP INDEX column_name;
        -- ④ PRIMARY KEY
        ALTER TABLE table_name DROP PRIMARY KEY;
        -- ⑤ FOREIGH KEY
        ALTER TABLE table_name DROP FOREIGH KEY column_name;
        -- ⑥ CHECK
        ALTER TABLE table_name DROP CHECK constraint_name;
        -- ⑦ DEFAULT
        ALTER TABLE table_name ALTER COLUMN column_name DROP DEFAULT;

**INDEX**   
-- 创建索引
CREATE INDEX index_name ON table_name (column_name);
CREATE UNIQUE INDEX index_name ON table_name (column_name);
-- 删除索引
ALTER TABLE table_name DROP INDEX index_name;

**VIEW**
-- 创建视图(视图可以被用来查询)
CREATE VIEW view_name AS SELECT语句;
-- 删除视图
DROP VIEW view_name;

DML(数据库操纵语言)

-- SELECT TOP语句
SELECT column_name FROM table_name LIMIT value;

-- (列操作)别名
SELECT column_name AS column_alias FROM table_name AS table_alias;
-- (列操作)拼接
SELECT CONCAT(column_name1,sep,column_name2,sep...) AS new_column_name FROM table_name; 

-- (行操作) JOIN 连接两个或多个表的行再进行查询
SELECT table.column,table_column FROM table1 ? JOIN table2;
/*
    ? JOIN:
        INNER JOIN:交集
        LEFT JOIN:左+左交右
        RIGHT JOIN:右+右交左
        FULL JOIN:并集
*/
-- (行操作) UNION 连接两个查询的结果
/*
    要求,两个表有相同数量的列,且列的数据类型要相似,顺序也必须相同;
    默认保留第一个表的列名;
    UNION 默认去重,可以用 UNION ALL,则保留重复的值
*/
SELECT columns FROM table1 
UNION (ALL)
SELECT columns FROM table2

-- 操作符
    -- LIKE '' / NOT LIKE ''
        _:1个字符
        %:0个或多个字符
        [charlist]:charlist中的任意单个字符
        [^charlist] / [!charlist]:不在charlist中的任意单个字符
    -- IN (,,) / NOT IN (,,)
    -- BETWEEN a AND b / NOT BETWEEN a AND b

猜你喜欢

转载自blog.csdn.net/double___you/article/details/80452126