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字节

浮点数据类型

数据类型

单位

FLOAT

4或者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 NULLNULLDEFAULT 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 );

执行效果如下图

Mysql表的元组级联删除 mysql删除表结构语句_主键

设置默认的储存引擎

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 varchar(30)NOT 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数据库管理与开发(慕课版)