mysql - 建库建表

建库建表

# 创建数据库
create database DATABASENAME;

# 创建数据表, 里边是结构
create table TABLENAME (
	id int,
	# 长度必须为 10
	# name char(10),
	# 长度上限为 10
	name varchar(10),
	age int
);

常用数据类型描述
int 或 integer整数
char定长字符串, 设定长度
varchar变长字符串, 设定长度上限
text长文本
date日期值 YYYY-MM-DD
time时间值 HH:MM:SS
datetimedate + time

约束

建立约束

建表同时建立约束

# 基础约束包括: 非空, 唯一, 主键

# 班级表, 包括id, 姓名, 年龄
CREATE TABLE classes (
	# ID 主键, 每个表有且只有一个主键, 主键 = 非空 + 唯一
	id int primary key,
	# 班号, 唯一
	classnum int unique,
	# 班主任, 非空
	teacher varchar(255) not null,
);

# 进阶约束包括: 主键自增, 外键, 默认, 检查, 索引

# 学生表
create table student (
	# 主键自增
	id int primary key auto_increment,
	stunum int unique, 
	name varchar(255) not null,
	# default, 设置默认值, 如果没有定义, 则填入默认值
	age int default 18
);

# 成绩表
create table score (
	id int primary key,
	math int,
	chinese int,
	english int, 
	# foreign key, 一个表中的 foreign key 需要指向 另一个表中的 unique 或 primary key
	# 自己的 id 字段指向 student 表的 id 字段
	foreign key(id) references student(id),
	# check, 但 sql 中可能会忽略该设置
	check(math >= 0)
);


已有表建立约束

# 设置非空
alter table TABLENAME modify COLUMNNAME int not null;

# 设置唯一
alter table TABLENAME add unique(COLUMNNAME);

# 设置主键
alter table TABLENAME add primary key(COLUMNNAME);

# 添加外键, T1.C1 -> T2.C2
# constraint FOREIGNKEYNAME
alter table T1 add constraint T1C1_T2C2 foreign key(C1) references T2(C2);

# 设置默认值
alter table TABLENAME alter COLUMNNAME set default DEFAULTVALUE;


解除约束

# 解除 score 表中的 math 字段非空约束
alter table TABLENAME modify COLUMNNAME int null;

# 解除唯一约束
alter table TABLENAME drop index COLUMNNAME;

# 解除主键约束
alter table TABLENAME drop primary key;

# 解除外键约束
alter table TABLENAME drop foreign key FOREIGNKEYNAME;

# 解除默认值约束
alter table TABLENAME alter COLUMNNAME drop default


索引

  • 索引是一张表, 保存了主键与索引字段,并指向实体表的记录
  • 在不读整个表的情况下, 索引是数据库的应用可以更快的查找数据
  • 索引会提高查询速度, 但会降低更新(insert, update, delete)速度

创建索引

# 为单列创建索引, 默认升序, desc为降序
create index INDEXNAME on TABLENAME(CLOUMNNAME)
create index INDEXNAME on TABLENAME(CLOUMNNAME desc)

# 创建唯一索引
create unique index INDEXNAME on TABLENAME(CLOUMNNAME)

# 创建多个索引
create index INDEXNAME on TABLENAME(CLOUMNNAME1, COLUMNNAME2, ...)


删除索引

drop index INDEXNAME on TABLENAME;


查看索引

show index from TABLENAME;


修改 COLUMN 信息

# 添加列
alter table TABLENAME add COLUMNNAME [数据类型] [约束语句];

# 删除列
alter table TABLENAME drop column COLUMNNAME;

# 修改列的数据类型
alter table TABLENAME alter column COLUMNNAME [新数据类型]


删库跑路

# 删库
drop database DATABASENAME;

# 删表
drop table TABLENAME;

# 清空表内容
truncate table TABLENAME;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值