SQL-DAY 4(SQL的DDL数据定义语言)


一、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) ;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值