第 2 节 创建一个数据库并插入语句

实验简介

通过本节实验,将创建一个名为mysql_shiyan的数据库,其中有两张表 employee 和 department。

一、实验说明

1、环境登录

无需密码自动登录,系统用户名shiyanlou

2、实验准备

在使用实验楼Linux环境进行本次实验之前,先用以下两条命令打开MySQL服务并使用root用户登录:

sudo service mysql start        #打开MySQL服务

mysql -u root                   #使用root用户登录

二、实验内容

1、新建数据库

首先,我们创建一个数据库,给它一个名字,比如“mysql_shiyan”,以后的几次实验也是对mysql_shiyan这个数据库进行操作。 语句格式为“CREATE DATABASE <数据库名字>;”,(注意不要漏掉“;”)因此具体命令为:

CREATE DATABASE mysql_shiyan;

创建成功后输入命令“show databases;”(注意不要漏掉“;”)检查一下:

01

在大多数系统中,SQL语句都是不区分大小写的,因此以下语句是等价的:

CREATE DATABASE name1;
create database name2;
CREATE database name3;
create DAtabaSE name4;

但是出于严谨,而且便于区分保留字(保留字(reserved word):指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用。)和变量名,我们把保留字大写,把变量和数据小写。

2、连接数据库

接下来的操作,就在刚才创建的mysql_shiyan中进行,首先要连接数据库,使用语句 “use <数据库名字>”:

use mysql_shiyan

如图显示,则连接成功:

02

输入命令“show tables;”可以查看当前数据库里有几张表,现在mysql_shiyan里还是空的:

03

3、数据表

数据表(table)简称表,它是数据库最重要的组成部分之一。数据库只是一个框架,表才是实质内容。 而一个数据库中一般会有多张表,这些各自独立的表通过建立关系被联接起来,才成为可以交叉查阅、一目了然的数据库。如下便是一张表:

| ID  |    name  | phone      |
|:----|:---------|:-----------|
| 01  | Tom      | 110110110  |
| 02  | Jack     | 119119119  |
| 03  | Rose     | 114114114  |

4、新建数据表

在数据库中新建一张表的语句格式为:

CREATE TABLE 表的名字
(
列名a 数据类型(数据长度),
列名b 数据类型(数据长度),
列名c 数据类型(数据长度)
);

我们尝试在mysql_shiyan中新建一张表employee,所以语句为:

CREATE TABLE employee (id int(10),name char(20),phone int(12));

想让命令看起来更整洁,你可以这样输入命令:

04

这时候再“show tables;”一下,可以看到刚才添加的两张表:

05

5、数据类型

在刚才新建表的过程中,我们提到了数据类型,MySQL的数据类型和其他编程语言大同小异,下表是一些MySQL常用数据类型:

|数据类型   |大小(字节)| 用途            |格式             |
|:--------|:-------:|:--------------:|:--------------:|
| INT     |   4     | 整数            |                |
| FLOAT   |   4     | 单精度浮点数     |                 |
| DOUBLE  |   4     | 双精度浮点数     |                 |
|         |         |                |                |
| ENUM    |         | 单选,比如性别    |ENUM('a','b','c')|
| SET     |         | 多选           |SET('1','2','3') |
|         |         |               |                 |
| DATE    |   3     | 日期           | YYYY-MM-DD      |
| TIME    |   3     | 时间点或持续时间 | HH:MM:SS        |
| YEAR    |   1     | 年份值         | YYYY            |
|         |         |               |                 |
| CHAR    | 0~255   | 定长字符串      |                 |
| VARCHAR | 0~255   | 变长字符串      |                 |
| TEXT    | 0~65535 | 长文本数据      |                 |

CHAR和VARCHAR的区别: CHAR的长度是固定的,而VARCHAR的长度是可以变化的,比如,存储字符串“abc",对于CHAR (10),表示存储的字符将占10个字节(包括7个空字符),而同样的VARCHAR(12)则只占用3个字节的长度,12只是最大值,当你存储的字符小于12时,按实际长度存储。

ENUM和SET的区别: ENUM类型的数据的值,必须是定义时枚举的值的其中之一,即单选,而SET类型的值则可以多选。

6、插入数据

刚才我们新建了两张表,使用语句“SELECT * FROM employee;”可以看到employee表中,现在还是空的:

06

刚才使用的SELECT语句将在下一节课详细介绍

我们通过INSERT语句向表中插入数据,语句格式为:

INSERT INTO 表的名字(列名a,列名b,列名c) VALUES(值1,值2,值3);

我们尝试加入Tom、Jack和Rose:

INSERT INTO employee(id,name,phone) VALUES(01,'Tom',110110110);

INSERT INTO employee VALUES(02,'Jack',119119119);

INSERT INTO employee(id,name) VALUES(03,'Rose');

你已经注意到了,有的数据需要用单引号括起来,比如Tom、Jack、Rose的名字,这是由于它们的数据类型是CHAR型。此外VARCHAR,TEXT,DATE,TIME,ENUM等类型的数据也需要单引号修饰,而INT,FLOAT,DOUBLE等则不需要。

第一条语句比第二条语句多了一部分:(id,name,phone) 这个括号里列出的,是将要添加的数据(01,'Tom',110110110)其中每个值在表中对应的列。而第三条语句只添加了(id,name)两列的数据,所以在表中Rose的phone为NULL

现在我们再次使用语句“SELECT * FROM employee;”查看employee表,可见Tom和Jack的相关数据已经保存在其中了:

07

三、小结

经过本次实验,我们已经有了一个名为mysql_shiyan的数据库,其中有两张表,我们已经向其中插入了一些数据。务必完整地操作一遍,以熟练SQL语句的使用。

四、作业

1、根据实验内容完整地练习一遍,并保存截图;

2、新建一个名为library的数据库,包含book、reader两张表,根据自己的理解安排表的内容并插入数据。保存截图。