欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
終于有人將MySQL講明白了

前言導讀

在日常開(kāi)發(fā)中,存儲數據的最常用的方式便是數據庫了,其中最為著(zhù)名的便是

MySQL數據庫,因他簡(jiǎn)便易于上手而且可擴展性強大,跨平臺使得它廣為使用,今天我們就來(lái)具體聊聊。

1.安裝

2.數據類(lèi)型

3.庫 表常見(jiàn)操作

4.索引

5.視圖

6.函數

7.游標

8.觸發(fā)器

9.存儲過(guò)程

10.事務(wù)

11.備份與還原

12.用戶(hù)賬號

13.其他

一、安裝過(guò)程

我們所使用的是MySQL 5.7版本,這個(gè)版本算是挺不錯的。下面我們來(lái)介紹下這個(gè)版本的具體安裝過(guò)程吧。

1.解壓安裝

因為官網(wǎng)目前下載不了,為了大家安裝過(guò)程中方便,我們下載一個(gè)免安裝版mysql,

地址:
https://590m.com/file/7715018-442009503,下載好后將這個(gè)壓縮包文件解壓到指定的磁盤(pán)下,比如我想解壓到E盤(pán)的mysql文件夾中。如圖:

  1. 配置環(huán)境變量

為了讓mysql 可以在任意目錄運行,我們可以將mysql的bin目錄添加到環(huán)境變量,如圖:

3.修改配置文件

在mysql目錄下創(chuàng )建一個(gè)my.ini配置文件,修改配置:

[mysql]# 設置mysql客戶(hù)端默認字符集default-character-set=utf8[mysqld]#設置3306端口port = 3306# 設置mysql的安裝目錄basedir='E:\mysql\mysql-5.7.11-winx64'# 設置mysql數據庫的數據的存放目錄datadir='E:\mysql\mysql-5.7.11-winx64\data'# 允許最大連接數max_connections=200# 服務(wù)端使用的字符集默認為8比特編碼的latin1字符集character-set-server=utf8# 創(chuàng )建新表時(shí)將使用的默認存儲引擎default-storage-engine=INNODB

4.安裝mysql

以管理員身份運行命令提示符,輸入mysqld install命令(注意是mysqld而不是mysql)回車(chē),即可安裝MySQL,提示:Service successfully installed,則表示安裝成功,如下圖所示:

移除服務(wù):mysqld remove

5.啟動(dòng)mysql服務(wù)

在命令提示符下執行命令,

啟動(dòng)mysql:net start mysql

停止:net stop mysql

發(fā)現啟動(dòng)不了,如圖:

這是怎么回事了,哦~原來(lái)是因為還沒(méi)有初始化,那么我們現在來(lái)進(jìn)行初始化,

執行指令:mysqld --initialize-insecure --user=mysql,

mysqld --initialize-insecure:自動(dòng)生成無(wú)密碼的root用戶(hù),

mysqld --initialize:自動(dòng)生成帶隨機密碼的root用戶(hù),

mysqld --initialize --user=mysql --console:生成隨機密碼并顯示在控制臺窗口,

data文件夾不為空是不能執行這個(gè)命令的(刪掉data文件即可),

執行mysqld --initialize-insecure --user=mysql命令會(huì )自動(dòng)新建data文件夾。執行結果如圖:

可以看到執行成功了,再次啟動(dòng)mysql服務(wù),啟動(dòng)成功。如圖:

6.進(jìn)入mysql,修改登陸密碼確保安全

第一次進(jìn)入mysql 是沒(méi)有密碼就可以登陸了,我們可以設置登陸密碼,

更改root密碼,輸入:

update mysql.user set password=password('123321') where user = 'root';

因為新版mysql數據庫下沒(méi)有password字段,所以需要使用如下命令:

update mysql.user set authentication_string=password('123321') where user='root';
刷新權限:flush privileges;

這是必須的,不然操作沒(méi)有效果。

也可以這樣修改密碼:

set password = password('123456');

這樣就將root用戶(hù)的密碼設置為了 123456了,下面我們退出mysql再重新進(jìn)去,順帶說(shuō)下退出命令:

退出mysql:quit;

接下來(lái)在進(jìn)入mysql,如圖:

這樣root用戶(hù)就有了密碼,他的密碼就是123321.

整個(gè)安裝過(guò)程就完成了,是不是很簡(jiǎn)單了。

另外,為了提高交互效果,我們還可以一個(gè)軟件-------sqlyong,他可以和mysql建立鏈接,

下載地址:
https://590m.com/file/7715018-442029096,

然后輸入壓縮包內自帶的注冊碼破解就可以免費使用了。

2.mysql 數據類(lèi)型

1.數值類(lèi)型

MySQL支持所有標準SQL數值數據類(lèi)型。

這些類(lèi)型包括嚴格數值數據類(lèi)型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似數值數據類(lèi)型(FLOAT、REAL和DOUBLE PRECISION)。

關(guān)鍵字INT是INTEGER的同義詞,關(guān)鍵字DEC是DECIMAL的同義詞。

BIT數據類(lèi)型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。

作為SQL標準的擴展,MySQL也支持整數類(lèi)型TINYINT、MEDIUMINT和BIGINT。下面的表顯示了需要的每個(gè)整數類(lèi)型的存儲和范圍。

類(lèi)型 大小 范圍(有符號) 范圍(無(wú)符號) 用途 TINYINT 1 字節 (-128,127) (0,255) 小整數值 SMALLINT 2 字節 (-32 768,32 767) (0,65 535) 大整數值 MEDIUMINT 3 字節 (-8 388 608,8 388 607) (0,16 777 215) 大整數值 INT或INTEGER 4 字節 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整數值 BIGINT 8 字節 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 極大整數值 FLOAT 4 字節 (-3.402 823 466 E 38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E 38) 0,(1.175 494 351 E-38,3.402 823 466 E 38) 單精度 浮點(diǎn)數值 DOUBLE 8 字節 (-1.797 693 134 862 315 7 E 308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E 308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E 308) 雙精度 浮點(diǎn)數值 DECIMAL 對DECIMAL(M,D) ,如果M>D,為M 2否則為D 2 依賴(lài)于M和D的值 依賴(lài)于M和D的值 小數值

2.日期和時(shí)間類(lèi)型

表示時(shí)間值的日期和時(shí)間類(lèi)型為DATETIME、DATE、TIMESTAMP、TIME和YEAR。

每個(gè)時(shí)間類(lèi)型有一個(gè)有效值范圍和一個(gè)'零'值,當指定不合法的MySQL不能表示的值時(shí)使用'零'值。

TIMESTAMP類(lèi)型有專(zhuān)有的自動(dòng)更新特性,將在后面描述。

類(lèi)型 大小 (*字節)** 范圍 格式 用途 DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值 TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 時(shí)間值或持續時(shí)間 YEAR 1 1901/2155 YYYY 年份值 DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和時(shí)間值 TIMESTAMP 4 1970-01-01 00:00:00/2037 年某時(shí) YYYYMMDD HHMMSS 混合日期和時(shí)間值,時(shí)間戳

3.字符串類(lèi)型

字符串類(lèi)型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。該節描述了這些類(lèi)型如何工作以及如何在查詢(xún)中使用這些類(lèi)型。

類(lèi)型 大小 用途 CHAR 0-255字節 定長(cháng)字符串 VARCHAR 0-65535 字節 變長(cháng)字符串 TINYBLOB 0-255字節 不超過(guò) 255 個(gè)字符的二進(jìn)制字符串 TINYTEXT 0-255字節 短文本字符串 BLOB 0-65 535字節 二進(jìn)制形式的長(cháng)文本數據 TEXT 0-65 535字節 長(cháng)文本數據 MEDIUMBLOB 0-16 777 215字節 二進(jìn)制形式的中等長(cháng)度文本數據 MEDIUMTEXT 0-16 777 215字節 中等長(cháng)度文本數據 LONGBLOB 0-4 294 967 295字節 二進(jìn)制形式的極大文本數據 LONGTEXT 0-4 294 967 295字節 極大文本數據

CHAR和VARCHAR類(lèi)型類(lèi)似,但它們保存和檢索的方式不同。它們的最大長(cháng)度和是否尾部空格被保留等方面也不同。在存儲或檢索過(guò)程中不進(jìn)行大小寫(xiě)轉換。

BINARY和VARBINARY類(lèi)類(lèi)似于CHAR和VARCHAR,不同的是它們包含二進(jìn)制字符串而不要非二進(jìn)制字符串。也就是說(shuō),它們包含字節字符串而不是字符字符串。這說(shuō)明它們沒(méi)有字符集,并且排序和比較基于列值字節的數值值。

BLOB是一個(gè)二進(jìn)制大對象,可以容納可變數量的數據。有4種BLOB類(lèi)型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它們只是可容納值的最大長(cháng)度不同。

有4種TEXT類(lèi)型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。這些對應4種BLOB類(lèi)型,有相同的最大長(cháng)度和存儲需求。

Enum('fds','fsa','fasf') :枚舉類(lèi)型

set(val1,val2,val3):集合類(lèi)型

3.庫表操作

1、MySQL觸發(fā)器的創(chuàng )建語(yǔ)法:CREATE[DEFINER = { 'user' | CURRENT_USER }]TRIGGER trigger_nametrigger_time trigger_eventON table_nameFOR EACH ROW[trigger_order]trigger_body2、MySQL創(chuàng )建語(yǔ)法中的關(guān)鍵詞解釋?zhuān)鹤侄?                    含義                                               可能的值DEFINER=           可選參數,指定創(chuàng )建者,                               DEFINER='root@%'             默認為當前登錄用戶(hù)(CURRENT_USER);             該觸發(fā)器將以此參數指定的用戶(hù)執行,                       DEFINER=CURRENT_USER                 所以需要考慮權限問(wèn)題;?trigger_name   觸發(fā)器名稱(chēng),最好由表名 觸發(fā)事件關(guān)鍵詞 觸發(fā)時(shí)間關(guān)鍵詞組成; trigger_time     觸發(fā)時(shí)間,在某個(gè)事件之前還是之后;                   BEFORE、AFTER?   INSERT:插入操作觸發(fā)器,INSERT、LOAD DATA、REPLACE時(shí)觸發(fā);   UPDATE:更新操作觸發(fā)器,UPDATE操作時(shí)觸發(fā);trigger_event 觸發(fā)事件,如插入時(shí)觸發(fā)、刪除時(shí)觸發(fā);           DELETE:刪除操作觸發(fā)器,DELETE、REPLACE操作時(shí)觸發(fā);   INSERT、UPDATE、DELETEtable_name          觸發(fā)操作時(shí)間的表名;  可選參數,如果定義了多個(gè)具有相同觸發(fā)事件和觸法時(shí)間的觸發(fā)器時(shí)( 如:BEFORE UPDATE),默認觸發(fā)順序與觸發(fā)器的創(chuàng )建順序一致,可以trigger_order 使用此參數來(lái)改變它們觸發(fā)順序。mysql 5.7.2起開(kāi)始支持此參數。 FOLLOWS:當前創(chuàng )建觸發(fā)器在現有觸發(fā)器之后激活;                 FOLLOWS、PRECEDES PRECEDES:當前創(chuàng )建觸發(fā)器在現有觸發(fā)器之前激活; trigger_body     觸發(fā)執行的SQL語(yǔ)句內容,一般以begin開(kāi)頭,end結尾            BEGIN .. END 觸發(fā)執行語(yǔ)句內容(trigger_body)中的OLD,NEW觸發(fā)執行語(yǔ)句內容(trigger_body)中的OLD,NEW:在trigger_body中,我們可以使用NEW表示將要插入的新行(相當于MS SQL的INSERTED),OLD表示將要刪除的舊行(相當于MS SQL的DELETED)。通過(guò)OLD,NEW中獲取它們的字段內容,方便在觸發(fā)操作中使用,下面是對應事件是否支持OLD、NEW的對應關(guān)系:事件     OLD   NEWINSERT   ×     √DELETE   √     ×UPDATE   √     √?由于UPDATE相當于刪除舊行(OLD),然后插入新行(NEW),所以UPDATE同時(shí)支持OLD、NEW;DELIMITER $... --觸發(fā)器創(chuàng )建語(yǔ)句;$   --提交創(chuàng )建語(yǔ)句;DELIMITER ;??select * FROM information_schema.triggers;SHOW TRIGGERS; #查看觸發(fā)器-- 通過(guò)information_schema.triggers表查看觸發(fā)器:select * FROM information_schema.triggers;-- mysql 查看當前數據庫的觸發(fā)器SHOW TRIGGERS;-- mysql 查看指定數據庫'people'的觸發(fā)器SHOW TRIGGERS FROM people;?創(chuàng )建測試表DROP TABLE IF EXISTS tb;CREATE TABLE IF NOT EXISTS tb(id INT,username CHAR(10),pass VARCHAR(20),ct INT);CREATE TABLE IF NOT EXISTS bt(fid INT,username CHAR(10),pass VARCHAR(20),ct INT);創(chuàng )建觸發(fā)器DELIMITER $#drop trigger if exists df_names$ 刪除前先判斷觸發(fā)器是否存在CREATE DEFINER =CURRENT_USERTRIGGER df_namesBEFORE INSERT ON tbAFTER UPDATE ON btFOR EACH ROWBEGIN   #set new.ct=new.id*5;   #SET @ct=12; 變量   #SET @pass='hjfd';   IF old.type=1 THEN UPDATE bt SET ct=old.ct WHERE fid=old.id;   ELSE IF old.type=2 THEN UPDATE bt SET pass=old.pass WHERE fid=old.id;END$DELIMITER;?測試INSERT INTO tb(id) VALUES(4);SELECT *FROM tb;?

4.索引

SET AUTOCOMMIT=off ;禁用或啟用事務(wù)的自動(dòng)提交模式  off ONSET SESSION AUTOCOMMIT = OFF; 禁用或啟用事務(wù)的session自動(dòng)提交模式 off ONSHOW VARIABLES LIKE '%auto%'; -- 查看變量狀態(tài)?執行DML語(yǔ)句是其實(shí)就是開(kāi)啟一個(gè)事務(wù)只能回滾insert、deleteupdate語(yǔ)句對于create、drop、alter這些無(wú)法回滾事務(wù)只對DML有效果rollback,或者commit后事務(wù)就結束了自動(dòng)提交模式用于決定新事務(wù)如何及何時(shí)啟動(dòng)START TRANSACTION; 啟用自動(dòng)提交模式下顯式地啟動(dòng)事務(wù)COMMITROLLBACK;  禁用自動(dòng)提交模式顯式地提交或回滾-- 事務(wù) transaction 指一組sql語(yǔ)句-- 回退 rollback 指撤銷(xiāo)指定sql語(yǔ)句的過(guò)程-- 提交 commit 指將未存儲的sql語(yǔ)句結果寫(xiě)入數據庫表-- 保留點(diǎn) savepoint 指事務(wù)處理中設置的臨時(shí)占位符,可以對它發(fā)布回退(與回退整個(gè)事務(wù)處理不同)?-- 控制事務(wù)處理# 開(kāi)始事務(wù)及回退 SELECT * FROM ordertotals;   # 查看ordertotals表顯示不為空START TRANSACTION;           # 開(kāi)始事務(wù)處理 DELETE FROM ordertotals;     # 刪除ordertotals表中所有行SELECT * FROM ordertotals;   # 查看ordertotals表顯示 為空ROLLBACK;                     # rollback語(yǔ)句回退 SELECT * FROM ordertotals;   # rollback后,再次查看ordertotals表顯示不為空?# commit 提交 START TRANSACTION;DELETE FROM orderitems WHERE order_num = 20010;DELETE FROM orders WHERE order_num = 20010;COMMIT;   # 僅在上述兩條語(yǔ)句不出錯時(shí)寫(xiě)出更改 ?# savepoint 保留點(diǎn) # 創(chuàng  )建保留點(diǎn)SAVEPOINT delete1;# 回退到保留點(diǎn) ROLLBACK TO delete1;# 釋放保留點(diǎn) RELEASE SAVEPOINT delete1;?-- 更改默認的提交行為 SET autocommit = 0;  # 設置autocommit為0(假)指示MySQL不自動(dòng)提交更改

5.視圖

1、MySQL觸發(fā)器的創(chuàng )建語(yǔ)法:CREATE[DEFINER = { 'user' | CURRENT_USER }]TRIGGER trigger_nametrigger_time trigger_eventON table_nameFOR EACH ROW[trigger_order]trigger_body2、MySQL創(chuàng )建語(yǔ)法中的關(guān)鍵詞解釋?zhuān)鹤侄?                    含義                                               可能的值DEFINER=           可選參數,指定創(chuàng )建者,                               DEFINER='root@%'             默認為當前登錄用戶(hù)(CURRENT_USER);             該觸發(fā)器將以此參數指定的用戶(hù)執行,                       DEFINER=CURRENT_USER                 所以需要考慮權限問(wèn)題;?trigger_name   觸發(fā)器名稱(chēng),最好由表名 觸發(fā)事件關(guān)鍵詞 觸發(fā)時(shí)間關(guān)鍵詞組成; trigger_time     觸發(fā)時(shí)間,在某個(gè)事件之前還是之后;                   BEFORE、AFTER?   INSERT:插入操作觸發(fā)器,INSERT、LOAD DATA、REPLACE時(shí)觸發(fā);   UPDATE:更新操作觸發(fā)器,UPDATE操作時(shí)觸發(fā);trigger_event 觸發(fā)事件,如插入時(shí)觸發(fā)、刪除時(shí)觸發(fā);           DELETE:刪除操作觸發(fā)器,DELETE、REPLACE操作時(shí)觸發(fā);   INSERT、UPDATE、DELETEtable_name          觸發(fā)操作時(shí)間的表名;  可選參數,如果定義了多個(gè)具有相同觸發(fā)事件和觸法時(shí)間的觸發(fā)器時(shí)( 如:BEFORE UPDATE),默認觸發(fā)順序與觸發(fā)器的創(chuàng )建順序一致,可以trigger_order 使用此參數來(lái)改變它們觸發(fā)順序。mysql 5.7.2起開(kāi)始支持此參數。 FOLLOWS:當前創(chuàng )建觸發(fā)器在現有觸發(fā)器之后激活;                 FOLLOWS、PRECEDES PRECEDES:當前創(chuàng )建觸發(fā)器在現有觸發(fā)器之前激活; trigger_body     觸發(fā)執行的SQL語(yǔ)句內容,一般以begin開(kāi)頭,end結尾            BEGIN .. END 觸發(fā)執行語(yǔ)句內容(trigger_body)中的OLD,NEW觸發(fā)執行語(yǔ)句內容(trigger_body)中的OLD,NEW:在trigger_body中,我們可以使用NEW表示將要插入的新行(相當于MS SQL的INSERTED),OLD表示將要刪除的舊行(相當于MS SQL的DELETED)。通過(guò)OLD,NEW中獲取它們的字段內容,方便在觸發(fā)操作中使用,下面是對應事件是否支持OLD、NEW的對應關(guān)系:事件     OLD   NEWINSERT   ×     √DELETE   √     ×UPDATE   √     √?由于UPDATE相當于刪除舊行(OLD),然后插入新行(NEW),所以UPDATE同時(shí)支持OLD、NEW;DELIMITER $... --觸發(fā)器創(chuàng )建語(yǔ)句;$   --提交創(chuàng )建語(yǔ)句;DELIMITER ;??select * FROM information_schema.triggers;SHOW TRIGGERS; #查看觸發(fā)器-- 通過(guò)information_schema.triggers表查看觸發(fā)器:select * FROM information_schema.triggers;-- mysql 查看當前數據庫的觸發(fā)器SHOW TRIGGERS;-- mysql 查看指定數據庫'people'的觸發(fā)器SHOW TRIGGERS FROM people;?創(chuàng )建測試表DROP TABLE IF EXISTS tb;CREATE TABLE IF NOT EXISTS tb(id INT,username CHAR(10),pass VARCHAR(20),ct INT);CREATE TABLE IF NOT EXISTS bt(fid INT,username CHAR(10),pass VARCHAR(20),ct INT);創(chuàng )建觸發(fā)器DELIMITER $#drop trigger if exists df_names$ 刪除前先判斷觸發(fā)器是否存在CREATE DEFINER =CURRENT_USERTRIGGER df_namesBEFORE INSERT ON tbAFTER UPDATE ON btFOR EACH ROWBEGIN   #set new.ct=new.id*5;   #SET @ct=12; 變量   #SET @pass='hjfd';   IF old.type=1 THEN UPDATE bt SET ct=old.ct WHERE fid=old.id;   ELSE IF old.type=2 THEN UPDATE bt SET pass=old.pass WHERE fid=old.id;END$DELIMITER;?測試INSERT INTO tb(id) VALUES(4);SELECT *FROM tb;?

6.函數

SET AUTOCOMMIT=off ;禁用或啟用事務(wù)的自動(dòng)提交模式  off ONSET SESSION AUTOCOMMIT = OFF; 禁用或啟用事務(wù)的session自動(dòng)提交模式 off ONSHOW VARIABLES LIKE '%auto%'; -- 查看變量狀態(tài)?執行DML語(yǔ)句是其實(shí)就是開(kāi)啟一個(gè)事務(wù)只能回滾insert、deleteupdate語(yǔ)句對于create、drop、alter這些無(wú)法回滾事務(wù)只對DML有效果rollback,或者commit后事務(wù)就結束了自動(dòng)提交模式用于決定新事務(wù)如何及何時(shí)啟動(dòng)START TRANSACTION; 啟用自動(dòng)提交模式下顯式地啟動(dòng)事務(wù)COMMITROLLBACK;  禁用自動(dòng)提交模式顯式地提交或回滾-- 事務(wù) transaction 指一組sql語(yǔ)句-- 回退 rollback 指撤銷(xiāo)指定sql語(yǔ)句的過(guò)程-- 提交 commit 指將未存儲的sql語(yǔ)句結果寫(xiě)入數據庫表-- 保留點(diǎn) savepoint 指事務(wù)處理中設置的臨時(shí)占位符,可以對它發(fā)布回退(與回退整個(gè)事務(wù)處理不同)?-- 控制事務(wù)處理# 開(kāi)始事務(wù)及回退 SELECT * FROM ordertotals;   # 查看ordertotals表顯示不為空START TRANSACTION;           # 開(kāi)始事務(wù)處理 DELETE FROM ordertotals;     # 刪除ordertotals表中所有行SELECT * FROM ordertotals;   # 查看ordertotals表顯示 為空ROLLBACK;                     # rollback語(yǔ)句回退 SELECT * FROM ordertotals;   # rollback后,再次查看ordertotals表顯示不為空?# commit 提交 START TRANSACTION;DELETE FROM orderitems WHERE order_num = 20010;DELETE FROM orders WHERE order_num = 20010;COMMIT;   # 僅在上述兩條語(yǔ)句不出錯時(shí)寫(xiě)出更改 ?# savepoint 保留點(diǎn) # 創(chuàng  )建保留點(diǎn)SAVEPOINT delete1;# 回退到保留點(diǎn) ROLLBACK TO delete1;# 釋放保留點(diǎn) RELEASE SAVEPOINT delete1;?-- 更改默認的提交行為 SET autocommit = 0;  # 設置autocommit為0(假)指示MySQL不自動(dòng)提交更改

7.游標

創(chuàng )建、打開(kāi)、關(guān)閉游標 # 定義名為ordernumbers的游標,檢索所有訂單DELIMITER //CREATE PROCEDURE processorders()BEGIN    -- decalre the cursor 聲明游標     declare ordernumbers CURSOR    FOR    SELECT order_num FROM orders;        -- open the cursor 打開(kāi)游標    open ordernumbers;    -- close the cursor 關(guān)閉游標    close ordernumbers;END //DELIMITER ;?-- 使用游標數據 # 例1:檢索 當前行 的order_num列,對數據不做實(shí)際處理DELIMITER //CREATE PROCEDURE processorders()BEGIN?    -- declare local variables 聲明局部變量    DECLARE o INT;        -- decalre the cursor 聲明游標     declare ordernumbers CURSOR    FOR    SELECT order_num FROM orders;        -- open the cursor 打開(kāi)游標    open ordernumbers;        -- get order number 獲得訂單號     FETCH ordernumbers INTO o;    /*fetch檢索 當前行 的order_num列(將自動(dòng)從第一行開(kāi)始)到一個(gè)名為o的局部聲明變量中。    對檢索出的數據不做任何處理。*/            -- close the cursor 關(guān)閉游標    close ordernumbers;?END //DELIMITER ;?# 例2:循環(huán)檢索數據,從第一行到最后一行,對數據不做實(shí)際處理DELIMITER //CREATE PROCEDURE processorders()BEGIN    -- declare local variables 聲明局部變量    DECLARE done BOOLEAN DEFAULT 0;    DECLARE o INT;       -- decalre the cursor 聲明游標     declare ordernumbers CURSOR    FOR    SELECT order_num FROM orders;       -- declare continue handler    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done =1;    -- SQLSTATE '02000'是一個(gè)未找到條件,當REPEAT由于沒(méi)有更多的行供循環(huán)而不能繼續時(shí),出現這個(gè)條件。        -- open the cursor 打開(kāi)游標    open ordernumbers;        -- loop through all rows 遍歷所有行     REPEAT        -- get order number 獲得訂單號     FETCH ordernumbers INTO o;    -- FETCH在REPEAT內,因此它反復執行直到done為真        -- end of loop    UNTIL done END REPEAT;        -- close the cursor 關(guān)閉游標    close ordernumbers;?END //DELIMITER ;??# 例3:循環(huán)檢索數據,從第一行到最后一行,對取出的數據進(jìn)行某種實(shí)際的處理DELIMITER //CREATE PROCEDURE processorders()BEGIN    -- declare local variables 聲明局部變量     DECLARE done BOOLEAN DEFAULT 0;    DECLARE o INT;    DECLARE t DECIMAL(8,2);        -- declare the cursor 聲明游標    DECLARE ordernumbers CURSOR    FOR    SELECT order_num FROM orders;        -- declare continue handler    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;        -- create a table to store the results 新建表以保存數據    CREATE TABLE IF NOT EXISTS ordertotals    (order_num INT,total DECIMAL(8,2));        -- open the cursor 打開(kāi)游標    OPEN ordernumbers;        -- loop through all rows 遍歷所有行    REPEAT        -- get order number 獲取訂單號    FETCH ordernumbers INTO o;        -- get the total for this order 計算訂單金額    CALL ordertotal(o,1,t);  # 參見(jiàn)23章代碼,已創(chuàng )建可使用        -- insert order and total into ordertotals 將訂單號、金額插入表ordertotals內    INSERT INTO ordertotals(order_num,total) VALUES(o,t);        -- end of loop    UNTIL done END REPEAT;        -- close the cursor 關(guān)閉游標    close ordernumbers;?END // DELIMITER ;# 調用存儲過(guò)程 precessorders()CALL processorders();# 輸出結果SELECT * FROM ordertotals;?

8.觸發(fā)器

1、MySQL觸發(fā)器的創(chuàng  )建語(yǔ)法:CREATE[DEFINER = { 'user' | CURRENT_USER }]TRIGGER trigger_nametrigger_time trigger_eventON table_nameFOR EACH ROW[trigger_order]trigger_body2、MySQL創(chuàng  )建語(yǔ)法中的關(guān)鍵詞解釋?zhuān)鹤侄?                     含義                                               可能的值DEFINER=            可選參數,指定創(chuàng  )建者,                               DEFINER='root@%'              默認為當前登錄用戶(hù)(CURRENT_USER);              該觸發(fā)器將以此參數指定的用戶(hù)執行,                       DEFINER=CURRENT_USER                  所以需要考慮權限問(wèn)題;?trigger_name   觸發(fā)器名稱(chēng),最好由表名 觸發(fā)事件關(guān)鍵詞 觸發(fā)時(shí)間關(guān)鍵詞組成; trigger_time     觸發(fā)時(shí)間,在某個(gè)事件之前還是之后;                   BEFORE、AFTER?                                   INSERT:插入操作觸發(fā)器,INSERT、LOAD DATA、REPLACE時(shí)觸發(fā);                                   UPDATE:更新操作觸發(fā)器,UPDATE操作時(shí)觸發(fā);trigger_event  觸發(fā)事件,如插入時(shí)觸發(fā)、刪除時(shí)觸發(fā);              DELETE:刪除操作觸發(fā)器,DELETE、REPLACE操作時(shí)觸發(fā);                                   INSERT、UPDATE、DELETEtable_name          觸發(fā)操作時(shí)間的表名;         可選參數,如果定義了多個(gè)具有相同觸發(fā)事件和觸法時(shí)間的觸發(fā)器時(shí)(        如:BEFORE UPDATE),默認觸發(fā)順序與觸發(fā)器的創(chuàng  )建順序一致,可以trigger_order   使用此參數來(lái)改變它們觸發(fā)順序。mysql 5.7.2起開(kāi)始支持此參數。        FOLLOWS:當前創(chuàng  )建觸發(fā)器在現有觸發(fā)器之后激活;                  FOLLOWS、PRECEDES        PRECEDES:當前創(chuàng  )建觸發(fā)器在現有觸發(fā)器之前激活;                trigger_body     觸發(fā)執行的SQL語(yǔ)句內容,一般以begin開(kāi)頭,end結尾            BEGIN .. END         觸發(fā)執行語(yǔ)句內容(trigger_body)中的OLD,NEW觸發(fā)執行語(yǔ)句內容(trigger_body)中的OLD,NEW:在trigger_body中,我們可以使用NEW表示將要插入的新行(相當于MS SQL的INSERTED),OLD表示將要刪除的舊行(相當于MS SQL的DELETED)。通過(guò)OLD,NEW中獲取它們的字段內容,方便在觸發(fā)操作中使用,下面是對應事件是否支持OLD、NEW的對應關(guān)系:事件     OLD   NEWINSERT    ×     √DELETE    √     ×UPDATE    √     √?由于UPDATE相當于刪除舊行(OLD),然后插入新行(NEW),所以UPDATE同時(shí)支持OLD、NEW;DELIMITER $... --觸發(fā)器創(chuàng  )建語(yǔ)句;$   --提交創(chuàng  )建語(yǔ)句;DELIMITER ;??select * FROM information_schema.triggers;SHOW TRIGGERS; #查看觸發(fā)器-- 通過(guò)information_schema.triggers表查看觸發(fā)器:select * FROM information_schema.triggers;-- mysql 查看當前數據庫的觸發(fā)器SHOW TRIGGERS;-- mysql 查看指定數據庫'people'的觸發(fā)器SHOW TRIGGERS FROM people;?創(chuàng  )建測試表DROP TABLE IF EXISTS tb;CREATE TABLE IF NOT EXISTS tb(id INT,username CHAR(10),pass VARCHAR(20),ct INT);CREATE TABLE IF NOT EXISTS bt(fid INT,username CHAR(10),pass VARCHAR(20),ct INT);創(chuàng  )建觸發(fā)器DELIMITER $#drop trigger if exists df_names$ 刪除前先判斷觸發(fā)器是否存在CREATE  DEFINER =CURRENT_USERTRIGGER df_namesBEFORE INSERT ON tbAFTER UPDATE ON btFOR EACH ROWBEGIN   #set new.ct=new.id*5;   #SET @ct=12; 變量   #SET @pass='hjfd';   IF old.type=1 THEN    UPDATE bt SET ct=old.ct WHERE fid=old.id;   ELSE IF old.type=2 THEN    UPDATE bt SET pass=old.pass WHERE fid=old.id;END$DELIMITER;?測試INSERT INTO tb(id) VALUES(4);SELECT *FROM tb;?

9.存儲過(guò)程

SET AUTOCOMMIT=off ;禁用或啟用事務(wù)的自動(dòng)提交模式 off ONSET SESSION AUTOCOMMIT = OFF; 禁用或啟用事務(wù)的session自動(dòng)提交模式 off ONSHOW VARIABLES LIKE '%auto%'; -- 查看變量狀態(tài)?執行DML語(yǔ)句是其實(shí)就是開(kāi)啟一個(gè)事務(wù)只能回滾insert、deleteupdate語(yǔ)句對于create、drop、alter這些無(wú)法回滾事務(wù)只對DML有效果rollback,或者commit后事務(wù)就結束了自動(dòng)提交模式用于決定新事務(wù)如何及何時(shí)啟動(dòng)START TRANSACTION; 啟用自動(dòng)提交模式下顯式地啟動(dòng)事務(wù)COMMITROLLBACK; 禁用自動(dòng)提交模式顯式地提交或回滾-- 事務(wù) transaction 指一組sql語(yǔ)句-- 回退 rollback 指撤銷(xiāo)指定sql語(yǔ)句的過(guò)程-- 提交 commit 指將未存儲的sql語(yǔ)句結果寫(xiě)入數據庫表-- 保留點(diǎn) savepoint 指事務(wù)處理中設置的臨時(shí)占位符,可以對它發(fā)布回退(與回退整個(gè)事務(wù)處理不同)?-- 控制事務(wù)處理# 開(kāi)始事務(wù)及回退 SELECT * FROM ordertotals;   # 查看ordertotals表顯示不為空START TRANSACTION;           # 開(kāi)始事務(wù)處理 DELETE FROM ordertotals;     # 刪除ordertotals表中所有行SELECT * FROM ordertotals;   # 查看ordertotals表顯示 為空ROLLBACK;                     # rollback語(yǔ)句回退 SELECT * FROM ordertotals;   # rollback后,再次查看ordertotals表顯示不為空?# commit 提交 START TRANSACTION;DELETE FROM orderitems WHERE order_num = 20010;DELETE FROM orders WHERE order_num = 20010;COMMIT;   # 僅在上述兩條語(yǔ)句不出錯時(shí)寫(xiě)出更改 ?# savepoint 保留點(diǎn) # 創(chuàng )建保留點(diǎn)SAVEPOINT delete1;# 回退到保留點(diǎn) ROLLBACK TO delete1;# 釋放保留點(diǎn) RELEASE SAVEPOINT delete1;?-- 更改默認的提交行為 SET autocommit = 0;  # 設置autocommit為0(假)指示MySQL不自動(dòng)提交更改

10.事務(wù)

SET AUTOCOMMIT=off ;禁用或啟用事務(wù)的自動(dòng)提交模式  off ONSET SESSION AUTOCOMMIT = OFF; 禁用或啟用事務(wù)的session自動(dòng)提交模式 off ONSHOW VARIABLES LIKE '%auto%'; -- 查看變量狀態(tài)?執行DML語(yǔ)句是其實(shí)就是開(kāi)啟一個(gè)事務(wù)只能回滾insert、deleteupdate語(yǔ)句對于create、drop、alter這些無(wú)法回滾事務(wù)只對DML有效果rollback,或者commit后事務(wù)就結束了自動(dòng)提交模式用于決定新事務(wù)如何及何時(shí)啟動(dòng)START TRANSACTION; 啟用自動(dòng)提交模式下顯式地啟動(dòng)事務(wù)COMMITROLLBACK;  禁用自動(dòng)提交模式顯式地提交或回滾-- 事務(wù) transaction 指一組sql語(yǔ)句-- 回退 rollback 指撤銷(xiāo)指定sql語(yǔ)句的過(guò)程-- 提交 commit 指將未存儲的sql語(yǔ)句結果寫(xiě)入數據庫表-- 保留點(diǎn) savepoint 指事務(wù)處理中設置的臨時(shí)占位符,可以對它發(fā)布回退(與回退整個(gè)事務(wù)處理不同)?-- 控制事務(wù)處理# 開(kāi)始事務(wù)及回退 SELECT * FROM ordertotals;   # 查看ordertotals表顯示不為空START TRANSACTION;           # 開(kāi)始事務(wù)處理 DELETE FROM ordertotals;     # 刪除ordertotals表中所有行SELECT * FROM ordertotals;   # 查看ordertotals表顯示 為空ROLLBACK;                     # rollback語(yǔ)句回退 SELECT * FROM ordertotals;   # rollback后,再次查看ordertotals表顯示不為空?# commit 提交 START TRANSACTION;DELETE FROM orderitems WHERE order_num = 20010;DELETE FROM orders WHERE order_num = 20010;COMMIT;   # 僅在上述兩條語(yǔ)句不出錯時(shí)寫(xiě)出更改 ?# savepoint 保留點(diǎn) # 創(chuàng  )建保留點(diǎn)SAVEPOINT delete1;# 回退到保留點(diǎn) ROLLBACK TO delete1;# 釋放保留點(diǎn) RELEASE SAVEPOINT delete1;?-- 更改默認的提交行為 SET autocommit = 0;  # 設置autocommit為0(假)指示MySQL不自動(dòng)提交更改

11.備份與還原

備份一個(gè)數據庫:mysqldump -u root -p --opt people> df.txt  #--opt優(yōu)化執行速度備份兩個(gè)數據庫:mysqldump -u root -p --opt --databases people hw > all.txt備份全部數據庫:mysqldump -u root -p --opt --all-DATABASES > all.txt恢復數據庫:mysqldump -u root -p --opt --databases people hw < all.txt1. 導出一張表mysqldump -u用戶(hù)名 -p密碼 庫名 表名 > 文件名(D:/a.sql)2. 導出多張表mysqldump -u用戶(hù)名 -p密碼 庫名 表123 > 文件名(D:/a.sql)3. 導出所有表mysqldump -u用戶(hù)名 -p密碼 庫名 > 文件名(D:/a.sql)4. 導出一個(gè)庫mysqldump -u用戶(hù)名 -p密碼 --lock-ALL-TABLES --database 庫名 > 文件名(D:/a.sql)可以-w攜帶WHERE條件

12.用戶(hù)賬號

創(chuàng  )建賬戶(hù):CREATE USER IF NOT EXISTS 'hw'@'localhost' IDENTIFIED BY '5201314'; #創(chuàng  )建用戶(hù)hw,密碼5201314?給該用戶(hù)授予所有權限并可授權給其他用戶(hù):GRANT ALL PRIVILEGES ON people.df TO 'hw'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;?重命名用戶(hù)名: RENAME USER 'hw' TO 'gh'; 必須將localhost改為%如果希望該用戶(hù)能夠在任何機器上登陸mysql,則將localhost改為 '%' 授權給其他用戶(hù) WITH GRANT OPTION privileges包括:    alter:修改數據庫的表    create:創(chuàng  )建新的數據庫或表    delete:刪除表數據    drop:刪除數據庫/表    index:創(chuàng  )建/刪除索引    insert:添加表數據    select:查詢(xún)表數據    update:更新表數據    all:允許任何操作    usage:只允許登錄?刷新權限,使新創(chuàng  )建的用戶(hù)能夠使用:    FLUSH PRIVILEGES;                   收回用戶(hù)權限: REVOKE ALL PRIVILEGES ON people.df FROM 'root'@'localhost';          刪除用戶(hù):    DROP USER IF EXISTS 'hw'@'localhost';?設置指定用戶(hù)的密碼:SET PASSWORD FOR'hw'@'localhost' = PASSWORD('123321');                 UPDATE USER SET PASSWORD =  PASSWORD('123321') WHERE USER = 'hw';?                  設置密碼:    SET PASSWORD = PASSWORD('123321');         

13.其他

SHOW STATUS;顯示廣泛的服務(wù)器狀態(tài)信息SHOW PROCEDURE STATUS;SHOW GRANTS;顯示授予用戶(hù)的安全權限SHOW ERRORS;顯示服務(wù)器的錯誤信息SHOW WARNINGS;顯示服務(wù)器的警告信息SHOW PROCESSLIST;顯示哪些線(xiàn)程正在運行SHOW VARIABLES;顯示系統變量信息SELECT DATABASE(); 查看當前數據庫SELECT NOW(), USER(), VERSION():顯示當前時(shí)間、用戶(hù)名、數據庫版本SHOW ENGINES 引擎名 {LOGS|STATUS}:顯示存儲引擎的日志和狀態(tài)信息SHOW VARIABLES LIKE 'character%'; SHOW VARIABLES LIKE 'collation%'; 確定所用系統的字符集和校對SHOW VARIABLES LIKE 'character_set_client%';       客戶(hù)端向服務(wù)器發(fā)送數據時(shí)使用的編碼SHOW VARIABLES LIKE 'character_set_results%';       服務(wù)器端將結果返回給客戶(hù)端所使用的編碼SHOW VARIABLES LIKE 'character_set_connection%';    連接層編碼SHOW CHARACTER SET;查看所支持的字符集完整列表SHOW COLLATION;查看所支持校對的完整列表,以及它們適用的字符集?SET character_set_client = gbk;   SET character_set_results = gbk;SET character_set_connection = gbk;SET NAMES GBK;  -- 相當于完成以上三個(gè)設置?創(chuàng )建window服務(wù):sc CREATE mysql binPath= mysqld_bin_path數據文件目錄:DATA DIRECTORY='目錄'索引文件目錄:INDEX DIRECTORY = '目錄'

希望能幫到大家,謝謝?。?!

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Oracle系統權限的分類(lèi)
觸發(fā)器
SQL觸發(fā)器語(yǔ)法
《SQLServer數據庫應用基礎教程》第九章觸發(fā)器及其應用
SQL中Truncate的用法
規則和觸發(fā)器
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久