SQL 之 DDL(MySQL)
创建数据库
Create {database|schema} [if not exists] 数据库名称;
CREATE DATABASE if not exists SALARY;
删除数据库
drop database [if exists] 数据库名称;
DROP DATABASE if exists SALARY;
创建表
create table if not exists 表名
(
列名 数据类型,
);
CREATE TABLE DEPT-- 创建部门表
(
DEPTNO CHAR(2) PRIMARY KEY,-- 部门编号,且为主键
DNAME VARCHAR(14),-- 部门名称
LOC VARCHAR(15)-- 地点
);
CREATE TABLE IF NOT EXISTS SCOTT
(
empno CHAR(4) PRIMARY KEY, -- 员工编号,且为主键
ename VARCHAR(10),-- 员工姓名
job VARCHAR(20),-- 职位
mgr CHAR(4),-- 经理编号
hiredate date,-- 入职日期
sal DECIMAL(7,2),-- 薪金
comm DECIMAL(7,2),-- 佣金
deptno char(2),-- 部门编号
CONSTRAINT SCOTT_DEPTNO-- SCOTT_DEPTNO为外键约束名称
FOREIGN KEY (deptno) REFERENCES DEPT(DEPTNO)
-- 引用表DEPT的主键DEPTNO,设置列deptno为外键
);
删除表
Drop table 表名;
DROP TABLE SCOTT;
修改表
增加列
Alter table 表名 ADD 列名 数据类型;
ALTER TABLE SCOTT ADD AGE INT;
删除列
Alter table 表名 drop [column] 列名;
ALTER TABLE SCOTT DROP COLUMN AGE;
修改列的类型、参数
Alter table 表名 modify 列名 新类型 新参数;
ALTER TABLE SCOTT MODIFY SAL DECIMAL(8,2);
修改列的名称
Alter table 表名 change 旧列名 新列名 新类型 新属性;
ALTER TABLE SCOTT CHANGE SAL SALA DECIMAL(7,2);
增加表的主键
Alter table 表名 ADD primary key(列名);
作为主键的列数据不能重复。
ALTER TABLE SCOTT ADD primary key(empno);
增加表的外键
Alter table 主表 add foreign key(列名) references 外表(列名);
引用的外表列名必须是外表的主键
ALTER TABLE SCOTT
ADD FOREIGN KEY(DEPTNO) REFERENCES DEPT(DEPTNO);
删除表的外键
第一步:获取表的外键约束
Show create table 表名;
SHOW CREATE TABLE SCOTT;
第二步:删除表的外键约束
Alter table 主表名 drop foreign key 外键约束名;
ALTER TABLE SCOTT DROP FOREIGN KEY scott_ibfk_1;
第三步:删除表的键
Alter table 主表名 drop key 外键约束名;
ALTER TABLE SCOTT DROP KEY deptno;
修改表的名称
Rename table 旧表名 to 新表名;
Rename table scott to emp;
查询表的结构
Show columns from 表名;
show columns from DEPT;