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 | 男 | 市場 |
+----+--------+-----+-----+------------+