Mysql表结构管理(约束的添加删除修改)

MySQL数据类型

数据类型取值范围说明单位
TINYINT有符号值: -128 ~ 127 无符号值:0~255最小的整数1字节
BIT有符号值: -128 ~ 127 无符号值:0~255最小的整数1字节
BOOL有符号值: -128 ~ 127 无符号值:0~255最小的整数1字节
SMALLINT有符号值: -32768~ 32767 无符号值:0~65535小型整数2字节
MODIUMINT有符号值: -8388608~ 8388607 无符号值:0~16777215中型整数3字节
TINYINT有符号值: -2147683648~ 2147683647 无符号值:0~4294967295标准整数4字节
TINYINT有符号值: -9223372036854775808~ 9223372036854775807 无符号值:0~18446774073709551615大整数8字节

浮点数据类型

数据类型单位
FLOAT4或者8字节
DOUBLE双精度8字节
DECIMAL可变,自定义长度

此处省略n行…

创建表

创建表使用CREATE TABLLE 语句,语法

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] 数据表名
[(create_definition,...)] [table_options] [select_statement]

参数说明

关键字说明
TEMPORARY如果使用该关键字则创建一个临时表
IF NOT EXISTS避免存在表错误
create_definition这是表的列属性部分。MySQL要求在创建表的时候,表至少要包含一列
table_options表的一些特性参数
select_statementSELECT 语句描述部分,用它可以快速的创建表

下面介绍列属性create_definition部分

col_name type [NOT NULL | NULL] [DEFAULT default_value] [AUTO_INCREMENT]
[PRIMARY KEY] [reference_definition]

属性说明

参数说明
col_name字段名
type字段类型
NOT NULLNULL
DEFAULT default_value表示默认值
AUTO_INCREMENT表示是否自动编号,每一个表只能有一个AUTO_INCREMENT列,并且必须被索引
PRIMARY KEY表示是否为主键,一个表只能有一个主键。如果没有主键当外部程序需要时,会返回一个没有任何NULL 列的UNIQUE 键作为主键
reference_definition为字段添加注释

基本的创建表实例

具体格式

CREATE TABLE table_name (列名1 属性,列名2 属性,···);
CREATE TABLE student(
name varchar(20),
number int,
age int NOT NULL,
sex bool
);

执行效果如下图
在这里插入图片描述

设置默认的储存引擎

ENGINE=储存引擎名称

CREATE TABLE student(
name varchar(20),
number int,
age int NOT NULL,
sex bool
)ENGINE=MyISAM;

设置自增类型字段

CREATE TABLE student(
name varchar(20),
number int AUTO_INCREMENT,
age int NOT NULL,
sex bool
)ENGINE=MyISAM;

设置字符集

CREATE TABLE student(
name varchar(20),
number int AUTO_INCREMENT,
age int NOT NULL,
sex bool
)DEFAULT CHARSET=GBK;

复制表结构

CREATE TABLE [IF NOT EXISTS] 数据表名
{LIKE 源数据表名 |LIKE 源数据表名)}
参数说明
IF NOT EXISTS可选项,表示要创建的表是否存在
数据表名表示要创建的数据表的名称
{LIKE 源数据表名|(LIKE 源数据表名)}必选项,用于指定依照那个数据表来创建新表

example

CREATE  TABLE new_table
	LIKE tb_old;

修改表结构

修改字段

ALTER [IGNORE] TABLE 数据库表名 alter_space[,alter_space]... 

其中的IGNORE指定时,如果出现重复关键的行,则只会执行一次,多余的行会删除

其中alter_space字段摘要及语法

摘要解释
ADD [COLUMN] create_definition [FIRST l AFTER column_name添加新字段
ADD INDEX [index_name] (index_col_name,…)添加索引名称
ADD PRIMARY KEY [index_col_name,…]添加主键名称
ADD UNIQUE [index_col_name,…]添加唯一索引
ALTER [COLUMN] col_name {SET DEAFAULT literal} l DROP DEAFAULT}修改字段名称
MODIFY [COLUMN] create_definition修改子句定义字段
‘’‘’‘’

example

ALTER TABLE student ADD TRANSLATOR varchar30NOT NULL,
MODIFY inTime DATETIME(6);

修改约束条件

约束类型说明
PRIMARY KEY主键约束
DEAFAULT默认约束
UNIQUE KEY唯一约束
NOT NULL非空约束
FOREIGN KEY外键约束
添加约束条件

example

ALTER TABLE td_name ADD CONSTRAINT mrprimary PRIMARY KEY(col_name);
删除约束条件
  • 删除主键约束条件
ALTER TABLE 表名 DROP PRIMARY KEY
  • 删除外键约束
ALTER TABLE 表名  DROP FOREIGN KEY 约束名

example

ALTER TABLE student DROP FOREIGN KEY mrfkey;
  • 删除唯一约束
ALTER TABLE 表名 DROP INDEX 唯一索引名

example

ALTER TABLE student DROP INDEX mrindex;
修改其他选项
  • 修改表的储存引擎
ALTER TABLE 表名 ENGINE=新的储存引擎类型
  • 修改表的字符集
ALTER TABLE 表名 DEFAULT CHARSET=新的字符集
  • 修改表的自增类型字段的初始值
ALTER TABLE 表名  AUTO_INCREMENT ==新的初始值
修改表名
RENAME TABLE 表名1 TO 表名2
删除表
DROP TABLE 表名

设置索引

索引是一种数据库中单列或者多列的值进行排序的结构.由单列或多列组成,可以优化查询速度

创建索引

  • 创建表时创建索引
CREATE TABLE table_name(
属性名 数据类型 [约束条件],
属性名 数据类型 [约束条件],
...
属性名 数据类型 
[UNIQUE | FULLTEXT |SPATIAL] INDEX | KEY
[别名](属性名1[(长度)] [ ASC | DESC])
);

参数说明

参数说明
UNIQUE可选项,表明是否为唯一索引
FULLTEXT可选,表明索引为全文搜索
SPATIAL可选,表明索引为空间索引
属性名1指索引对应的字段名称,该字段必须被预先定义才可以使用
长度可选参数,指定索引的长度,必须是字符串类型才可使用
ASC |DESC可选参数,ASC表示升序排列,DESC表示降序排列

example:创建student表,并为id字段上建立索引

CREATE TABLE student(
id int(11) AUTO_INCREMENT PRIMARY KEY NOT NULL,
name varchar(50),
math int(5),
index(id)
);

结束后可以使用SHOW CREATE TABLE 表名查看表结构

  • 在已经创建的表中创建索引
CREATE [UNIQUE | FULLTEXT |SPATIAL ] INDEXindex_name
ON table_name(属性 [(length)] [ASC | DESC]);
  • 删除索引
 DROP INDEX index_name ON table_name;

定义约束

  • 定义主键约束

每个表只能有一个主键约束,可以是一个列也可以是多个列构成的一个组合.多个列构成的称为复合主键,而且遵循唯一性原则不能为空,也不能重复

example

CREATE TABLE student (
 name varchar(10) PRIMARY KEY
 );
  • 定义候选约束

如果一个属性集能唯一标识元组,且又不含多余的属性,那么这个属性集称为关系的候选键,值也必须是唯一的,不能为空,使用UNIQUE关键字来定义

  • 定义非空约束

可以使用: NULL | NOT NULL

  • 定义CHECK约束

可以按照需求对列和表约束

CHECK(expr)

其中expr是一个SQL表达式,用于指定需要检查的限定条件

  • 对列实施CHECK约束

在创建表的时候在相应的字段属性里面加上CHECK语句就行了

  • 对于表的CHECK约束

直接在表的字段中添加CHECK约束字段

参考书籍: MySQL数据库管理与开发(慕课版)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不懂电脑的小白

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值