一、DDL和数据库
创建数据库
创建数据库,并指定字符集编码
create database db1 character set utf8;
切换数据库
#db1切换到db1_1
use db1;
use db1_1;
查看数据库
#查看当前所使用的数据库
select database();
#查看mysql中有哪些数据库
show databases;
#查看mysql中某数据库(db1)的定义信息
show create database db1;
修改数据库
修改数据库的字符集编码
alter database db1 character set utf8
删除数据库
#删除数据库
drop database db1;
判断库存在,再删除数据库
drop database if exists db1;
二、DDL和数据表
创建表
语法格式
create table 表名(
字段名称1 字段类型(字段长度),
字段名称2 字段类型(字段长度)
);
- 需求1:创建商品分类表
表名: category
表中字段:分类ID:cid,为整型
分类名称:cname,为字符串类型,指定长度为20
SQL实现
#切换到数据库db1
use db1;
#创建表
create table category(
cid int,
cname varchar(20)
);
- 需求2:复制表结构创建新表
复制 category的表结构,创建新表 category_01
SQL实现
create table category_01 like category
#查看表结构
desc category_01;
查看表
#查看mysql中有哪些数据表
show tables;
#查看mysql中某数据表(category)的定义信息
show create table category ;
修改表
修改表名
#修改表名,将category表名改为category1
rename table category to category1;
修改字段相关信息
---alter + 不同动作(add、modify、change、drop)
#为分类表添加一个新字段cdesc,字段类型varchar(20)
alter table category1 add cdesc varchar(20);
#修改cdesc的字段类型varchar(20)为varchar(50)
alter table category1 modify cdesc varchar(50);
#修改cdesc的字段名称,更换为 description varchar(30)
alter table category1 change cdesc description varchar(30);
#删除列表中的字段description
alter table category1 drop description
删除表
#删除数据表
drop table category;
判断表存在,再删除数据表
drop table if exists category;
三、对表添加约束
主键约束
- 创建员工表,把eid设置为主键
#方法1
create table emp(
eid int primary key,
ename varchar(20),
sex char(1),
salary double,
hire_date date,
dept_name varchar(20)
);
#方法二
create table emp(
eid int primary key,
ename varchar(20),
sex char(1),
salary double,
hire_date date,
dept_name varchar(20),
primary key(eid)
);
- 创建员工表,把eid设置为主键,并设置主键自增
#方法1
create table emp(
eid int primary key auto_increment,
ename varchar(20),
sex char(1),
salary double,
hire_date date,
dept_name varchar(20)
);
- 创建员工表,把eid设置为主键,并设置主键自增,设置主键从100往后自增
create table emp(
eid int primary key auto_increment,
ename varchar(20),
sex char(1),
salary double,
hire_date date,
dept_name varchar(20)
)auto_increment = 100;
- 对已经存在的员工表,把eid添加为主键
alter table emp add primary key(eid);
- 删除主键
alter table emp drop primary key;
非空约束
- 创建员工表,把ename约束为非空
create table emp(
eid int primary key auto_increment,
ename varchar(20) not null,
sex char(1),
salary double,
hire_date date,
dept_name varchar(20)
)auto_increment = 100;
唯一约束
- 创建员工表,把ename约束为唯一
create table emp(
eid int primary key auto_increment,
ename varchar(20) not null unique,
sex char(1),
salary double,
hire_date date,
dept_name varchar(20)
)auto_increment = 100;
默认值约束
- 创建员工表,把ename默认值设置为“奥里给”
create table emp(
eid int primary key auto_increment,
ename varchar(20) not null unique default '奥里给',
sex char(1),
salary double,
hire_date date,
dept_name varchar(20)
)auto_increment = 100;
外键约束
- 主键与外键
主键:数据表A中有一列,这一列可以唯一标识一条记录
外键:数据表中有一列,这一列指向了另外一张数据表的主键 - 主表与从表
主表:主键id所在的表,约束别人的表
从表:外键所在的表,被约束的表
- 新建表时添加外键约束
语法格式
[CONSTRAINT] [外键约束名称] FOREIGN KEY(外键字段名) REFERENCES 主表名(主键字段名)
SQL实现
create table employee(
eid int primary key auto_increment,
ename varchar(20),
sex char(1),
age int,
dept_id int,
constraint emp_dept_fk foreign key(dept_id) references department(id)
);
- 删除主键
alter table employee drop foreign key emp_dept_fk ;
- 对已有表添加主键
alter table employee add foreign key(dept_id) references department(id) ;