1. DDL應(yīng)用
1.1 數(shù)據(jù)定義語言
1.2 庫定義
1.2.1 創(chuàng)建數(shù)據(jù)庫
create database school charset utf8mb4; #指定字符集
create database school charset utf8mb4 collate utf8mb4_bin; #指定校對規(guī)則(默認大小寫不敏感)
show charset; #查看數(shù)據(jù)庫中支持的字符集
show cllocation; #查看校對規(guī)則
建庫規(guī)范:
1.庫名不能有大寫字母
2.建庫要加字符集
3.庫名不能有數(shù)字開頭
4. 庫名要和業(yè)務(wù)相關(guān)
建庫標準語句
damao[(none)]>create database test charset utf8mb4;
Query OK, 1 row affected (0.01 sec)
damao[(none)]>show create database test;
+----------+------------------------------------------------------------------+
| Database | Create Database |
+----------+------------------------------------------------------------------+
| test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 */ |
+----------+------------------------------------------------------------------+
1 row in set (0.00 sec)
damao[(none)]>
1.2.2 刪除數(shù)據(jù)庫(生產(chǎn)中禁止使用)
damao[(none)]>drop database test;
1.2.3 查詢及修改數(shù)據(jù)庫
show create database test; #查看數(shù)據(jù)庫的字符集及較對規(guī)則
alter database test charset utf8;
注意:修改字符集不會使數(shù)據(jù)庫中原有的數(shù)據(jù)字符集發(fā)生改變,只會改變新數(shù)據(jù)的字符集,所以要將原有的數(shù)據(jù)導出更改字符集再進行導入。
注意:修改字符集,修改后的字符集一定是原字符集的嚴格超集
1.3 表定義
1.3.1 創(chuàng)建表
create table stu(
列1 屬性(數(shù)據(jù)類型、約束、其他屬性) ,
列2 屬性,
列3 屬性
) 存儲引擎,字符集編碼,注釋;
1.3.2 建表
use school; #首先要進入到相應(yīng)的庫中
CREATE TABLE stu(
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '學號',
sname VARCHAR(64) NOT NULL COMMENT '姓名',
sage TINYINT UNSIGNED NOT NULL DEFAULT 0 COMMENT '年齡',
sgender ENUM('m','f','n') NOT NULL DEFAULT 'n' COMMENT '性別' ,
sfz CHAR(18) NOT NULL UNIQUE COMMENT '身份證',
intime DATETIME NOT NULL DEFAULT NOW() COMMENT '入學時間'
) ENGINE=INNODB CHARSET=utf8mb4 COMMENT '學生表';
建表規(guī)范
1. 表名小寫
2. 不能是數(shù)字開頭
3. 注意字符集和存儲引擎
4. 表名和業(yè)務(wù)有關(guān)
5. 選擇合適的數(shù)據(jù)類型
6. 每個列都要有注釋
7. 每個列設(shè)置為非空,無法保證非空,用0來填充。
1.3.3 刪除表(生產(chǎn)中禁用命令)
drop table stu; *刪除整個表(表結(jié)構(gòu)+數(shù)據(jù)行)
truncate table stu; *只會刪除表中的數(shù)據(jù)行,不會刪除表結(jié)構(gòu)
1.3.4 修改表
1.在school庫的stu表中添加qq列
alter table stu add qq varchar(20) not null unique comment 'QQ號';
2.在sname后加入地址列
alter table stu add addr varchar(64) not null commit '地址' after sname;
3.在id列前加入新列 num
alter table stu add num int not null comment '數(shù)字' first;
4.
alter table stu drop num;
alter table stu drop addr;
alter table stu drop qq;
5.修改sname列的數(shù)據(jù)類型屬性
alter table stu modify sname varchar(32) not null;
6.將sgender列改為sg列,將數(shù)據(jù)類型改為char類型
alter table stu change sgender sg tinyint not null default 0 comment '0是女生,1是男生';
desc stu;
7.修改表名
alter table stu reanme to xuesheng;
說明:歸檔表,日志表
作為一個企業(yè)或者DBA,我們通常會有這種想法,數(shù)據(jù)是一個公司的核心命脈,應(yīng)該需要永久保存,很多時候DBA和開發(fā)溝通的時候,開發(fā)人員也會這么告訴我們,這份數(shù)據(jù)非常重要,數(shù)據(jù)需要永久保存。然而,如果將數(shù)據(jù)庫的數(shù)據(jù)永久保存,那么遲早有一天,你會擁有一個非常大的數(shù)據(jù)庫。作為一個DBA,通常為了業(yè)務(wù)對數(shù)據(jù)庫的操作性能考慮和存儲容量的考慮。我們會建議對數(shù)據(jù)庫里大表進行數(shù)據(jù)歸檔,例如將使用的高頻數(shù)據(jù)保留在當前表,對低頻數(shù)據(jù)保留在歸檔表中,或定期對數(shù)據(jù)進行歸檔,或當數(shù)據(jù)達到一定量時對數(shù)據(jù)表進行歸檔處理;
歸檔表原理操作(類似于日志切割)
1.方式一
alter table stu rename to stu_2019_11; *將舊表改名
create table stu like stu_2019_11; *創(chuàng)建新表
2.方式二
Oracle 物化視圖 (了解)
面試題:若開發(fā)要緊急上線DDL SQL,如何進行評估,請寫審核SQL要點
答:SQL語句是數(shù)據(jù)DDL操作,是屬于列的添加操作
直接執(zhí)行時會產(chǎn)生表鎖,對業(yè)務(wù)的影響較大,數(shù)據(jù)量大,業(yè)務(wù)量大時,對于業(yè)務(wù)影響較大。
所以我們推薦
(1)最好業(yè)務(wù)不繁忙做
(2)使用 pt-osc(percona-toolkit) 工具來進行online DDL,減少對業(yè)務(wù)的影響
https://www.percona.com/software/database-tools/percona-toolkit
(3)對于歸檔表,可以使用pt-archiver 自己擴展.
1.3.5 表屬性查詢
use school *進入到指定庫
show tables; *查看表
desc stu; *查看表結(jié)構(gòu)
show create table stu; *查看表(列)屬性
2. DCL 數(shù)據(jù)控制語言
grant 權(quán)限 on 庫表 to 用戶名@'白名單' identified by '密碼';
revoke 權(quán)限 on 庫表 from 用戶名@'白名單' identified by '密碼';
3. DML 數(shù)據(jù)操縱語言
主要對表中數(shù)據(jù)行操作
3.1 insert 數(shù)據(jù)插入
-----標準寫法
use database school;
desc stu;
INSERT INTO stu(id,sname,sage,sg,sfz,intime)
VALUES
(1,'zs',18,'m','123456',NOW());
-----省事寫法
INSERT INTO stu
VALUES
(2,'ls',18,'m','1234567',NOW());
--- 針對性的錄入數(shù)據(jù)
INSERT INTO stu(sname,sfz)
VALUES ('w5','34445788');
--- 同時錄入多行數(shù)據(jù)
INSERT INTO stu(sname,sfz)
VALUES
('w55','3444578d8'),
('m6','1212313'),
('aa','123213123123');
SELECT * FROM stu;
3.2 數(shù)據(jù)修改(更新)
update stu set age=18 where name='zs';
注意:update語句必須要加where。
3.3 delete 數(shù)據(jù)刪除
-----刪除id為4的數(shù)據(jù)行
delete from stu where id=4;
------若不跟條件,則刪除所有數(shù)據(jù)行,類似于 truncate table stu
delete from stu ;
說明:
DELETE 語句數(shù)據(jù)邏輯刪除,磁盤空間不會立即釋放,會產(chǎn)生碎片.
truncate會立即釋放磁盤空間
思考: 2億行的大表,批量刪除5000w(按時間條件)
3.4 偽刪除
刪除id=5的行,偽刪除實現(xiàn)
ALTER TABLE stu ADD state TINYINT NOT NULL DEFAULT 1;
SELECT * FROM stu;
原語句:
DELETE FROM stu WHERE id=5;
替換為:
UPDATE stu SET state=0 WHERE id=5;
原業(yè)務(wù)語句:
SELECT * FROM stu;
替換為:
SELECT * FROM stu WHERE state=1;
4. DQL 數(shù)據(jù)查詢語言 ********
4.1 select ******
4.1.1 單獨使用
(1)查詢參數(shù)
SELECT @@datadir;
SELECT @@port;
SELECT @@socket;
SELECT @@basedir;
SELECT @@innodb_flush_log_at_trx_commit;
SHOW VARIABLES ; **配置文件中的所有參數(shù)
(2)簡易計算
select 1024*1024;
select 1+1;
(3)函數(shù)查詢
SELECT NOW();
SELECT DATABASE();
SELECT USER();
SELECT CONCAT("hello world");
SELECT CONCAT(USER,"@",HOST) FROM mysql.user;
SELECT GROUP_CONCAT(USER,"@",HOST) FROM mysql.user;
https://dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html?tdsourcetag=s_pcqq_aiomsg
4.1.2 配合多子句(單表查詢標準用法)
多子句應(yīng)用順序: *****
(1) FROM 必須使用的
(2) WHERE
(3) GROUP BY
(5) HAVING
(6) ORDER BY
(7) LIMIT
(1)單表子句 ---from
SELECT 列1,列2 FROM 表
SELECT * FROM 表
例:
--- 1. 查詢city表中的所有數(shù)據(jù)(不要對大表進行操作)
SELECT * FROM city;
--- 2. 查詢city表中所有的name和population
SELECT NAME,population FROM city;
(2)單表子句----where
SELECT 列1,列2 FROM TABLE WHERE 條件;
1.where 配合等值查詢
--- 查詢中國所有城市的信息
SELECT * FROM city WHERE countrycode='CHN';
-- 查詢北京市的信息
SELECT * FROM city WHERE NAME='peking';
-- 查詢甘肅省所有城市信息
SELECT * FROM city WHERE district='gansu';
2.where 的不等值查詢(> < >= <= !=)
--- 1. 城市人口小于100人的城市
SELECT * FROM city WHERE population<100;
--- 2. 不是中國的城市信息
SELECT * FROM city WHERE countrycode <> 'CHN';
3.where 配合 like語句使用(模糊查詢)
--- 1. 查詢國家代號是CH開頭的城市信息.
SELECT * FROM city WHERE countrycode LIKE 'CH%';
注意: LIKE 語句 百分號不要出現(xiàn)在查詢條件前,因為查詢不走索引
4.where 配合邏輯連接符(and or)
--- 1. 中國城市人口大于500w的城市
SELECT * FROM city WHERE countrycode='CHN' AND population>5000000 ;
--- 2. 中國或者美國城市信息
SELECT * FROM city WHERE countrycode='CHN' OR countrycode='USA';
5.where配合in語句(or)
--- 中國或者美國城市信息
SELECT * FROM city WHERE countrycode IN ('CHN','USA');
6.where 配合 between ...and....(and)
--- 查詢 人口數(shù)量在100w-200w之間的城市
SELECT * FROM city WHERE population >= 1000000 AND population <= 2000000;
SELECT * FROM city WHERE population BETWEEN 1000000 AND 2000000;
(3)group by (分組)+ 聚合函數(shù)應(yīng)用
常用聚合函數(shù)
MAX() 最大值
MIN() 最小值
AVG() 平均值
COUNT() 數(shù)量
SUM() 求和
GROUP_CONCAT() 列轉(zhuǎn)行
說明:
有 GROUP by子句,必然會有聚合函數(shù)
在業(yè)務(wù)查詢需求中,需要對于表中數(shù)據(jù)按照數(shù)據(jù)特點進行分別統(tǒng)計時,GROUP BY + 聚合函數(shù)來實現(xiàn)
--- 1. 統(tǒng)計世界的所有人口總和
SELECT SUM(population) FROM city ;
--- 2. 統(tǒng)計國家的總?cè)丝跀?shù)量
SELECT countrycode, SUM(population) FROM city GROUP BY countrycode ;
--- 3. 統(tǒng)計中國每個省的總?cè)丝跀?shù)
SELECT countrycode,district , SUM(population) FROM city GROUP BY district;
--- 5. 統(tǒng)計中國每個省的城市名列表.
SELECT district,GROUP_CONCAT(NAME) FROM city WHERE countrycode='CHN' GROUP BY district;
關(guān)于 GROUP BY 的限制
group by的工作原理,先將group by之后的所寫之列進行排序,然后去重,再將函數(shù)中包含的列進行函數(shù)運算;
damao[(none)]>select countrycode,district,sum(population) from world.city group by district;
ERROR 1055 (42000): Expression
-- #1 of SELECT list is not in GROUP BY clause and contains nonaggregated
-- column 'world.city.CountryCode' which is not functionally dependent
-- on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
--- sql_mode=only_full_group_by
1. 在 SELECT 后的條件,不在 GROUP BY 后
2. 在 SELECT 后的條件,不在函數(shù)里包裹
3. 如果select后列是唯一值時候,就不會報錯
5. GROUP BY 的條件列是主鍵或者唯一鍵時.
總結(jié): sql_mode=only_full_group_by 為了防止出現(xiàn)結(jié)果集1對多的關(guān)系.
(4)having
作用:用于進一步過濾,在group by 之后執(zhí)行
where | group by |having #使用順序
例:統(tǒng)計中國每個省的總?cè)丝跀?shù),只打印總?cè)丝跀?shù)小于100萬
select district,sum(population) from city
where countrycode='CHN'
group by district
having sum(population) <1000000;
(5)order by + limit
作用:用于將將指定列數(shù)據(jù)進行排序
----1.查看中國所有的城市,并按人口數(shù)進行排序(從大到小)
select name,population from city
where countrycode='CHN'
order by population desc;
注:加上desc表示逆序(從大到?。?,不加為升序(從小到大)
----2.統(tǒng)計中國各個省的總?cè)丝跀?shù)量,按照總?cè)丝趶拇蟮叫∨判?/p>
SELECT district AS 省 ,SUM(Population) AS 總?cè)丝?FROM city
WHERE countrycode='chn'
GROUP BY district
ORDER BY 總?cè)丝?DESC ;
----3.統(tǒng)計中國,每個省的總?cè)丝?找出總?cè)丝诖笥?00w的,并按總?cè)丝趶拇蟮叫∨判?只顯示前三名
SELECT district, SUM(population) FROM city
WHERE countrycode='CHN'
GROUP BY district
HAVING SUM(population)>5000000
ORDER BY SUM(population) DESC
LIMIT 3 ; 注:此時相當于為limit 0,3. 跳過0行,顯示3行
注:LIMIT N ,M --->跳過N,顯示一共M行
LIMIT 5,5 跳過五行,一共顯示5行。顯示6-10行
SELECT district, SUM(population) FROM city
WHERE countrycode='CHN'
GROUP BY district
HAVING SUM(population)>5000000
ORDER BY SUM(population) DESC
LIMIT 5,5;
4.1.3 distinct:去重復(fù)
----從city表中查出國家名稱
SELECT countrycode FROM city ;
SELECT DISTINCT(countrycode) FROM city ;
4.1.4 聯(lián)合查詢- union all 將多個select的數(shù)據(jù)合并(縱向合并)顯示
-- 中國或美國城市信息
SELECT * FROM city
WHERE countrycode IN ('CHN' ,'USA');
SELECT * FROM city WHERE countrycode='CHN'
UNION ALL
SELECT * FROM city WHERE countrycode='USA'
說明:一般情況下,我們會將 IN 或者 OR 語句 改寫成 UNION ALL,來提高性能
UNION 去重復(fù)
UNION ALL 不去重復(fù)
4.1.5 join 多表連接查詢
案例準備,按需創(chuàng)建表
CREATE DATABASE school CHARSET utf8mb4;
USE school
CREATE TABLE student(
sno INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '學號',
sname VARCHAR(20) NOT NULL COMMENT '姓名',
sage TINYINT UNSIGNED NOT NULL COMMENT '年齡',
ssex ENUM('f','m') NOT NULL DEFAULT 'm' COMMENT '性別'
)ENGINE=INNODB CHARSET=utf8;
CREATE TABLE course(
cno INT NOT NULL PRIMARY KEY COMMENT '課程編號',
cname VARCHAR(20) NOT NULL COMMENT '課程名字',
tno INT NOT NULL COMMENT '教師編號'
)ENGINE=INNODB CHARSET utf8;
CREATE TABLE sc (
sno INT NOT NULL COMMENT '學號',
cno INT NOT NULL COMMENT '課程編號',
score INT NOT NULL DEFAULT 0 COMMENT '成績'
)ENGINE=INNODB CHARSET=utf8;
CREATE TABLE teacher(
tno INT NOT NULL PRIMARY KEY COMMENT '教師編號',
tname VARCHAR(20) NOT NULL COMMENT '教師名字'
)ENGINE=INNODB CHARSET utf8;
INSERT INTO student(sno,sname,sage,ssex)
VALUES
(1,'zhang3',18,'m'),
(2,'zhang4',18,'m'),
(3,'li4',18,'m'),
(4,'wang5',19,'f'),
(5,'zh4',18,'m'),
(6,'zhao4',18,'m'),
(7,'ma6',19,'f'),
(8,'oldboy',20,'m'),
(9,'oldgirl',20,'f'),
(10,'oldp',25,'m');
INSERT INTO teacher(tno,tname) VALUES
(101,'oldboy'),
(102,'hesw'),
(103,'oldguo');
INSERT INTO course(cno,cname,tno)
VALUES
(1001,'linux',101),
(1002,'python',102),
(1003,'mysql',103);
INSERT INTO sc(sno,cno,score)
VALUES
(1,1001,80),
(1,1002,59),
(2,1002,90),
(2,1003,100),
(3,1001,99),
(3,1003,40),
(4,1001,79),
(4,1002,61),
(4,1003,99),
(5,1003,40),
(6,1001,89),
(6,1003,77),
(7,1001,67),
(7,1003,82),
(8,1001,70),
(9,1003,80),
(10,1003,96);
語法

查詢張三的家庭住址
SELECT A.name,B.address FROM
A JOIN B
ON A.id=B.id
WHERE A.name='zhangsan';
多表練習SQL題
-- 1. 每位老師講的課程名稱
SELECT teacher.tno,teacher.tname,GROUP_CONCAT(course.cname)
FROM teacher
JOIN course
ON teacher.tno=course.tno
GROUP BY teacher.tno;
思考: 如果老師名重名,或者老師講多門課,怎么辦?
-- 2. 每位學員學習了幾門課?
SELECT student.sno,student.sname,COUNT(sc.cno)
FROM student
JOIN sc
ON student.sno=sc.sno
GROUP BY student.sno;
-- 3. 每位學員學習了幾門課及課程名稱列表?
SELECT
student.sno,
student.sname,
COUNT(sc.cno),
GROUP_CONCAT(course.cname)
FROM student
JOIN sc
ON student.sno=sc.sno
JOIN course
ON sc.cno=course.cno
GROUP BY student.sno;
** case when ...then.. end 語句**
5. 寫多表連接技巧
1. 相關(guān)表
2. 找相關(guān)表關(guān)聯(lián)條件
E-R 圖 (自己擴展) ----> 開發(fā)DBA要做的事情
外連接
A left join B
A 表所有的數(shù)據(jù)+B表滿足關(guān)聯(lián)條件的數(shù)據(jù)
A right join B
B表所有的數(shù)據(jù)+A 滿足關(guān)聯(lián)條件的數(shù)據(jù)
實現(xiàn)外連接原生功能,需要把where的條件改為and/
mysql> select city.name,city.population ,country.name from city left join country on city.countrycode=country.code and city.population<100 order by population desc ;
結(jié)論: left join 應(yīng)用場景,強制驅(qū)動表(關(guān)聯(lián)查詢中結(jié)果集小的)
- where 條件
- 原始表大小
6. 別名的應(yīng)用
表別名: 給表設(shè)計的別名,在任何子句中調(diào)用
列別名: 給select 后的列設(shè)定別名,在having 和 order by子句中調(diào)用
表別名:
select a.tname AS "老師姓名" ,group_concat(d.sname) AS "不及格的學生"
from teacher AS a
join course AS b
on a.tno = b.tno
join sc AS c
on c.cno = b.cno
join student AS d
on d.sno = c.sno
where c.score < 60
group by a.tno;
列別名:
select
student.sno AS 學生學號 ,
student.sname AS 學生姓名,
avg(sc.score) AS 平均成績
from student
join sc
on student.sno=sc.sno
group by sutdent.sno
having 平均成績 >85
==================
子查詢 : (自己了解)
高級SQL編程: 內(nèi)置函數(shù),存儲過程,函數(shù),視圖,事件,觸發(fā)器,游標,Json開發(fā) (自己了解)
==================
7. show 語句
show databases ; 查看所有庫名
show tables; 查看當前庫下的所有表名.
show tables from world; 查看world庫下的所有表
show create database world; 查看建庫語句
show create tables city; 查看建表語句
show [global] variables like '%trx%'; 查看參數(shù)信息
show grants for root@'localhost'; 查看用戶權(quán)限信息
show [full] processlist; 查看會話連接情況
show engines; 查看當前數(shù)據(jù)庫支持的引擎.
show charset; 查看當前數(shù)據(jù)庫支持的字符集.
show collation; 查看當前數(shù)據(jù)庫支持的排序規(guī)則.
show [global] status; 查看當前數(shù)據(jù)庫的狀態(tài)信息.
show status like '%lock%'\G 模糊查詢數(shù)據(jù)庫狀態(tài).
show master status; 查看當前使用的二進制日志信息.
show binary logs; 查看所有二進制日志信息.
show binlog evnets in 'xxxx' 查看二進制日志事件信息.
show relaylog events in 'xxx' 查看中繼日志事件信息.
show slave status \G 查看從庫復(fù)制狀態(tài)信息.
show engine innodb status \G 查看InnoDB引擎相關(guān)狀態(tài)信息.
======================
8. 元數(shù)據(jù)獲取
8.1 什么是元數(shù)據(jù)?
庫,表 : 屬性(字符集,校對規(guī)則,數(shù)據(jù)類型,存儲引擎,約束,其他數(shù)據(jù))
權(quán)限 :
狀態(tài)信息:
等.
8.2 元數(shù)據(jù)獲取方法
show語句 : 封裝好的基礎(chǔ)功能,可以實現(xiàn)大部分的元數(shù)據(jù)查詢需求.
information_schema<視圖>庫: mysql 給我們定義好的元數(shù)據(jù)查詢的方法.
8.3 information_schema<視圖>庫
應(yīng)用場景: 做數(shù)據(jù)庫資產(chǎn)統(tǒng)計.
tables :
TABLE_SCHEMA : 表所在的庫
TABLE_NAME : 表名
ENGINE : 引擎
TABLE_ROWS : 表的行數(shù)
AVG_ROW_LENGTH: 平均行長度
INDEX_LENGTH : 索引長度
TABLE_COMMENT : 表的注釋
create view v_xxx as
select a.tname AS "老師姓名" ,group_concat(d.sname) AS "不及格的學生"
from teacher AS a
join course AS b
on a.tno = b.tno
join sc AS c
on c.cno = b.cno
join student AS d
on d.sno = c.sno
where c.score < 60
group by a.tno;
select * from v_xxx ;
例子:
----- 1. 統(tǒng)計所有庫下的表的個數(shù)
select table_schema,count(table_name) from information_schema.tables group by table_schema;
----- 2. 統(tǒng)計不同存儲引擎的表名
select engine,group_concat(table_name) from information_schema.tables group by engine;
-----3. 統(tǒng)計所有非系統(tǒng)表,非InnoDB的表
mysql
information_schema
performace_schema
sys
SELECT table_schema,table_name ,ENGINE
FROM information_schema.tables
WHERE table_schema NOT IN ('mysql','information_schema','performance_schema','sys')
HAVING ENGINE != 'innodb';
作業(yè):
-- 5. 統(tǒng)計總數(shù)據(jù)量(不包含系統(tǒng)表)
-- 6. 統(tǒng)計每個庫的數(shù)據(jù)量(不包含系統(tǒng)表)
SELECT
table_schema,
SUM( TABLE_ROWS * AVG_ROW_LENGTH + index_length)/1024/1024 AS "total_mb"
FROM information_schema.tables
WHERE table_schema NOT IN ('mysql','information_schema','performance_schema','sys')
GROUP BY table_schema
ORDER BY total_mb DESC;
擴展題
-- 7. 將school庫下所有的數(shù)據(jù)字典信息(列名,數(shù)據(jù)類型,注釋信息)進行統(tǒng)計
例如:
id int 城市id
name varchar 城市名
SELECT column_name,column_type,column_comment
FROM information_schema.columns
WHERE table_schema='school';
.....
-- 8. 模仿以下語句,生成數(shù)據(jù)庫下單表的備份語句(不包含系統(tǒng)表),并保存至/backup/sh/bak.sh
例子語句:
mysqldump -uroot -p123 world city >/backup/world_city.sql
mysqldump -uroot -p123 world city >/backup/world_city.sql
mysqldump -uroot -p123 world city >/backup/world_city.sql
mysqldump -uroot -p123 world city >/backup/world_city.sql
mysqldump -uroot -p123 world city >/backup/world_city.sql
mysqldump -uroot -p123 world city >/backup/world_city.sql
mysqldump -uroot -p123 world city >/backup/world_city.sql
mysqldump -uroot -p123 world city >/backup/world_city.sql
mysqldump -uroot -p123 world city >/backup/world_city.sql
mysqldump -uroot -p123 world city >/backup/world_city.sql
select concat('mysqldump -uroot -p123 ' ,table_schema, ' ' ,table_name ', >/backup/',table_schema,'_',table_name,'.sql' )
from information_schema.tables
where table_schema not in ('mysql','information_schema','performance_schema','sys')
into outfile '/backup/sh/bak.sh';