简述: 本篇是数据库的学习笔记,仅供自己学习使用。
本文初发于 “曾晨de小站” zengchen233.cn,同步转载于此。
我们先来了解一下在数据库中创建表的规则:
CREATE TABLE 表名(
字段名 数据类型,
字段名 数据类型,
.....);
实例如下:
CREATE TABLE t_user
(
id INT,
username VARCHAR(32),
password VARCHAR(32),
phone VARCHAR(11)
);
语法如下:
DESCRIBE 表名;
简写:
DESC 表名;
有两种方式可以添加主键约束: 1.在定义列的同时指定主键; 2.在定义完字段之后再指定主键。
CREATE TABLE t_user
(
id INT primary key,
username VARCHAR(32),
password VARCHAR(32),
phone VARCHAR(11)
);
在MySQL
中给表中字段添加外键约束的语法规则如下:
CONSTRAINT 外键名 FOREIGN KEY 字段名 REFERENCES 主表名(主键名)
我们来创建两张表,并给员工表(t_emp)
添加外键:
CREATE TABLE t_dept
(
deptId INT PRIMARY KEY,
name VARCHAR(22),
location VARCHAR(50)
);
CREATE TABLE t_emp
(
id INT PRIMARY KEY,
name VARCHAR(22),
deptId INT,
CONSTRAINT fk_emp_dept1 FOREIGN KEY(deptId) REFERENCES t_dept(deptId)
);
唯一约束(Unique Constraint)
要求该列唯一,允许为空,但是只能有一个空值。唯一约束可以确保一列或者几列不出现重复值。
定义部门表的部门名称唯一,SQL
语句如下:关键词 UNIQUE
。
CREATE TABLE t_dept(
id INT PRIMARY KEY,
name VARCHAR(22) UNIQUE,
location VARCHAR(50)
)
关键词:NOT NULL
;
例如:
CREATE TABLE t_emp(
id INT PRIMARY KEY,
name VARCHAR(22),
sex VARCHAR(2) DEFAULT '男'
) DEFAULT CHARSET=utf8;
注意:
DEFAULT CHARSET=utf8;
使用英文字符则不需要。在数据库应用中,经常有个需求就是,在每次插入新纪录时,系统自动生成字段的主键值,即:
CREATE TABLE t_tmp
(
id int PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32)
)
关键词:AUTO_INCREMENT
,默认情况下初始值和增量都为1
。
如果你想删掉表重新创建,你可以使用如下语句删除表。
DROP TABLE 表名;
有强迫症或健忘症的小伙伴们在建好数据库和表以后,通常会怀疑自己刚才是不是敲错了,怎么办?如果不是使用图形界面是不是就没法查看啦?
不存在的,这就告诉你查看口令:DESCRIBE
语法规则为:DESCRIBE 表名;
DESCRIBE
可以查看表的字段信息,包括:字段名、字段数据类型、是否为主键、是否有默认值等。
用DESCRIBE
查表的结构是这样的。
其中,该结构中各个字段的含义分别为:
NULL
:表示该列是否能存储 NULL
值;Key
:表示该列是否已编制索引;PRI
:表示该列是此表主键的一部分;UNI
:表示该列是 UNIQUE
索引的一部分;MUL
:表示在列中某个给定值允许出现多次;Default
:表示该列是否有默认值,如果有的话值是多少;Extra
:表示可以获取的与给定列有关的附加信息。什么?你发现表建错了,你想知道错在哪里了? 那就用SHOW CREATE TABLE
语句吧。
语法规则为:
SHOW CREATE TABLE 表名;
再告诉大家一个小诀窍,是不是觉得返回的结果排版有点乱。我们加上\G
后效果就会有所改善哟!
随着表越来越多,有时候你会后悔之前的数据表的名字根本没有认真斟酌过,想要重新命名一下,可以做到吗?
答案是:可以!MySQL
是通过ALTER TABLE
语句来修改表名的。
语法规则为:
ALTER TABLE 旧表名 RENAME 新表名;
有时,在我们建好一张表后会突然发现,哎呀!字段名貌似写错了!怎么办?要删了表再重新建一个新表吗?还是要删了这个字段再新建一个新的字段? 都不用,MySQL
中修改字段名称也有专门的语句,接近于自然语言,很好记忆。
语法规则为:
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 新数据类型;
随着存储的数据越来越多,数据库新人可能会发现,哎呀,当初预留的数据类型已经不能满足要求了,或者当初预留的字符太少了,怎么办?怎么修改?规则来了。
语法规则为:
ALTER TABLE 表名 MODIFY 字段名 数据类型;
因为甲方的业务需求是不停变化的,所以在数据库操作中,添加字段可是常有的事。一个完整的字段包括:字段名
、数据类型
和完整性约束
。
语法规则为:
ALTER TABLE 表名 ADD 新字段名 数据类型 [约束条件] [FIRST|AFTER] 已存在字段名;
以下是在 MySQL
中常用的约束。
NOT NULL
约束:确保某列不能有 NULL
值。
DEFAULT
约束:当某列没有指定值时,为该列提供默认值。
UNIQUE
约束:确保某列中的所有值是不同的。
PRIMARY Key
约束:唯一标识数据库表中的各行/记录。
CHECK
约束:CHECK
约束确保某列中的所有值满足一定条件。
只要不做[FIRST|AFTER]
的位置说明,在添加字段时MySQL
会默认把新字段加入到表的最后一列。
如果我们想在第一列添加新的字段,只需做FIRST
的位置说明。
如果我们想在某一列后面添加新的字段,只需做AFTER
的位置说明,然后注明你想让它添加在哪个字段的后面即可。
有添加的需求就会有删除的需求。删除一个字段就是将数据表中的某个字段从表中移除。
语法规则为:
ALTER TABLE 表名 DROP 字段名;
在一个数据表被创建的时候,其字段的排列顺序就已被确定了。不能变了吗?怎么可能,一锤子买卖没人敢做。
我们可以通过ALTER TABLE
来改变表中字段的相对位置。
语法规则为:
ALTER TABLE 表名 MODIFY 字段1 数据类型 FIRST|AFTER 字段2;
其中,字段1
指要修改位置的字段,FIRST
与AFTER 字段2
为可选参数。
如果我们想把字段的位置调整到第一列,只需做FIRST
的位置说明。
还有一种位置调整的方法可以让你把想调整的字段放在除了第一列的任何位置。调整的时候需要做AFTER 字段2
的位置说明。
语法规则:
ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;