一个添下面两个吃奶把腿扒开

午夜性色福利刺激无码专区 盤點MySQL數據庫的數據類型、庫和表常見操作、索引、視圖、函數等知識點

绪论

在日常開發中,存儲數據的最常用的方式即是數據庫了,其中最為有名的即是MySQL數據庫午夜性色福利刺激无码专区,因它簡便易于上手而且可擴展性強大,跨平臺使得它廣為使用。上一篇著作,我們講到了它的安裝,今天我們就來具體聊聊它的這篇著作分為11個部分,分別包括MySQL數據庫的數據類型、庫和表常見操作、索引、視圖、函數、游標、觸發器、存儲過程、事務、備份與還原、用戶賬號、其它等知識點。

一、mysql 數據類型

1.數值類型

7MySQL撑持所有这个词標準SQL數值數據類型。

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

關鍵字INT是INTEGER的同義詞,關鍵字DEC是DECIMAL的同義詞。

BIT數據類型保存位字段值,况且撑持MyISAM、MEMORY、InnoDB和BDB表。

作為SQL標準的擴展,MySQL也撑持整數類型TINYINT、MEDIUMINT和BIGINT。底下的表顯示了需要的每個整數類型的存儲和范圍。

類型 大小 范圍(有符號) 范圍(無符號) 用途 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) 單精度   浮點數值 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) 雙精度   浮點數值 DECIMAL 對DECIMAL(M,D) ,如若M>D,為M+2否則為D+2 依賴于M和D的值

2.日历和時間類型

暗示時間值的日历和時間類型為DATETIME、DATE、TIMESTAMP、TIME和YEAR午夜性色福利刺激无码专区。

每個時間類型有一個灵验值范圍和一個"零"值,當指定不对法的MySQL不成暗示的值時使用"零"值。

TIMESTAMP類型有專有的自動更新特点,將在背面式样。

類型 大小   (*字節)** 范圍 步伐 用途 DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日历值 TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 時間值或持續時間 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 羼杂日历和時間值 TIMESTAMP 4 1970-01-01 00:00:00/2037 年某時 YYYYMMDD HHMMSS 羼杂日历和時間值,時間戳

3.字符串類型

字符串類型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。該節式样了這些類型何如职责以及如安在查詢中使用這些類型。

類型 大小 用途 CHAR 0-255字節 定長字符串 VARCHAR 0-65535 字節 變長字符串 TINYBLOB 0-255字節 不超過 255 個字符的二進制字符串 TINYTEXT 0-255字節 随笔本字符串 BLOB 0-65 535字節 二進制方式的長文本數據 TEXT 0-65 535字節 長文本數據 MEDIUMBLOB 0-16 777 215字節 二進制方式的中等長度文本數據 MEDIUMTEXT 0-16 777 215字節 中等長度文本數據 LONGBLOB 0-4 294 967 295字節 二進制方式的極大文本數據 LONGTEXT 0-4 294 967 295字節 極大文本數據

CHAR和VARCHAR類型類似,但它們保存和檢索的方式不同。它們的最大長度和是否尾部空格被保留等方面也不同。在存儲或檢索過程中不進行大小寫轉換。

BINARY和VARBINARY類類似于CHAR和VARCHAR,不同的是它們包含二進制字符串而不要非二進制字符串。也就是說,它們包含字節字符串而不是字符字符串。這說明它們沒有字符集,况且排序和比較基于列值字節的數值值。

BLOB是一個二進制大對象,不错容納可變數量的數據。有4種BLOB類型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它們仅仅可容納值的最大長度不同。

有4種TEXT類型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。這些對應4種BLOB類型,有相易的最大長度和存儲需求。

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

set(val1,val2,val3):聚会類型

二、庫表操作

1.數據庫操作

數據庫:         SHOW DATABASES; 創建數據庫:       CREATE DATABASE IF NOT EXISTS people;           切換數據庫:       USE people; 刪除數據庫:       DROP DATABASE IF EXISTS people; 巡逻當前數據庫庫信息:        SHOW CREATE DATABASE people; 修改數據庫的選項信息:       ALTER DATABASE people; 

2.數據表操作

顯示數據庫里所有这个词數據表的信息:       SHOW TABLE STATUS FROM people; 顯示全部數據表:     SHOW TABLES;  單張表:show tables from df    清空數據表:      TRUNCATE df; 表檢測:      CHECK TABLE df;   表優化:       OPTIMIZE TABLE df; 表修復:    REPAIR TABLE df; 表分析:      ANALYZE TABLE df; 分析表 鍵狀態是否正確:     ANALYZE TABLE orders; 檢查表是否存在錯誤:  check TABLE orders,orderitems QUICK;# QUICK只進行快速掃描 優化表OPTIMIZE TABLE,排斥刪除和更新变成的磁盤碎屑,從而減少空間的浪費:OPTIMIZE TABLE orders; 查詢表結構:   DESC df;DESCRIBE df; EXPLAIN df;SHOW COLUMNS FROM df; 復制表:   CREATE TABLE de LIKE df; SELECT * INTO  IN 'hw' FROM df; 修改表名:   RENAME TABLE de TO people.dh;(可將表移動到另一個數據庫) 修改表字段:   ALTER TABLE df ADD/DROP/CHANGE   拼接字段:SELECT CONCAT(us,'(',tim,')') FROM df ORDER BY us ASC;result=>us(tim)  添加主鍵約束:alter TABLE 表名 ADD CONSTRAINT 主鍵 (形如:PK_表名) PRIMARY KEY 表名(主鍵字段); 添加外鍵約束:alter TABLE 從表 ADD CONSTRAINT 外鍵(形如:FK_從表_主表) FOREIGN KEY 從表(外鍵字段) REFERENCES 主表(主鍵字段); 刪除主鍵約束:alter TABLE 表名 DROP PRIMARY KEY; 刪之外鍵約束:alter TABLE 表名 DROP FOREIGN KEY 外鍵(區分大小寫);  -- 添加外鍵約束 CREATE TABLE stu(sid INT PRIMARY KEY,NAME VARCHAR(50) NOT NULL); -- 添加外鍵約束方式一 CREATE TABLE score1(score DOUBLE,sid INT,CONSTRAINT fk_stu_score1_sid FOREIGN KEY(sid) REFERENCES stu(sid)); -- 添加外鍵約束方式二(若表已存在,可用這種) CREATE TABLE score1(score DOUBLE,sid INT); ALTER TABLE score1 ADD CONSTRAINT fk_sid FOREIGN KEY(sid) REFERENCES stu(sid) 
三、索引
CREATE UNIQUE INDEX qw ON df(us); #創建不重復索引 ALTER TABLE df ADD UNIQUE INDEX wq(id); #添加索引 SHOW INDEX FROM df;#檢索索引 DROP INDEX qw ON people.df; #刪除索引 ALTER TABLE df DROP INDEX wq; #刪除索引 
四、視圖
CREATE VIEW shitu AS SELECT us FROM df; 創建視圖 ALTER VIEW shitu AS SELECT us FROM df WHERE us='gf'; 修改視圖 SELECT * FROM shitu; 巡逻視圖結果 DROP VIEW IF EXISTS shitu;刪除視圖 
五、函數
文本處理函數 ASCII(CHAR)复返字符的ASCII碼值 BIT_LENGTH(str)复返字符串的比特長度 CONCAT(s1,s2...,sn)將s1,s2...,sn連接成字符串 CONCAT_WS(sep,s1,s2...,sn)將s1,s2...,sn連接成字符串,并用sep字符間隔 INSERT(str,X,Y,INSTR) 將字符串str從第x位置開始,y個字符長的子串替換為字符串instr,复返結果 FIND_IN_SET(str,LIST)分析逗號分隔的list列表,如若發現str,复返str在list中的位置 LCASE(str)或LOWER(str) 复返將字符串str中所有这个词字符改變為小寫后的結果 LEFT(str,X)复返字符串str中最左邊的x個字符 LENGTH(s)复返字符串str中的字符數 LOCATE(str)  找出str串的一個子串 LOWER(str)  將str串轉換為小寫 LTRIM(str) 從字符串str中切掉開頭的空格 POSITION(SUBSTR,str) 复返子串substr在字符串str中第一次出現的位置 QUOTE(str) 用反斜杠轉義str中的單引號 REPEAT(str,srchstr,rplcstr)复返字符串str重復x次的結果 REVERSE(str) 复返顛倒字符串str的結果 RIGHT(str,X) 复返字符串str中最右邊的x個字符 RTRIM(str) 复返字符串str尾部的空格 SOUNDEX(str)  复返str串的SOUNDEX值 STRCMP(s1,s2)比較字符串s1和s2 SUBSTRING()  复返子串的字符 TRIM(str)去除字符串首部和尾部的所有这个词空格 UCASE(str)或UPPER(str) 复返將字符串str中所有这个词字符轉變為大寫后的結果   日历和時間處理函數 ADDDATE()  加多一個日历(天、周等) ADDTIME()  加多一個時間(時、分等) CURDATE()或CURRENT_DATE() 复返當前的日历 CURTIME()或CURRENT_TIME() 复返當前的時間 DATE()  复返日历時間的日历部分 DATE_ADD(DATE,INTERVAL INT keyword)复返日历date加上間隔時間int的結果(int必須按照關鍵字進行步伐化),
成熟yⅰn荡的美妇a片如:SELECTDATE_ADD(CURRENT_DATE,INTERVAL 6 MONTH); DATE_FORMAT(DATE,fmt)  依照指定的fmt步伐步伐化日历date值 DATE_SUB(DATE,INTERVAL INT keyword)复返日历date加上間隔時間int的結果(int必須按照關鍵字進行步伐化),如:SELECTDATE_SUB(CURRENT_DATE,INTERVAL 6 MONTH); DAY()  复返一個日历的天數部分 DAYOFWEEK(DATE)   复返date所代表的一星期中的第幾天(1~7) DAYOFMONTH(DATE)  复返date是一個月的第幾天(1~31) DAYOFYEAR(DATE)   复返date是一年的第幾天(1~366) DAYNAME(DATE)   复返date的星期名,如:SELECT DAYNAME(CURRENT_DATE); FROM_UNIXTIME(ts,fmt)  根據指定的fmt步伐,步伐化UNIX時間戳ts HOUR(TIME)   复返time的小時值(0~23) MINUTE(TIME)   复返time的分鐘值(0~59) MONTH(DATE)   复返date的月份值(1~12) MONTHNAME(DATE)   复返date的月份名,如:SELECT MONTHNAME(CURRENT_DATE); NOW()    复返當前的日历和時間 QUARTER(DATE)   复返date在一年中的季度(1~4),如SELECT QUARTER(CURRENT_DATE); SECOND()  复返一個時間的秒部分 TIME()  复返一個日历時間的時間部分 WEEK(DATE)   复返日历date為一年中第幾周(0~53) YEAR(DATE)   复返日历date的年份(1000~9999)  獲取當前系統時間: SELECT FROM_UNIXTIME(UNIX_TIMESTAMP()); SELECT EXTRACT(YEAR_MONTH FROM CURRENT_DATE); SELECT EXTRACT(DAY_SECOND FROM CURRENT_DATE); SELECT EXTRACT(HOUR_MINUTE FROM CURRENT_DATE);  复返兩個日历值之間的差值(月數): SELECT PERIOD_DIFF(200302,199802);  在Mysql中計算年齡: SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(tim)),'%Y')+0 AS us FROM df;    常用數值處理函數 ABS(X)   复返x的絕對值 BIN(X)   复返x的二進制(OCT复返八進制,HEX复返十六進制) CEILING(X)   复返大于x的最小整數值 COS(X)  复返角度x的余弦 EXP(X)   复返值e(当然對數的底)的x次方 FLOOR(X)   复返小于x的最大整數值 GREATEST(x1,x2,...,xn)复返聚会中最大的值 LEAST(x1,x2,...,xn)  复返聚会中最小的值 LN(X)  复返x的当然對數 LOG(X,Y)复返x的以y為底的對數 MOD(X,Y)复返x/y的模(余數) PI()复返pi的值(圓周率) RAND()复返0到1內的隨機值,不错通過提供一個參數(種子)使RAND()隨機數生成器生成一個指定的值。 ROUND(X,Y)复返參數x的四舍五入的有y位小數的值 SIGN(X) 复返代表數字x的符號的值 SIN(X)  复返角度x的正弦 SQRT(X) 复返一個數的日常根 TAN(X)  复返角度x的正切 TRUNCATE(X,Y) 复返數字x截短為y位小數的結果   团员函數(常用于GROUP BY從句的SELECT查詢中) AVG(col)复返指定列的平均值 COUNT(col)复返指定列中非NULL值的個數 MIN(col)复返指定列的最小值 MAX(col)复返指定列的最大值 SUM(col)复返指定列的所有这个词值之和 GROUP_CONCAT(col) 复返由屬于一組的列值連接組合而成的結果   加密函數 AES_ENCRYPT(str,KEY)  复返用密鑰key對字符串str专揽高級加密標準算法加密后的結果,調用AES_ENCRYPT的結果是一個二進制字符串,以BLOB類型存儲 AES_DECRYPT(str,KEY)  复返用密鑰key對字符串str专揽高級加密標準算法解密后的結果 DECODE(str,KEY)   使用key作為密鑰解密加密字符串str ENCRYPT(str,salt)   使用UNIXcrypt()函數,用關鍵詞salt(一個不错唯一確定口令的字符串,就像鑰匙一樣)加密字符串str ENCODE(str,KEY)   使用key作為密鑰加密字符串str,調用ENCODE()的結果是一個二進制字符串,它以BLOB類型存儲 MD5()    計算字符串str的MD5校驗和 PASSWORD(str)   复返字符串str的加密版块,這個加密過程是不可逆轉的,和UNIX密碼加密過程使用不同的算法。 SHA()    計算字符串str的安全散列算法(SHA)校驗和 SELECT ENCRYPT('root','salt'); SELECT ENCODE('xufeng','key'); SELECT DECODE(ENCODE('xufeng','key'),'key');#加解密放在沿途 SELECT AES_ENCRYPT('root',亚洲成aⅴ人片久青草影院'key'); SELECT AES_DECRYPT(AES_ENCRYPT('root','key'),'key'); SELECT MD5('123456'); SELECT SHA('123456');  步伐化函數DATE_FORMAT(DATE,fmt)  依照字符串fmt步伐化日历date值 FORMAT(X,Y)   把x步伐化為以逗號隔開的數字序列,y是結果的小數位數 INET_ATON(ip)   复返IP地址的數字暗示 INET_NTOA(num)   复返數字所代表的IP地址 TIME_FORMAT(TIME,fmt)  依照字符串fmt步伐化時間time值 SELECT FORMAT(34234.34323432,3); SELECT DATE_FORMAT(NOW(),'%W,%D %M %Y %r'); SELECT DATE_FORMAT(NOW(),'%Y-%m-%d'); SELECT DATE_FORMAT(19990330,'%Y-%m-%d'); SELECT DATE_FORMAT(NOW(),'%h:%i %p'); SELECT INET_ATON('10.122.89.47'); SELECT INET_NTOA(175790383);   類型轉化函數 CAST() 類型有:BINARY,CHAR,DATE,TIME,DATETIME,SIGNED,UNSIGNED SELECT CAST(NOW() AS SIGNED INTEGER),CURDATE()+0; SELECT 'f'=BINARY 'F','f'=CAST('F' AS BINARY);   系統信息函數 DATABASE()   复返當前數據庫名 BENCHMARK(COUNT,expr)  將表達式expr重復運行count次 CONNECTION_ID()   复返當前客戶的連接ID FOUND_ROWS()   复返临了一個SELECT查詢進行檢索的總行數 USER()或SYSTEM_USER()  复返當前登陸用戶名 VERSION()   复返MySQL服務器的版块 SELECT DATABASE(),VERSION(),USER(); SELECTBENCHMARK(9999999,LOG(RAND()*PI())); 
六、游標
創建、打開、關閉游標 # 定義名為ordernumbers的游標,檢索所有这个词訂單 DELIMITER // CREATE PROCEDURE processorders() BEGIN     -- decalre the cursor 聲明游標      declare ordernumbers CURSOR     FOR     SELECT order_num FROM orders;          -- open the cursor 打開游標     open ordernumbers;     -- close the cursor 關閉游標     close ordernumbers; END // DELIMITER ;  -- 使用游標數據  # 例1:檢索 當前行 的order_num列,對數據不做實際處理 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 打開游標     open ordernumbers;          -- get order number 獲得訂單號      FETCH ordernumbers INTO o;     /*fetch檢索 當前行 的order_num列(將自動從第一瞥開始)到一個名為o的局部聲明變量中。     對檢索出的數據不做任何處理。*/              -- close the cursor 關閉游標     close ordernumbers;  END // DELIMITER ;  # 例2:循環檢索數據,從第一瞥到临了一瞥,對數據不做實際處理 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'是一個未找到條件,當REPEAT由于沒有更多的行供循環而不成繼續時,出現這個條件。          -- open the cursor 打開游標     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 關閉游標     close ordernumbers;  END // DELIMITER ;   # 例3:循環檢索數據,從第一瞥到临了一瞥,對取出的數據進行某種實際的處理 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 打開游標     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);  # 參見23章代碼,已創建可使用          -- 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 關閉游標     close ordernumbers;  END //  DELIMITER ; # 調用存儲過程 precessorders() CALL processorders(); # 輸出結果 SELECT * FROM ordertotals; 
七、觸發器
1、MySQL觸發器的創建語法: CREATE[DEFINER = { 'user' | CURRENT_USER }] TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW [trigger_order] trigger_body 2、MySQL創建語法中的關鍵詞解釋: 字段                      含義                                               可能的值 DEFINER=            可選參數,指定創建者,                               DEFINER='root@%'               默認為當前登錄用戶(CURRENT_USER);               該觸發器將以此參數指定的用戶執行,                       DEFINER=CURRENT_USER                   是以需要考慮權限問題;  trigger_name   觸發器名稱,最佳由表名+觸發事件關鍵詞+觸發時間關鍵詞組成;   trigger_time     觸發時間,在某個事件之前還是之后;BEFORE、AFTER                     INSERT:插入操作觸發器,INSERT、LOAD DATA、REPLACE時觸發;                    UPDATE:更新操作觸發器,UPDATE操作時觸發; trigger_event  觸發事件,如插入時觸發、刪除時觸發;DELETE:刪除操作觸發器,DELETE、REPLACE操作時觸發;                    INSERT、UPDATE、DELETE table_name          觸發操作時間的表名;       可選參數,如若定義了多個具有相易觸發事件和觸法時間的觸發器時(     如:BEFORE UPDATE),默認觸發順序與觸發器的創建順序一致,不错 trigger_order   使用此參數來改變它們觸發順序。mysql 5.7.2起開始撑持此參數。     FOLLOWS:當前創建觸發器在現有觸發器之后激活;FOLLOWS、PRECEDES     PRECEDES:當前創建觸發器在現有觸發器之前激活;           trigger_body     觸發執行的SQL語句內容,一般以begin開頭,end結尾            BEGIN .. END      觸發執行語句內容(trigger_body)中的OLD,NEW 觸發執行語句內容(trigger_body)中的OLD,NEW:在trigger_body中, 我們不错使用NEW暗示將要插入的新行(相當于MS SQL的INSERTED), OLD暗示將要刪除的舊行(相當于MS SQL的DELETED)。 通過OLD,NEW中獲取它們的字段內容,便捷在觸發操作中使用, 底下是對應事件是否撑持OLD、NEW的對應關系: 事件     OLD   NEW INSERT    ×     √ DELETE    √     × UPDATE    √     √  由于UPDATE相當于刪除舊行(OLD),然后插入新行(NEW),是以UPDATE同時撑持OLD、NEW; DELIMITER $ ... --觸發器創建語句; $   --提交創建語句; DELIMITER ;   select * FROM information_schema.triggers; SHOW TRIGGERS; #巡逻觸發器 -- 通過information_schema.triggers表巡逻觸發器: select * FROM information_schema.triggers; -- mysql 巡逻當前數據庫的觸發器 SHOW TRIGGERS; -- mysql 巡逻指定數據庫"people"的觸發器 SHOW TRIGGERS FROM people;  創建測試表 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); 創建觸發器 DELIMITER $ #drop trigger if exists df_names$ 刪除前先判斷觸發器是否存在 CREATE  DEFINER =CURRENT_USER TRIGGER df_names BEFORE INSERT ON tb AFTER UPDATE ON bt FOR EACH ROW BEGIN    #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; 
八、存儲過程
-- 創建存儲過程  # 复返產品平均價格的存儲過程 DELIMITER // CREATE PROCEDURE productpricing() BEGIN     select AVG(prod_price) AS priceaverage FROM products; END // DELIMITER ; # 調用上述存儲過程  CALL productpricing();  -- 刪除存儲過程,請耀眼:沒有使用背面的(),只給出存儲過程名。 DROP PROCEDURE productpricing;  -- 使用參數 out # 从头定義存儲過程productpricing DELIMITER // CREATE PROCEDURE productpricing(OUT pl DECIMAL(8,2), OUT ph DECIMAL(8,2), OUT pa DECIMAL(8,2)) BEGIN     select MIN(prod_price) INTO pl FROM products;     SELECT MAX(prod_price) INTO ph FROM products;     select AVG(prod_price) INTO pa FROM products; END // DELIMITER ;  # 為調用上述存儲過程,必須指定3個變量名 CALL productpricing(@pricelow,@pricehigh,@priceaverage); # 顯示檢索出的產品平均價格 SELECT @priceaverage; # 獲得3個值 SELECT @pricehigh,@pricelow,@priceaverage;  -- 使用參數 in 和 out # 使用IN和OUT參數,存儲過程ordertotal接纳訂單號并复返該訂單的合計 DELIMITER // CREATE PROCEDURE ordertotal(     in onumber INT,                   # onumber定義為IN,因為訂單號被傳入存儲過程     OUT ototal DECIMAL(8,2)            # ototal為OUT,因為要從存儲過程复返合計 ) BEGIN     select SUM(item_price*quantity) FROM orderitems      WHERE order_num = onumber     INTO ototal; END // DELIMITER ; # 給ordertotal傳遞兩個參數; # 第一個參數為訂單號,第二個參數為包含計算出來的合計的變量名 CALL ordertotal(20005,@total); # 顯示此合計 SELECT @total; # 得回另一個訂單的合計顯示 CALL ordertotal(20009,@total); SELECT @total;  -- 开采智能存儲過程  # 獲得與昔时一樣的訂單合計,但只針對某些顧客對合計加多營業稅  -- Name:ordertotal -- Parameters: onumber = order number --                taxable = 0 if not taxable, 1 if taxable --                ototal  = order total variable DELIMITER // CREATE PROCEDURE ordertotal(     in onumber INT,     in taxable BOOLEAN,     OUT ototal DECIMAL(8,2) ) COMMENT 'obtain order total, optionally adding tax' BEGIN     -- declare variable for total 定義局部變量total     DECLARE total DECIMAL(8,2);     -- declare tax percentage 定義局部變量稅率      DECLARE taxrate INT DEFAULT 6;     -- get the order total 獲得訂單合計     SELECT SUM(item_price * quantity)     FROM orderitems     WHERE order_num = onumber INTO total;     -- is this taxable? 是否要加多營業稅?      if taxable THEN         -- Yes,so add taxrate to the total 給訂單合計加多稅率         select total+(total/100*taxrate) INTO total;     end IF;     -- and finally,save to out variable 临了,傳遞給輸出變量      SELECT total INTO ototal; END // DELIMITER ; # 調用上述存儲過程,不加稅  CALL ordertotal(20005,0,@total); SELECT @total; # 調用上述存儲過程,加稅  CALL ordertotal(20005,1,@total); SELECT @total;  # 顯示用來創建一個存儲過程的CREATE語句 SHOW CREATE PROCEDURE ordertotal;  # 獲得包括何時、由誰創建等詳細信息的存儲過程列表 # 該語句列出所有这个词存儲過程 SHOW PROCEDURE STATUS; # 過濾模式  SHOW PROCEDURE STATUS LIKE 'ordertotal'; 
九、事務
SET AUTOCOMMIT=off ;禁用或啟用事務的自動提交模式  off ON SET SESSION AUTOCOMMIT = OFF;禁用或啟用事務的session自動提交模式 off ON SHOW VARIABLES LIKE '%auto%'; -- 巡逻變量狀態  執行DML語句是其實就是開啟一個事務 只可回滾insert、delete和update語句 對于create、drop、alter這些無法回滾事務只對DML有后果 rollback,能够commit后事務就結束了 自動提交模式用于決定新事務何如及何時啟動 START TRANSACTION; 啟用自動提交模式下顯式地啟動事務 COMMIT和ROLLBACK;  禁用自動提交模式顯式地提交或回滾 -- 事務 transaction 指一組sql語句 -- 回退 rollback 指撤銷指定sql語句的過程 -- 提交 commit 指將未存儲的sql語句結果寫入數據庫表 -- 保留點 savepoint 指事務處理中設置的臨時占位符,不错對它發布回退(與回退整個事務處理不同)  -- 物化事務處理 # 開始事務及回退  SELECT * FROM ordertotals;   # 巡逻ordertotals表顯示不為空 START TRANSACTION;           # 開始事務處理  DELETE FROM ordertotals;     # 刪除ordertotals表中所有这个词行 SELECT * FROM ordertotals;   # 巡逻ordertotals表顯示 為空 ROLLBACK;                     # rollback語句回退  SELECT * FROM ordertotals;   # rollback后,再次巡逻ordertotals表顯示不為空  # commit 提交  START TRANSACTION; DELETE FROM orderitems WHERE order_num = 20010; DELETE FROM orders WHERE order_num = 20010; COMMIT;   # 僅在上述兩條語句不出錯時寫出窜改   # savepoint 保留點  # 創建保留點 SAVEPOINT delete1; # 回退到保留點  ROLLBACK TO delete1; # 釋放保留點  RELEASE SAVEPOINT delete1;  -- 窜改默認的提交行為  SET autocommit = 0;  # 設置autocommit為0(假)陶冶MySQL不自動提交窜改 
十、備份與還原
備份一個數據庫:mysqldump -u root -p --opt people> df.txt  #--opt優化執行速率 備份兩個數據庫: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.txt 1. 導出一張表 mysqldump -u用戶名 -p密碼 庫名 表名 > 文献名(D:/a.sql) 2. 導出多張表 mysqldump -u用戶名 -p密碼 庫名 表1 表2 表3 > 文献名(D:/a.sql) 3. 導出所有这个词表 mysqldump -u用戶名 -p密碼 庫名 > 文献名(D:/a.sql) 4. 導出一個庫 mysqldump -u用戶名 -p密碼 --lock-ALL-TABLES --database 庫名 > 文献名(D:/a.sql) 不错-w攜帶WHERE條件 
十一、用戶賬號
創建賬戶:CREATE USER IF NOT EXISTS 'hw'@'localhost' IDENTIFIED BY '5201314'; #創建用戶hw,密碼5201314  給該用戶授予所有这个词權限并可授權給其它用戶:GRANT ALL PRIVILEGES ON people.df TO 'hw'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;  重定名用戶名: RENAME USER 'hw' TO 'gh'; 必須將localhost改為% 如若但愿該用戶能夠在职何機器上登陸mysql,則將localhost改為 "%"  授權給其它用戶 WITH GRANT OPTION  privileges包括:     alter:修改數據庫的表     create:創建新的數據庫或表     delete:刪除表數據     drop:刪除數據庫/表     index:創建/刪除索引     insert:添加表數據     select:查詢表數據     update:更新表數據     all:允許任何操作     usage:只允許登錄  刷新權限,使新創建的用戶能夠使用:    FLUSH PRIVILEGES;                     收回用戶權限: REVOKE ALL PRIVILEGES ON people.df FROM 'root'@'localhost';        刪除用戶:    DROP USER IF EXISTS 'hw'@'localhost';  設置指定用戶的密碼:SET PASSWORD FOR'hw'@'localhost' = PASSWORD('123321');          UPDATE USER SET PASSWORD =  PASSWORD('123321') WHERE USER = 'hw';               設置密碼:    SET PASSWORD = PASSWORD('123321');         
十二、其他
SHOW STATUS;顯示廣泛的服務器狀態信息 SHOW PROCEDURE STATUS; SHOW GRANTS;顯示授予用戶的安全權限 SHOW ERRORS;顯示服務器的錯誤信息 SHOW WARNINGS;顯示服務器的警告信息 SHOW PROCESSLIST;顯示哪些線程正在運行 SHOW VARIABLES;顯示系統變量信息 SELECT DATABASE(); 巡逻當前數據庫 SELECT NOW(), USER(), VERSION():顯示當前時間、用戶名、數據庫版块 SHOW ENGINES 引擎名 {LOGS|STATUS}:顯示存儲引擎的日记和狀態信息 SHOW VARIABLES LIKE 'character%'; SHOW VARIABLES LIKE 'collation%'; 確定所用系統的字符集和校對 SHOW VARIABLES LIKE 'character_set_client%';        客戶端向服務器發送數據時使用的編碼 SHOW VARIABLES LIKE 'character_set_results%';       服務器端將結果复返給客戶端所使用的編碼 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;  -- 相當于完成以上三個設置  創建window服務:sc CREATE mysql binPath= mysqld_bin_path 數據文献目錄:DATA DIRECTORY='目錄' 索引文献目錄:INDEX DIRECTORY = '目錄' 
十三、總結

這篇著作东要講解了MySQL數據庫的數據類型、庫和表常見操作、索引、視圖、函數、游標、觸發器、存儲過程、事務、備份與還原、用戶賬號、其它等知識點,但愿對环球的學習有幫助。

本文轉載自微信公眾號「IT分享之家」,不错通過以下二維碼關注。轉載本文請聯系IT分享之家公眾號。

提升青少年的网络反诱导素养,需要全社会的共同努力。从研究力量方面看,相关研究人员需要尽快开展网络直播诱导机制的研究,特别是对诱导机制的种类、具体内容、作用方式等深入剖析。从教育力量方面看,教师需要以具体的网络直播为案例开展相关的教育活动,鼓励青少年进行合作性探究,分析网络直播产生诱导的方式、途径等内容,让青少年更为深入地了解网络直播。从行政力量方面看,教育行政部门等需要为教师开展网络反诱导教育活动提供相关资源,保障网络素养教育的高质量开展。