MySQL如何執行SQL腳本文件?

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 || 市場       |
+----+--------+-----+-----+------------+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章