简述: 本篇是数据库的学习笔记,仅供自己学习使用。

本文初发于 “曾晨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指要修改位置的字段,FIRSTAFTER 字段2为可选参数。

修改字段为表的第一个字段

如果我们想把字段的位置调整到第一列,只需做FIRST的位置说明。

修改字段到表的指定列之后

还有一种位置调整的方法可以让你把想调整的字段放在除了第一列的任何位置。调整的时候需要做AFTER 字段2的位置说明。

删除表的外键约束

语法规则:

ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名;