DDL:意指data defination language,即数据库定义语言,主要是Create建表、Drop删除表、Alter修改表字段等操作

1 库的管理

关键词包括:create/alter/drop database dbname

  1. //1.0 库的创建
  2. 语法:CREATE DATABASE [IF NOT EXISTS] cgwangtest;
  3. //2.0 库名的修改
  4. 暂不推荐
  5. //3.0 更改库的字符集:默认字符集为utf-8
  6. ALTER DATABASE cgwang CHARACTER SET gbk;
  7. //4.0 库的删除
  8. DROP DATABASE [IF EXISTS] cgwangtest;
  9. //5.0 查看库的所有表
  10. select table_name from information_schema.tables where table_schema='cgwangofficialweb' and table_type='base table';

2 表的创建

关键语句:create table name(userid int 约束))

  1. //1.0 通用语法(MySQL和SQLServer一样)
  2. create table 表名(列名 列的类型【(长度) 约束】)
  3. //2.0 (推荐)通用的创建表(包含列/列名/约束)写法。核心原则:表级使用外键,其他使用列级。
  4. CREATE TABLE IF NOT EXISTS stuinfo(
  5. #1.0 配置类型/列名及其未命名约束
  6. id INT PRIMARY KEY unique auto_increment, --主键PRIMARY KEY约束&唯一约束&自增长约束
  7. stuname VARCHAR(20),
  8. sex CHAR(1),
  9. age INT DEFAULT 18,
  10. seat INT UNIQUE,
  11. majorid INT,
  12. #2.0 配置带索引名的索引
  13. ##指定普通索引
  14. index [mobileno_index] (mobileno(10))
  15. ##指定唯一索引
  16. unique [mobileno_index2] (mobileno(10))
  17. #3.0 配置外键
  18. CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)
  19. );
  1. //1.0 创建一个表,该表的约束为列级约束
  2. 语法:直接在字段名和类型后面追加约束类型即可
  3. USE students;
  4. DROP TABLE if exists stuinfo;
  5. CREATE TABLE stuinfo(
  6. id INT PRIMARY KEY auto_increment, --主键PRIMARY KEY约束/标识列自增长约束
  7. stuname VARCHAR(20) NOT NULL UNIQUE,--非空NOT NULL约束
  8. seat INT UNIQUE,--UNIQUE唯一约束
  9. age INT DEFAULT 18-- DEFAULT默认约束
  10. );
  11. //2.0 创建一个表,该表的约束为表级约束
  12. 语法:在各个字段的最下面添加:[constraint 约束名] 约束类型(字段名)或约束类型(字段名)
  13. DROP TABLE IF EXISTS stuinfo;
  14. CREATE TABLE stuinfo(
  15. id INT,
  16. stuname VARCHAR(20),
  17. gender CHAR(1),
  18. seat INT,
  19. age INT,
  20. majorid INT,
  21. CONSTRAINT pk PRIMARY KEY(id) auto_increment,#主键&约束
  22. CONSTRAINT uq UNIQUE(seat),#唯一键
  23. CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)#外键
  24. );

3 表的修改

通用语法:alter table 表名 add|drop|modify|change column 列名 【列类型 长度 约束】;

通用操作

  1. //1.0 修改表名
  2. 语法:alter table tbname rename to newtbname;
  3. egalter table user RENAME TO new_user;
  4. //2.0 新增列
  5. ALTER TABLE `user` ADD COLUMN mobileno varchar(20);
  6. //3.0 修改列名
  7. alter table 表名 change column old_name new_name;
  8. eg:ALTER TABLE `user` CHANGE COLUMN nickname new_nickname varchar(11);
  9. //4.0 删除列
  10. ALTER TABLE `user` DROP COLUMN mobileno;

约束操作

  1. 语法:alter table 表名 modify column 字段名 字段类型 新约束;
  2. 1. 添加非空约束
  3. ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;
  4. 2. 添加默认约束
  5. ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;
  6. 3. 添加主键列级约束
  7. ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;
  8. 4. 添加唯一列级约束
  9. ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;
  10. 5. 修改自增长
  11. ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT;
  12. 6. 删除default默认约束和非空not null
  13. 重要:六大约束中只有defaultnull才可通过modify删除(零和),其他要用drop(非零和)
  14. ALTER TABLE stuinfo MODIFY COLUMN age INT ;
  15. 7. 删除自增长列
  16. ALTER TABLE user MODIFY COLUMN userid INT PRIMARY KEY AUTO_INCREMENT;
  17. --用如下的方法去除上面的自增长标识列
  18. ALTER TABLE user MODIFY COLUMN userid INT;
  1. //1.0 添加外键
  2. ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id);
  3. //2.0 修改表级约束
  4. ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id);
  5. ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;
  6. //3.0 删除非空约束
  7. ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;

4 表的删除

  1. DROP TABLE IF EXISTS user;
  2. SHOW TABLES;

5 表的复制

  1. //1.0 仅仅复制表的结构
  2. CREATE TABLE new_user LIKE user;
  3. //2.0 仅复制数据
  4. insert into userdata(userId) select userId from users;
  5. //3.0 复制表的结构+数据
  6. CREATE TABLE new_user SELECT * FROM user;