在我们登录MySQL服务器以后,我们是不能直接创建表的,因为我们还需要使用【USE】语句来指定和切换我们所需要使用的数据,语法如下:
USE 数据库名
例如我们使用之前创建好的【test】数据库,运行结果如图:
mysql> use test;
Database changed
这样,我们就连接到了名字为【test】的数据库
注意事项:
这里我们依然使用的是【SHOW】语句,语法如下:
SHOW 数据库名
运行结果如图:
mysql> show tables;
Empty set (0.00 sec)
因为这是我们才建立的数据库,所以显示里面是空的,但是命令是执行成功了;
接下来,我们就尝试着创建一个表结构如下的数据表:
域名(字段名) | 数据类型 | 说明 |
---|---|---|
userId | char(5) | 用户Id(主键) |
name | varchar(20) | 用户名 |
sex | char(1) | 性别(0:男,1:女,默认为0) |
这里我们使用的就是【CREATE TABLE 】语句,具体语法如:
CREATE TABLE 表名(域名,数据类型,列选项[...])
关于列选项的具体内容后面会有详细的介绍
执行结果如下:
mysql> create table user (userId char(5) PRIMARY KEY,name varchar(20),sex char(1) DEFAULT ‘0’);
Query OK, 0 rows affected (0.06 sec)
mysql> show tables;
+—————-+
| Tables_in_test |
+—————-+
| user |
+—————-+
1 row in set (0.00 sec)
这里我们就可以看到,我们已经成功的创建了这张【user】表;
注意事项:
我们可以使用【DESC】或者【DESCRIBE】来显示表的列构造,语法如下:
DESC 表名
运行结果如图:
mysql> desc user;
+——–+————-+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+——–+————-+——+—–+———+——-+
| userId | char(5) | NO | PRI | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | 0 | |
+——–+————-+——+—–+———+——-+
这里就显示了【user】表的结构。
注意事项:
字段名 | 说明 |
---|---|
Filed: | 域名(字段名 |
Type: | 数据类型 |
Null | 该字段是否允许为空值 |
Key | 是否为主键 |
Default | 默认值 |
Extra | 额外信息补充字段 |
删除表我们依然使用的是【DROP】命令,语法如下:
DROP TABLE 表名
运行结果:
mysql> show tables;
+—————-+
| Tables_in_test |
+—————-+
| user |
+—————-+
1 row in set (0.00 sec)
mysql> drop table user;
Query OK, 0 rows affected (0.00 sec)
mysql> show tables;
Empty set (0.00 sec)
当我们在实际的开发往时,往MySQL数据库储存字符串过程中,会遇到很多字符乱码的问题,其中有着各种各样的原因,但是大多数的情况是由于字符集不一致造成的,所以我们可以在创建表时就顺便就制定字符集。我们有两种方式来指定,我们这里将进行简单的介绍
语法如下:
CREATE TABLE 表名(域名,数据类型,列选项[...]) CHARACTER SET 字符集名称 COLLATE 排序规则名称;
运行结果如图:
mysql> drop table user;
Query OK, 0 rows affected (0.00 sec)
mysql> create table user (userId char(5) PRIMARY KEY,name varchar(20),sex char(1) DEFAULT ‘0’) CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 0 rows affected (0.05 sec)
mysql> show create table user;
+——-+———————————————————————————————————————————————————————————-+
| Table | Create Table |
+——-+———————————————————————————————————————————————————————————-+
| user | CREATE TABLEuser
(
userId
char(5) NOT NULL,
name
varchar(20) DEFAULT NULL,
sex
char(1) DEFAULT ‘0’,
PRIMARY KEY (userId
)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+——-+———————————————————————————————————————————————————————————-+
1 row in set (0.00 sec)
首先我们通过删除原来的【user】表后,重新创建了一个【user表】,并指规则定了它的字符集为【utf8】和排序规则【utf8_general_ci】,并通过【show create】语句查看了表现在的信息;
有时候,其实是当我们已经建立好表以后才发现自己忘记设置了字符集和排序规则,这个时候我们应该怎么办呢?这个时候就需要我们的【ALTER】语句了。具体的语法如下:
ALTER TABLE 表名 DEFAULT CHARACTER SET 字符集名称 COLLATE 排序规则名称;
运行结果如下:
mysql> create table user (userId char(5) PRIMARY KEY,name varchar(20),sex char(1) DEFAULT ‘0’);
Query OK, 0 rows affected (0.03 sec)
mysql> show create table user \G;
***************** 1. row *****************
Table: user
Create Table: CREATE TABLEuser
(
userId
char(5) NOT NULL,
name
varchar(20) DEFAULT NULL,
sex
char(1) DEFAULT ‘0’,
PRIMARY KEY (userId
)
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
mysql> ALTER TABLE user CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 0 rows affected (0.09 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table user \G;
***************** 1. row *****************
Table: user
Create Table: CREATE TABLEuser
(
userId
char(5) CHARACTER SET latin1 NOT NULL,
name
varchar(20) CHARACTER SET latin1 DEFAULT NULL,
sex
char(1) CHARACTER SET latin1 DEFAULT ‘0’,
PRIMARY KEY (userId
)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
我们首先在创建的时候并没有指定字符集和排序规则,我们可以看到,它选择的是默认的字符集,所以当我们运行修改的命令后,就已经修改为【utf8】了。
注意事项:
mysql> show create table user \G
******* 1. row *******
Table: user
Create Table: CREATE TABLEuser
(
userId
char(5) NOT NULL,
name
varchar(20) DEFAULT NULL,
sex
char(1) DEFAULT ‘0’,
PRIMARY KEY (userId
)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
看上去是不是简洁了很多呢?
选项 | 说明 |
---|---|
AUTO_INCREMENT | 定义自增序列 |
DEFAULT | 定义列的默认值 |
INDEX | 定义索引 |
[NOT] NULL | 允许/禁止NULL值 |
PRIMARY KEY | 定义主键 |
UNIQUE | 唯一性 |
CHECK | 可输入值的范围 |
这个地方我们着重介绍一下【AUTO_INCREMENT】序列,其他的当我们遇到时,我们再进行详细的介绍
使用AUTO_INCREMENT的注意事项:
自增序列的初始化
对于自增序列的初始化我们仍然使用的是【ALTER】命令,具体的语法如下:
ALTER TABLE 表名 AUTO_INCREMENT=0;
这里我就不向大家展示这句语句的操作结果了,有兴趣的同学可以自行尝试;
这里我们就完成了关于表操作的一部分操作,我们将在后面继续介绍关于表操作的知识。