这一篇,我们继续来整理如何操纵数据库的表和其中的列,主要涉及到的就是增删改查,也就是数据库中的DDL(data defination language)重点体现在对数据结构的增改,而非数据本身。
首先,让我们先打开数据库,没有安装数据库的小伙伴,可以参考上一篇文章(MySQL数据库基础 MySQL的下载安装及使用)
数据库
首先,我们先来对数据库进行操作。需要注意的是,这个数据库只得是储存数据的仓库(database 简称DB)而非mysql这样的数据库管理软件(database manager system 简称DBMS)。但在实际上,我们总是使用数据库代表这两个东西。
查看所有数据库
查看所有数据库,需要使用语句show databases;
它会为我们显示所有已经存在的数据库。
可以看到, 它显示了MySQL数据库中系统默认的几个数据库。
需要万分注意的是:语句后面要加分号!!!!(当然不加的话系统不会执行的)
创建、使用数据库
创建一个新的数据库,需要使用到语句create database
;
它的格式是: CREATE DATABASE 数据库名;
(虽然MySQL是大小写不敏感的,但是为了突出系统关键字,我们还是倾向于将这些关键字大写,将自己的命名小写)
例如,我们创建用于学习MySQL的数据库:
创建成功,使用SHOW DATABASES;
语句查看一下
创建好数据库,使用USE DATABASE 数据库名;
语句切换对数据库的引用。
(这条语句不加分号也是可以执行的,但是仍然建议大家要加上分号)
切换数据库之后,就可以直接使用该数据库中的名称了(表名、函数名)。若想使用其它数据库中的名称,则需要使用格式:数据库名.表/函数名称
删除数据库
删除数据库,可使用语句:DROP DATABASE 数据库名
将刚刚创建的learn数据库删除 (然后再灰溜溜的创建回来)
表
数据库中,组织数据最重要的单元就是表了。一张表类属于某个数据库,存储多条相同类型的数据。
表是一种二维结构,有行和列。一列表示一种信息,我们称之为一个字段。一行则表示一条记录,它包含多个字段的内容,是一条完整地信息。
创建表
在数据库中创建一张表,需要用到语句CREATE TABLE
它的具体格式为
CREATE TABLE 表名(
字段1 类型 约束,
字段2 类型 约束,
字段3 类型 约束,
.
.
.
);
按照这条语句,创建出来的表就会拥有声明的字段,并且满足类型和约束
(该语句可以写作一行,事实上即使是写成多行,他们也是被看做一个整体进行处理的。写成多行是为了我们方便阐明每个字段,这也是一个好习惯。)
例如,创建学生表,包含学号(id),姓名(name),班级(class),年级(grade);
可以看到,在声明每个字段的名称之余,我们还对字段的各种属性加以约束,下面就来简述一下这些约束。
约束
- 默认值
DEFAULT
:为字段设置默认值,当插入的数据中没有该字段的内容时,使用默认值。不设置时为NULL - 非空
NOT NULL
:将字段设置成为非空字段,约束该字段不能为空。不设置时接受NULL - 唯一
UNIQUE
:将字段设置成为唯一的字段,该字段下所有记录不能出现重复,不设置时允许重复 - 主键
PRIMARY KEY
将该字段设置成为主键(主键是用以当做唯一确定一条数据的标志,因此它不能为空,也必须唯一,那么一个好办法就是让它自增)。 - 自增
AUTO_INCREMENT
:将字段设置为自增的,当插入一条新的记录时,对于该字段默认采用上一条插入记录的递增值。如果插入数据中又该字段的内容,则会覆盖。常用于设置自增主键。
查看所有表
像查看所有数据库那样,仍然可以使用show语句查看所有的表。
这个语句就是SHOW TABLES;
查看表字段
查看表的信息,进一步的,可以使用语句DESC 表名
可以查看该表的所有字段及其类型和约束
这也是一个非常常用的查看语句
重命名表
如果发现表名命名错误,可以使用RANAME TABLE 表名 TO 新的表名
来更改表名。
例如将刚刚的学生表改成复数:
删除表
哪个表不想要了,就用DROP TABLE 表名
将其删除
(为了后面的文章,还得加回来,嘤嘤嘤)
字段
对字段的操作,不难记忆,因为归根结底还是对表的操作。
因此,操作字段都需要先表明要修改表(ALTER TABLE)再表明要怎么修改表。
添加新的字段
添加新的字段,使用语句ALTER TABLE 表名 ADD 字段名 类型 约束;
例如,在学生表中,添加一个分数字段,整型,非空
删除字段
删除字段所用的关键字想必你已经猜到了,就是已经出现过两次的DROP;
完整语句是:ALTER TABLE 表名 DROP 字段名;
例如,将刚刚添加的分数字段删除:
修改字段
修改一个字段,使用关键字MODIFY,可以修改字段的类型和约束,
完整语句为:ALTER TABLE 表名 MODIFY 字段名 类型 约束
例如,将学生表中的年级默认值设置为1,类型设置为tinyint
重定义字段
不同于修改一个字段,重定义字段CHANGE不仅可以修改字段的属性,也可以修改字段的名称。也因此,他常被用作重命名字段。
完整语句为ALTER TABLE 表名 CHANGE 字段名 新的字段名 类型 约束;
例如,将学生的班级字段名称改为student_class,并将类型改成smallint:
需要注意的是,重定义字段时,原有字段的约束不会保留,一切以新的约束为主。