史上最简单MySQL教程详解(基础篇)之常用表操作和表参数介绍

指定需要使用的数据库

在我们登录MySQL服务器以后,我们是不能直接创建表的,因为我们还需要使用【USE】语句来指定和切换我们所需要使用的数据,语法如下:

USE 数据库名

例如我们使用之前创建好的【test】数据库,运行结果如图:

mysql> use test;
Database changed

这样,我们就连接到了名字为【test】的数据库

注意事项:

  • 如果提示错误【ERROR 1044(42000):Access denied for user ‘user’@localhost to database ‘mysql’】,意思就是目前登录的用户是没有权限进行这个数据库的连接的,即服务器拒绝了该用户的链接请求;所以请重新确认当前用户是否具有连接该数据库的权限。
  • 这个地方是不要加结尾符【;】,切记;

显示当前数据库下的表名

这里我们依然使用的是【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】表;

注意事项:

  • 如果在这一部分,对于数据类型的选择不是很明确的小伙伴呢,可以查看另一篇博客史上最简单MySQL教程详解(基础篇)之数据类型,来学习有关MySQL数据类型的知识;
  • 如果提示错误【ERROR 1050 (42S01): Table ‘user’ already exists】则表示你创建的这张表已经存在,更改数据表名即可;

显示表的结构

我们可以使用【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 额外信息补充字段
  • 其他查看方式:
    除了这种方式以外,还有其他的方式能达到这样的效果,这里我就不在一一进行介绍了,感兴趣的小伙伴可以自行进行操作;
    • 【show fields from 表名;】这个命令和【DESC】实现的效果是一样的;
    • 【show full fields from 表名】这个命令就可以更加详细的列出有关表的结构信息;
    • 【show index from 表名】和【show keys from 表名】能获得一样的效果,能查看到有关索引的信息;
    • 【show create table 表名】可以查看到有关表的完整信息;

删除表

删除表我们依然使用的是【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 TABLE user (
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 TABLE user (
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 TABLE user (
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】了。

注意事项:


  • 小技巧:
    其实当我们使用这些【SHOW】语句的时候,我们会发现查询出来的东西比较乱,这个时候我们就可以不用【;】来作为语句的结尾,而是改用【\G】,运行结果如下:

mysql> show create table user \G
******* 1. row *******
Table: user
Create Table: CREATE TABLE user (
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)
看上去是不是简洁了很多呢?

创建表时【CREATE】命令的常用选项:

选项 说明
AUTO_INCREMENT 定义自增序列
DEFAULT 定义列的默认值
INDEX 定义索引
[NOT] NULL 允许/禁止NULL值
PRIMARY KEY 定义主键
UNIQUE 唯一性
CHECK 可输入值的范围

这个地方我们着重介绍一下【AUTO_INCREMENT】序列,其他的当我们遇到时,我们再进行详细的介绍

使用AUTO_INCREMENT的注意事项:

  1. 数据类型必须为整数类型
    自增序列的对象列必须定义为【INT】、【TINYINT】、【SMALLINT】等类型
  2. 列的定义后附加【AUTO_INCREMENT关键字,表示此列被定义为自增序列
  3. 使用【PRIMARY KEY】等保证唯一性
    自增序列的序号都是唯一的,一般是作为表的主键来进行使用

自增序列的初始化
对于自增序列的初始化我们仍然使用的是【ALTER】命令,具体的语法如下:

ALTER TABLE 表名 AUTO_INCREMENT=0

这里我就不向大家展示这句语句的操作结果了,有兴趣的同学可以自行尝试;
这里我们就完成了关于表操作的一部分操作,我们将在后面继续介绍关于表操作的知识。

猜你喜欢

转载自blog.csdn.net/m0_37888031/article/details/80450393