DDL:意指data defination language,即数据库定义语言,主要是Create建表、Drop删除表、Alter修改表字段等操作
1 库的管理
关键词包括:create/alter/drop database dbname
//1.0 库的创建语法:CREATE DATABASE [IF NOT EXISTS] cgwangtest;//2.0 库名的修改暂不推荐//3.0 更改库的字符集:默认字符集为utf-8ALTER DATABASE cgwang CHARACTER SET gbk;//4.0 库的删除DROP DATABASE [IF EXISTS] cgwangtest;//5.0 查看库的所有表select table_name from information_schema.tables where table_schema='cgwangofficialweb' and table_type='base table';
2 表的创建
关键语句:create table name(userid int 约束))
//1.0 通用语法(MySQL和SQLServer一样)create table 表名(列名 列的类型【(长度) 约束】)//2.0 (推荐)通用的创建表(包含列/列名/约束)写法。核心原则:表级使用外键,其他使用列级。CREATE TABLE IF NOT EXISTS stuinfo(#1.0 配置类型/列名及其未命名约束id INT PRIMARY KEY unique auto_increment, --主键PRIMARY KEY约束&唯一约束&自增长约束stuname VARCHAR(20),sex CHAR(1),age INT DEFAULT 18,seat INT UNIQUE,majorid INT,#2.0 配置带索引名的索引##指定普通索引index [mobileno_index] (mobileno(10))##指定唯一索引unique [mobileno_index2] (mobileno(10))#3.0 配置外键CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id));
//1.0 创建一个表,该表的约束为列级约束语法:直接在字段名和类型后面追加约束类型即可USE students;DROP TABLE if exists stuinfo;CREATE TABLE stuinfo(id INT PRIMARY KEY auto_increment, --主键PRIMARY KEY约束/标识列自增长约束stuname VARCHAR(20) NOT NULL UNIQUE,--非空NOT NULL约束seat INT UNIQUE,--UNIQUE唯一约束age INT DEFAULT 18-- DEFAULT默认约束);//2.0 创建一个表,该表的约束为表级约束语法:在各个字段的最下面添加:[constraint 约束名] 约束类型(字段名)或约束类型(字段名)DROP TABLE IF EXISTS stuinfo;CREATE TABLE stuinfo(id INT,stuname VARCHAR(20),gender CHAR(1),seat INT,age INT,majorid INT,CONSTRAINT pk PRIMARY KEY(id) auto_increment,#主键&约束CONSTRAINT uq UNIQUE(seat),#唯一键CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)#外键);
3 表的修改
通用语法:alter table 表名 add|drop|modify|change column 列名 【列类型 长度 约束】;
通用操作
//1.0 修改表名语法:alter table tbname rename to newtbname;eg:alter table user RENAME TO new_user;//2.0 新增列ALTER TABLE `user` ADD COLUMN mobileno varchar(20);//3.0 修改列名alter table 表名 change column old_name new_name;eg:ALTER TABLE `user` CHANGE COLUMN nickname new_nickname varchar(11);//4.0 删除列ALTER TABLE `user` DROP COLUMN mobileno;
约束操作
语法:alter table 表名 modify column 字段名 字段类型 新约束;1. 添加非空约束ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NOT NULL;2. 添加默认约束ALTER TABLE stuinfo MODIFY COLUMN age INT DEFAULT 18;3. 添加主键列级约束ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY;4. 添加唯一列级约束ALTER TABLE stuinfo MODIFY COLUMN seat INT UNIQUE;5. 修改自增长ALTER TABLE stuinfo MODIFY COLUMN id INT PRIMARY KEY AUTO_INCREMENT;6. 删除default默认约束和非空not null重要:六大约束中只有default和null才可通过modify删除(零和),其他要用drop(非零和)ALTER TABLE stuinfo MODIFY COLUMN age INT ;7. 删除自增长列ALTER TABLE user MODIFY COLUMN userid INT PRIMARY KEY AUTO_INCREMENT;--用如下的方法去除上面的自增长标识列ALTER TABLE user MODIFY COLUMN userid INT;
//1.0 添加外键ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id);//2.0 修改表级约束ALTER TABLE stuinfo ADD CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id);ALTER TABLE stuinfo DROP FOREIGN KEY fk_stuinfo_major;//3.0 删除非空约束ALTER TABLE stuinfo MODIFY COLUMN stuname VARCHAR(20) NULL;
4 表的删除
DROP TABLE IF EXISTS user;SHOW TABLES;
5 表的复制
//1.0 仅仅复制表的结构CREATE TABLE new_user LIKE user;//2.0 仅复制数据insert into userdata(userId) select userId from users;//3.0 复制表的结构+数据CREATE TABLE new_user SELECT * FROM user;
