前言
在上一节中,主要介绍了 Navicat Premium 17 的使用以及创建一个基础的表格。当时只设置了给数据表补充字段,没有设置给数据表删除字段。现在补充一下。
ALTER TABLE student ADD test int(4);
给名为 student 的数据表添加 test 列,数据类型为 int(4)
执行新增测试样例代码如下所示:
执行结果如下所示:
执行测试样例删除命令:
ALTER TABLE 表名 DROP 列名;
删除数据表的指定列
代码执行结果如图所示:
一. 设置自增列
设置自增列有两种情况:第一种情况是增加一个新的列(属性),并把它设置为自增状态。第二情况是将表中存在的某一列设置为自增。
在数据表中,自增经常被当做主键,但是自增并不一定是主键。主键:数据库表中用于唯一标识每条记录的一列或一组列。主键在每个数据表中只能存在一个。
1.1 数据表添加自增列
ALTER TABLE student ADD test int(4) PRIMARY KEY AUTO_INCREMENT;
给 student 数据表 添加 test列,并将其设置为主键和自增。
执行完代码,在指定位置刷新如下图所示:
注意在此时如果没有设置主键会报错,在这个软件中自增就需要设置为主键。
1.2 设置数据表某一列为自增
首先执行下列命令删除 test 列,因为一个表中只能存在一个主键。
ALTER TABLE student DROP test;
删除 student 表 test 属性。
命令的输入及解释:
ALTER TABLE student CHANGE id id int(4) PRIMARY KEY AUTO_INCREMENT;
将 student 表中的 id 设置为主键自增
命令原型:ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [约束];
查看数据信息
SHOW COLUMNS FROM student LIKE 'id';
查看表 student 的 id 属性的信息
- 列名为“ id”
- 数据类型为int(4)
- 允许值为不空(NO)
- 定义主键(Key 为 PRI)
- 默认值为NULL(Default列为空)
- 数据量设置为自增(Extra列为 auto_increment)
二. 设置属性为禁止为空
设置禁止为空也有两个情况:第一种情况是增加一个新的列(属性),并把它设置为禁止为空状态。第二情况是将表中存在的某一列设置为禁止为空。
2.1 数据表添加禁止为空列
ALTER TABLE student ADD test int(4) NOT NULL;
设置数据表 student 增加 非空列 test
测试是否添加成功
SHOW COLUMNS FROM student LIKE 'test';
2.2 尝试添加为空
先正常添加数据,测试之前代码正确性。
INSERT INTO student (name,sex,age,test) VALUES ('测试','男','19','1');
添加数据
SELECT * FROM student;
查看表中所有的数据
查看表中所有的数据 结果如下,添加成功。
添加第一种错误数据。添加age为空的数据,所以这里说明在代码中不能直接设置为空数据。
INSERT INTO student (name,sex,age,test) VALUES ('测试1','男','','1');
添加数据
添加age为空的数据,所以这里表名在代码中不能直接设置为空数据
添加第二种错误数据。添加位置如下图所示:
- 第一步双击红色框 student
- 之后就会弹出黄色框的内容,如果没有自动切换过去,手动点击即可
- 点击下方绿色加号
- 输入完数据之后,点击加号那一列第三个符号“对号”完成输入
只添加属性 test 的内容,可以添加成功。
添加其他四个属性的值,不添加 test 属性,报错。
通过控制变量法可以判断非空已经生效。
2.3 设置数据表某一列为非空
首先执行下列命令删除 test 列,因为我的习惯是测试数据即使删除。
ALTER TABLE student DROP test;
删除 student 表 test 属性。
通过选中测试数据,点击红色区域内的减号,删除数据。
ALTER TABLE student CHANGE name name VARCHAR(20) NOT null;
将 student 表中的 name 设置为非空
命令原型:ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [约束];
测试过程忽略,测试结果成功。MySQL数据库主键自增长删除后ID存在不连续的问题,这是正常的,可以通过手动输入代码的办法更改数据。下图为设置“name”为空。
三. 设置属性为唯一值
设置禁止为唯一值有两个情况:第一种情况是增加一个新的列(属性),并把它设置为唯一值的状态。第二情况是将表中存在的某一列设置为唯一值。常见的有邮箱号不能重复使用,电话号,身份证号码登不能重复使用。
3.1 数据表添加唯一列
ALTER TABLE student ADD test int(4) NOT NULL;
设置数据表 student 增加 非空列 test
测试是否添加成功
SHOW COLUMNS FROM student LIKE 'test';
3.2 尝试添加重复数据
第一步:给“张三”添加“123”
第二步:给“李四”添加“123”。添加失败。
3.3 设置数据表某一列为唯一值
ALTER TABLE student CHANGE name name VARCHAR(20) UNIQUE;
将 student 表中的 name 设置为唯一值
命令原型:ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [约束];
四. 设置默认
ALTER TABLE student ADD post char(4) DEFAULT('学生');
设置默认值为学生
刷新查看显示如下
五. 删除旧表创建新表
DROP TABLE student;
删除数据表
创建一个新的数据表
CREATE TABLE student(
id INT(4) PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
tel INT(11) UNIQUE,
sex char(1),
position VARCHAR(4) DEFAULT('学生'));
/* id主键自增,name 非空,tel 唯一,sex 正常字符型,position 职位默认学生 */
添加数据
INSERT INTO student
(name,tel,sex)
VALUES
('张三','1516666777','男'),
('张四','1516666778','男'),
('李三','1516666779','女'),
('李五','1516666780','男');
/* 插入四条数据。id是自增的,职位默认,所以不需要添加*/
查看数据
数据表中的某一列就是表的某一个属性。
主键:数据库表中用于唯一标识每条记录的一列或一组列。主键在每个数据表中只能存在一个。