SQL脚本是个啥

以.sql结尾的关系型数据库脚本,其中存放的是一条条的SQL语句,和shell脚本一样,从上往下依次执行SQL条目。

要注意的是,每条语句都需要遵守SQL语句的书写格式,以;或\G结尾,不然就会报错。

如何书写

这其实和在数据库中操作一样,只不过是换成了免交互模式,你写入,MySQL执行。你写多少,数据库就执行多少,只需要注意语句是否有错就可以了。

测试SQL脚本

/*----------员工信息表----------*/
create database test;
use test;
create table staff
(
id int(10) primary key not null,
name char(4) not null,
age tinyint(5) not null,
sex enum('男','女') not null,
department set('人事','财务','市场') not null
);
desc test.staff;
insert into staff values(1,'张三',22,'男','人事');
insert into staff values(2,'李莉',23,'女','财务');
insert into staff values(3,'王五',24,'男','市场');
select * from test.staff;

执行方式

有两种执行方式,一种是在命令行中执行,一种是在数据库中执行。

在命令行中执行

格式:mysql -u root -p 密码 <SQL脚本路径

我MySQL没有设置密码,并且SQL脚本在当前目录下。

[root@linux ~]# mysql -uroot <test.sql
Field	Type	Null	Key	Default	Extra
id	int(10)	NO	PRI	NULL	
name	char(4)	NO		NULL	
age	tinyint(5)	NO		NULL	
sex	enum('男','女')	NO		NULL	
department	set('人事','财务','市场')	NO		NULL	
id	name	age	sex	department
1	张三	22	男	人事
2	李莉	23	女	财务
3	王五	24	男	市场

在数据库中执行

格式:source SQL脚本路径

mysql> source test.sql
Query OK, 1 row affected (0.10 sec)

Database changed
Query OK, 0 rows affected (0.17 sec)

+------------+---------------------------------+------+-----+---------+-------+
| Field      | Type                            | Null | Key | Default | Extra |
+------------+---------------------------------+------+-----+---------+-------+
| id         | int(10)                         | NO   | PRI | NULL    |       |
| name       | char(4)                         | NO   |     | NULL    |       |
| age        | tinyint(5)                      | NO   |     | NULL    |       |
| sex        | enum('男','女')                 | NO   |     | NULL    |       |
| department | set('人事','财务','市场')       | NO   |     | NULL    |       |
+------------+---------------------------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

Query OK, 1 row affected (0.00 sec)

Query OK, 1 row affected (0.00 sec)

Query OK, 1 row affected (0.00 sec)

+----+--------+-----+-----+------------+
| id | name   | age | sex | department |
+----+--------+-----+-----+------------+
|  1 | 张三   |  22 || 人事       |
|  2 | 李莉   |  23 || 财务       |
|  3 | 王五   |  24 || 市场       |
+----+--------+-----+-----+------------+
3 rows in set (0.00 sec)

查询记录

执行完成,查看最终的结果

mysql> select * from test.staff;
+----+--------+-----+-----+------------+
| id | name   | age | sex | department |
+----+--------+-----+-----+------------+
|  1 | 张三   |  22 || 人事       |
|  2 | 李莉   |  23 || 财务       |
|  3 | 王五   |  24 || 市场       |
+----+--------+-----+-----+------------+
Logo

快速构建 Web 应用程序

更多推荐