DML(Data Manipulation Language)数据操作语言
    1、增(INSERT)
    1)方式一
    INSERT INTO 表名(字段1,字段2…) VALUE (值1,值2 …)
    插入的值的类型要与列的类型一致或兼容
    可以为null的列或有默认值的列可以不写(默认为null,或默认值)
    列的顺序可以颠倒,与值对应即可
    可以省略列名不写,默认是所有列名
    INSERT INTO 表名 VALUE (值1,值2 …)
    支持多行插入
    INSERT INTO 表名 VALUE (值1,值2 …),(值1,值2 …),(值1,值2 …)…
    支持子查询,插入查询的结果
    INSERT INTO 表名(字段1,字段2…) SELECT 字段1,字段2… FROM…
    2)方式二
    INSERT INTO 表名 SET 字段1=值1,字段2=值2…
    2、删(DELETE)
    1)方式一
    a.删除单表记录
    DELETE FROM 表名 WHERE 筛选条件
    b.删除多表记录(连接删除)
    sql92语法
    DELETE [表1|表2]
    FROM 表1,表2
    WHERE 连接条件
    AND 筛选条件
    sql99语法
    DELETE [表1|表2]
    FROM 表1
    [LEFT|RIGHT|FULL|INNER] JOIN 表2
    ON 连接条件
    WHERE 筛选条件
    2)方式二
    TRUNCATE TABLE 表名
    3)比较
    TRUNCATE不能加筛选条件,只是清空整个表。
    DELETE删除后,自增长列从断点开始,可以返回受影响的行数,效率低,可以回滚
    TRUNCATE删除后,自增长列从1开始,不可以返回受影响的行数,效率高,不可以回滚
    3、改(UPDATE)
    1)方式一
    a.修改单表记录
    UPDATE 表名
    SET 字段1=新值1,字段2=新值2…
    WHERE 筛选条件
    b.修改多表记录(连接修改)
    sql92语法
    UPDATE 表1,表2
    WHERE 连接条件
    AND 筛选条件
    SET 字段1=新值1,字段2=新值2…
    sql99语法
    UPDATE 表1
    [INNER|LEFT|RIGHT|FULL] JOIN 表2
    ON 连接条件
    WHERE 筛选条件
    SET 字段1=新值1,字段2=新值2…
    六、DDL(Data Define Language)数据定义语言
    1、库的管理
    1)库的创建(CREATE)
    CREATE DATABASE IF NOT EXISTS database1;
    2)库的修改(ALTER)
    #修改字符集
    ALTER DATABASE database1 CHARACTER SET utf-8或gbk;
    3)库的删除(DROP)
    DROP DATABASE IF EXISTS database1;
    2、表的管理
    1)表的创建(CREATE)
    a.普通创建
    CREATE TABLE IF NOT EXISTS table_name(
    字段名 字段类型 ,
    ……
    字段名 字段类型
    )
    b.复制创建
    #复制表的所有结构
    CREATE TABLE new_table LIKE old_table;
    #复制表的部分结构
    CREATE TABLE new_table SELECT list FROM old_table WHERE 0;
    #复制表的所有结构+所有数据
    CREATE TABLE new_table SELECT * FROM old_table;
    #复制表的部分结构+所有数据
    CREATE TABLE new_table SELECT field_list FROM old_table;
    #复制表的部分结构+部分数据
    CREATE TABLE new_table SELECT field_list FROM old_table WHERE condition
    c.带约束创建
    创建表时的约束可分为列级约束和表级约束,在mysql中:
    列级约束:支持主键、唯一、非空、默认
    表级约束:支持主键、唯一、外键
    一般的,外键用表级约束添加,其他的用列级约束添加
    #创建表时添加列级约束
    CREATE TABLE user(
    id INT PRIMARY KEY, #主键
    name VARCHAR(20) NOT NULL, #非空
    no INT UNIQUE, #唯一
    flag TINYINT DEFAULT 1, #默认
    )
    #创建表时添加表级约束
    CREATE TABLE user(
    id INT,
    no INT ,
    book_id INT,
    #以下添加表级约束
    CONSTRAINT pk PRIMARY KEY(id), #主键
    UNIQUE(no),#唯一,可以省略CONSTRAINT(其他约束也可一省略)
    CONSTRAINT fk_user_book FOREIGN KEY(book_id) REFERENCES book(id) #外键,建议取个约束名
    )

    d.带标识列创建
    同约束的设置方法,在创建表时,在后面添加 AUTO_INCREMENT
    CREATE TABLE user(
    id INT UNIQUE AUTO_INCREMENT,
    name VARCHAR(20)
    )
    SET auto_increment_increment=3 #设置步长
    SET auto_increment_offset=3 #设置起始值,mysql不支持,但可以通过插入数据时来手动插入一个起始值
    2)表的修改(ALTER)
    修改表名
    ALTER TABLE 表名 RENAME TO 新表名;
    修改字段名
    ALTER TABLE 表名 CHANGE COLUMN 字段名 新字段名;
    修改字段的类型、约束或添加约束
    ALTER TABLE 表名 MODIFY COLUMN 字段名 字段类型 约束类型;
    添加新列
    ALTER TABLE 表名 ADD COLUMN 字段名 字段类型 约束类型;
    删除列
    ALTER TABLE 表名 DROP COLUMN 字段名;
    删除约束
    ALTER TABLE user DROP PRIMARY KEY;#删除主键
    ALTER TABLE user DROP FOREIGN KEY fk_user_book;#删除外键
    3)表的删除(DROP)
    DROP DATABASE IF EXISTS database1;