语法:
CREATE TABLE [IF NOT EXISTS]表名(
字段1数据类型 [约束调件] [默认值],
字段2数据类型 [约束调件] [默认值],
字段3数据类型 [约束调件] [默认值],
...
[表约束条件]
);
简单语法:
create table 表名(
列名1 数据类型(宽度) 约束条件,
列名2 数据类型(宽度) 约束条件,
列名3 数据类型(宽度) 约束条件,
)
在创建数据表时,必须指定数据表的表名称,表名称在win系统不区分大小写,在Linux操作系统上区分,如果需要在Linux操作系统上不区分大小写,则需要在配置文件my.cnf添加:
lower_case_table_name=1
示例:
在名称为xiaohuagou创建数据表:
mysql> create table if not exists xiaohuagou_pixel(
-> id int(6),
-> recommend char(20),
-> follow varchar(100)
-> );
Query OK, 0 rows affected, 1 warning (0.01 sec)
到这里表创建完成,虽然这里没有报错,但是有一个警告信息(1 warning(0.01 sec)
)使用SQL语句进行查看MySQL的警告信息
mysql> show warnings;
+---------+------+------------------------------------------------------------------------------+
| Level | Code | Message |
+---------+------+------------------------------------------------------------------------------+
| Warning | 1681 | Integer display width is deprecated and will be removed in a future release. |
+---------+------+------------------------------------------------------------------------------+
1 row in set (0.00 sec)
是因为在MySQL的8.x版本中,不再推荐为int类型指定显示长度,并在未来的版本中可能去掉这样的语法,因此这里去掉int类型的显示长度,重新创建名称为xiaohuagou——pixel的数据表
mysql> create table xiaohuagou_pixel(
-> id int,
-> t_threshold varchar(20),
-> t_edge varchar(100)
-> );
Query OK, 0 rows affected (0.01 sec)
这里不再显示警告信息,因此在MySQL 8.x版本中创建数据表时,建议不要为int类型指定显示长度,接下来再次查看xiaohuagou数据库中存在的数据表
mysql> show tables;
+----------------------+
| Tables_in_xiaohuagou |
+----------------------+
| xiaohuagou_pixel |
+----------------------+
1 row in set (0.00 sec)
在MySQL中创建数据表时,可以为数据表指定主键(主码),包含表中的一列或者多列,能够唯一标识表中的一行记录。主键列的数据必须唯一且非空,主键可以分为单列主键和多列主键。
只包含数据表中的一个字段,可以在定义数据列的同时指定主键,也可以在定义完数据表中的所有列的同时指定主键
字段 数据类型 primary key [默认值]
mysql> create table xhg_data(
-> id int primary key,
-> gray_t varchar(200),
-> threshold_t varchar(1000)
-> );
Query OK, 0 rows affected (0.01 sec)
[constratint 约束条件名] primary key [字段名]
mysql> create table xhg_l(
-> id int,
-> gray_t varchar(200),
-> threshold_t varchar(1000),
-> primary key(id)
-> );
Query OK, 0 rows affected (0.01 sec)
desc table name;
mysql> desc xhg_data;
+-------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| id | int | NO | PRI | NULL | |
| gray_t | varchar(200) | YES | | NULL | |
| threshold_t | varchar(1000) | YES | | NULL | |
+-------------+---------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> create table danhuatang(
-> id int,
-> gray_ts varchar(200),
-> threshold varchar(1000),
-> bottom_t varchar(1000),
-> primary key(id,gray_ts)
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> desc danhuatang;
+-----------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+---------------+------+-----+---------+-------+
| id | int | NO | PRI | NULL | |
| gray_ts | varchar(200) | NO | PRI | NULL | |
| threshold | varchar(1000) | YES | | NULL | |
| bottom_t | varchar(1000) | YES | | NULL | |
+-----------+---------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
alter table table_name add primary key(filed,...);
alter table table_name add primary key(number,course);
mysql> desc xiaohuagou_pixel;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| t_threshold | varchar(20) | YES | | NULL | |
| t_edge | varchar(100) | YES | | NULL | |
+-------------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> alter table xiaohuagou_pixel add primary key(id,t_edge);
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc xiaohuagou_pixel;
+-------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+-------+
| id | int | NO | PRI | NULL | |
| t_threshold | varchar(20) | YES | | NULL | |
| t_edge | varchar(100) | NO | PRI | NULL | |
+-------------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
alter table tab_name modify 字段primary key;
mysql> alter table xhg_l modify id int primary key;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc xhg_l;
+-------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| id | int | NO | PRI | NULL | |
| gray_t | varchar(200) | YES | | NULL | |
| threshold_t | varchar(1000) | YES | | NULL | |
+-------------+---------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
alter table table_name add constraint filed primary key(filed);
mysql> alter table xhg_l add constraint gray_t primary key(gray_t);
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc xhg_l;
+-------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| id | int | NO | | NULL | |
| gray_t | varchar(200) | NO | PRI | NULL | |
| threshold_t | varchar(1000) | YES | | NULL | |
+-------------+---------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
alter table table_name add constraint primary key(filed);
mysql> alter table xhg_l add constraint primary key(id);
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc xhg_l;
+-------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| id | int | NO | PRI | NULL | |
| gray_t | varchar(200) | NO | | NULL | |
| threshold_t | varchar(1000) | YES | | NULL | |
+-------------+---------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
alter table table_name drop primary key;
mysql> desc xhg_l;
+-------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| id | int | NO | PRI | NULL | |
| gray_t | varchar(200) | YES | | NULL | |
| threshold_t | varchar(1000) | YES | | NULL | |
+-------------+---------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> alter table xhg_l drop primary key;
Query OK, 0 rows affected (0.02 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc xhg_l;
+-------------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------+-------+
| id | int | NO | | NULL | |
| gray_t | varchar(200) | YES | | NULL | |
| threshold_t | varchar(1000) | YES | | NULL | |
+-------------+---------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
constraint 外键名 foreign key (从表列名)references 主表名(主表列);
alter table table_name(从表)add constraint外键名(也叫约束名)foreign key(外键列(从表))references 表名(主表)(列名(主表的列));
mysql> show tables;
Empty set (0.00 sec)
mysql> create table dht(
-> id int primary key,
-> name varchar(50),
-> number varchar(100)
-> );
Query OK, 0 rows affected (0.04 sec)
mysql> create table xhm(
-> id int primary key,
-> name_t varchar(50),
-> number_t varchar(100),
-> pixel int
-> );
Query OK, 0 rows affected (0.01 sec)
mysql> alter table xhm add constraint zoo foreign key(pixel) references dht(id);
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
被引用的表不能直接删除,要先删除引用的表;
以上都的操作都是物理外键,数据库级别的外键不建议使用,避免数据库过多的困扰
desc table_name;desc table_name;
类 | 名 | 存储需求(取值范围) | 说明 |
---|---|---|---|
整型 (integer) | tinyint | 1字节([0~255],[-128 ~127]);255=2^ 8-1;127=2^7-1 | 很小整数 (8位2进制) |
smallint | 2字节(0~65535、-32768 ~32767);65535=2^16-1 | 短整型 (小整数16位2进制) | |
mediumint | 3字节(0~16777215);16777215=2^24-1 | 中整型(24位2进制整型) | |
int | 4字节(0~4294967295);4294967295=2^32-1 | 普通整型(32位2进制) | |
bignit | 8字节(0~18446744073709551615);18446744073709551615=2^64 | 大整数(64位2进制整数) | |
浮点数&定点数(Decimal) | float | 4字节 | 单精度浮点数 |
double | 8字节 | 双精度浮点数 | |
decimal(m,d) | M+2字节 | 压缩严格的定点数 | |
时间/日期型(date) | year | YYYY 1901-2155 | |
time | HH:MM:SS -838:59:59~838:59:59 | ||
date | YYYY-MM-DD 1000-01-01~9999-12-3 | ||
datetime | YYYY-MM-DD HH:MM:SS:1000-01-01 00:00:00~9999-12-31 23:59:59 | ||
timestamp | YYYY-MM-DD HH:MM:SS 19700101 00:00:01 UTC~2038-01-19 03:14:07UTC | ||
字符串类型(text binary) | char | 0~255字节 | 定长 |
varchar | 0~255字节 | 变长 | |
tinyblob | 0~255字节 | 二进制短文本字符串 | |
TINYTEXT | 0~255字节 | 短文本数据 | |
BLOB | 0~65535字节 | 二进制形式的长文本数据 | |
MEDIUMBLOG | 0~167772150字节 | 中等二进制文本 | |
LONGBLOB | 0~4294967295字节 | 极长二进制文本 | |
TEXT | 0~65535字节 | 长文本数据 | |
MEDIUMTEXT | 0~167772150字节 | 中等长度文本 | |
LONGTEXT | 0~4294967295字节 | 极长文本 | |
VARBINARY(M) | 0~M个字节的变长字节字符串 | max-length 值的最大长度(以字节为单位);如果长度未指定,则其为 1,长度必须在 1 到 32767 范围内 | |
BINARY(M) | 0~M个字节的定长字节字符串 | max-length值的最大长度(以字节为单位);如果长度未指定,则其为 1,长度必须在 1 到 32767 范围内 |