MySQL基本操作一:数据库和表

本章,主要就数据库和表的基本操作作以总结。

需要事先说明的一点是,我写的所有MySQL的代码将采用大写形式。虽然说至少在MySQL环境下,SQL语句的大小写并不会影响代码运行结果,但是,有同行讲到,SQL语句大写比是一个更好地习惯。因为在执行程序的时候,如果你用的是小写,会先转化为大写字母然后执行,而如果大写,那就可以省一个转化的时间。在大型的ERP系统开发时,往往会这么要求。所以,我也就尽量规范一些了。算是帮自己养成好的习惯。

数据库的操作

MySQL中,数据库的操作基本有:创建,查看,选择,以及删除4种。

  • 创建数据库:CREATE DATABASE database_name;,后面的database_name是你要创建的数据库的名称;
  • 查看数据库:SHOW DATABASES;,查看已经创建的所有数据库
  • 选择数据库:USE database_name;,选择名为database_name的数据库,很多数据库的操作都需要先选中一个数据库,再执行进一步的操作;
  • 删除数据库:DROP database_name;,删除名为database_name的数据库;

创建表

建好了数据库,我们选择一个数据库,来对它进行表的相关操作。表是数据在数据库中一种逻辑上的存储形式,和常见的电子表格类似,其中每一行代表一个记录(可以理解成一个数据对象),而记录的每一列代表一个字段(其实你可以理解成数据对象的属性)。

表的基本操作有创建,查看,删除,修改4种基本操作。我先从创建表说起。

CREATE TABLE table_name(
    Att_name_1 Data_type_1,
    Att_name_2 Data_type_2,
    ...
    Att_name_n Data_type_n,
);

其中,table_name表示要创建的表的名称;Att_name_i表示第i个字段(也就是属性)的名称,Data_type_i表示第i个属性所对应的值的数据类型。这里多说一句,Mysql中的数据类型大致上分为“整数”,“浮点数”,“定点数”,“位”,“日期”,“时间”,“字符串”这么几种。东西太杂,也没必要具体介绍,简单知道就行,具体用到时,可以再查。

举个例子,现在如下创建一个表”tab_student”(最好养成良好的编程习惯,这里为了表明在创建表,最好以 “tab_”+ 的形式设置表名):

CREATE TABLE tab_student(
    ID VARCHAR(20),
    Score INT
);

表”tab_student”中有两个字段,学生的身份ID以及对应的成绩Score,其中,ID是一个VARCHAR(20)型的字符变量,里面的20是参数;Score则是一个整数类型的变量。

另外,如果想要查看当前数据库中有哪些表,可以先选择当前数据库,再通过语句SHOW TABLES查看。而具体查看已经创建的某个表的信息,则通过下面讲的方式了。

查看表

先选择数据库,然后用DESCRIBE语句查看已经存在的表。比如我们创建了数据库test,然后在test中创建了表tab_student,具体设置就像上面一样。则可以按如下代码查看表。

USE test; # 选择数据库test
DESCRIBE tab_student; # 查看test中的表tab_student

运行结果如下图所示:


如果想要查看表结构更详细的定义,可以采用SHOW CREATE TABLE语句,例如:

SHOW CREATE TABLE tab_student;

需要注意的是,在显示表的详细信息时,可以用;, \g或者\G来结束语句(我上面的代码用的是;)。其实,如果用\G可以让表的详细信息显示得更加美观。运行结果你自己跑一下就能发现区别,我这里不给图了。

删除表

DROP TABLE table_name语句用来删除表,其中”table_name”是表名。

修改表

修改表主要分为修改表名和修改表中的字段。

1. 修改表名

ALTER TABLE old_table_name RENAME new_table_name语句用来修改表名,其中”old_table_name”是旧表名,”new_table_name”是新表名,当然,这里所要操作的对象一定得是存在的,不然会报错。

例如,还是上面的例子:

ALTER TABLE tab_student
  RENAME tab_student1;

我分两行写,是为了看起来更清楚。现在将表格tab_student更名为tab_student1。然后我们在用上面说的查看表格的命令,可以看到以新名命名的表格,同时查看旧的名字时,报错。

2. 增加字段

  • ADD语句在表格末尾加字段:
ALTER TABLE table_name
  ADD Att_name_1 Data_type_1;

在表”table_name”末尾,增加属性名为Att_name_1,数据类型为Data_type_1的字段

  • ADD ... FIRST语句在表格开头加字段:
ALTER TABLE table_name
  ADD Att_name_1 Data_type_1 FIRST;

在表”table_name”开头,增加属性名为Att_name_1,数据类型为Data_type_1的字段

  • ADD ... AFTER ...语句在指定字段之后添加字段:
ALTER TABLE table_name
  ADD Att_name_1 Data_type_1;
    AFTER Att_name_2;

在属性名为Att_name_2的字段后,增加属性名为Att_name_1,数据类型为Data_type_1的字段

就上边那个”tab_student”表为例,我现在在字段ID的后面增加一个属性名为Gender,数据类型为CHAR的字段。

USE test # 选中数据库test
ALTER TABLE tab_student # 增加字段
  ADD Gender CHAR
    AFTER ID;

可以看到一开始如左图的表变成了右图的样子。其他添加字段的操作类似,这里不举例了。


3. 删除字段

语法形式如下:

ALTER TABLE table_name
  DROP Att_name;

将属性名为”Att_name”的字段删除。

4. 修改字段

  • 修改字段的数据类型:
ALTER TABLE table_name
  MODIFY Att_name New_data_type;

将属性名为”Att_name”的字段的数据类型新设置为”New_data_type”。

  • 修改字段名:
ALTER TABLE table_name
  CHANGE Old_att_name New_att_name Old_data_type;

将属性名为”Old_att_name”,数据类型为”Old_data_type”的字段名修改为”New_att_name”。注意此处用的是CHANGE而非MODIFY(用混了会报错),再者,三个参数在代码中的顺序不要搞错。以表tab_student为例,我们现在想要将字段名”ID”改为”IDs”,代码如下:

ALTER TABLE tab_student
  CHANGE ID IDs CHAR;

这样,将表的形式由下面的左图变成了右图:


  • 同时修改字段名和数据类型:
ALTER TABLE table_name
  CHANGE Old_att_name New_att_name New_data_type;

将属性名为”Old_att_name”的字段名修改为”New_att_name”,数据类型为”New_data_type”的字段。基本语法结构与上面的修改字段名是一样的。

  • 修改字段顺序:
ALTER TABLE table_name
  MODIFY Att_name_1 Data_type_1 FIRST (AFTER Att_name_2);

我解释一下,括号里面是另一种形式,先不看,括号外头的意思是将属性名为”Att_name_1”,数据类型为”Data_type_1”的字段放置于表的开头。而括号里面的是另一种修改次序的方法,表示将属性名为”Att_name_1”,数据类型为”Data_type_1”的字段放置于属性名为”Att_name_2”的字段后面。

以表tab_student为例,现在将字段”Gender”放置到字段”Score”之后,代码如下:

ALTER TABLE tab_student
  MODIFY Gender CHAR AFTER Score;

tab_student表的形式由下面的左图变为右图:


表的约束

表的约束是用来检验表中数据的完整性的,说的直白一些,就是检验表中的数据是否满足了规定的条件。以tab_student表举例来说,如果我不愿意令字段ID为空,就可以在建表时定义相关的约束。如果用户在插入数据时,违反了这样的约束条件,就会报错。当然可以定义的约束条件分很多种,下面会一一讲解。

1. 设置非空约束

关键字NOT NULL用来约束某字段不能为空,语法形式如下:

CREATE TABLE table_name(
    Att_name Data_type NOT NULL,
    ...
);

上述代码将字段”Att_name”设置为非空。

2. 设置字段的默认值

关键字DEFAULT用来设置字段的默认值。如果在插入数据时,没有为某个字段赋值,则Mysql会自动为这个字段赋值为默认值。其语法形式如下:

CREATE TABLE table_name(
    Att_name Data_type DEFAULT deVal,
    ...
);

上述代码将字段”Att_name”的默认值设置为”deVal”。

3. 设置唯一约束

关键字UNIQUE用来设置对某个字段的唯一约束,唯一约束表示,插入的数据在这个字段上的值得是唯一的,不能重复(你可以类比一般编程语言中“键值对”的“键”)。以学生的信息系统为例,每个人的学号信息应该是唯一的,那么在录入数据时,如果这一项出现了重复,那必然是出错了。所以我们最好设置唯一值约束,如果出现重复,则报错。其语法形式如下:

CREATE TABLE table_name(
    Att_name Data_type UNIQUE,
    ...
);

上述代码将字段”Att_name”设置为了唯一约束。

现在以上面的tab_student为例,我对tab_student中的属性设置上面说的“非空”,“默认值”,“唯一”的约束:

CREATE TABLE tab_student(
    ID VARCHAR(20) NULL UNIQUE, # 设置学生ID非空,且唯一
    Score INT DEFAULT 0, # 设置Score默认值为0
    Gender CHAR
);

我们看到表会变成下面的样子:


4. 设置主键约束

主键的作用在于用某个字段唯一地标识所有记录,以便在数据库中快速地查找数据。比如我们一般用索引号来唯一标识每一条数据记录。由于主键可以是单一字段,也可以是多个字段,所以,下面分两种情况讨论:

  • 单字段主键:用关键字PRIMARY KEY设置主键。比如,还是tab_student的例子,现在将学号设置为主键。
CREATE TABLE tab_student(
    ID VARCHAR(20) PRIMARY KEY, # 设置学生ID为主键
    Score INT,
    Gender CHAR
);

我们查看刚才建的表:


发现ID字段也是非空的,其实,设置了主键,则主键字段必然是非空且唯一的。

  • 多字段主键:当主键由多个字段组合而成时,则需要关键字CONSTRAINTPRIMARY KEY配合设置。其语法结构如下:
CREATE TABLE tab_student(
    ID VARCHAR(20),
    Name VARCHAR(20),
    Score INT,
    CONSTRAINT ID_Name PRIMARY KEY (ID, Name)
);

在上面代码展示的例子中,语句CONSTRAINT ID_Name PRIMARY KEY (ID, Name),将学生的ID和Name组合起来设置为主键。最后括号内表示的是主键涵盖的字段,而CONSTRAINT后面的ID_Name则是为这个约束起的名字(就设置主键约束来说,这个名字不要也没什么影响)。

例子最后生成的表信息如下:


4. 设置字段值自动增加

往表中插入记录时,往往会遇到需要递增的字段。例如商品编号啊,等等。Mysql支持对这类字段设置字段值自动增加的约束。默认情况下,设置了自动增加的字段值为整数,从1开始,每次加1。又因为这种自动增加的字段肯定是唯一的,所以一般我们也把它设置为主键。

设置自动增加的关键字为AUTO_INCREMENT

CREATE TABLE tab_student(
    ID INT PRIMARY KEY AUTO_INCREMENT, # 将ID设置为整数类型,并且设置字段值自动增加
    Name VARCHAR(20),
    Score INT
);

现在这个表示这样的:


注意,如果要将某个字段设置为自动增加,那么必须将这个字段设置“唯一”的属性,即设置为主键或者唯一约束,否则会报错。

猜你喜欢

转载自blog.csdn.net/guoziqing506/article/details/80426545