久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql中有沒有關鍵字

171次閱讀
沒有評論

共計 8714 個字符,預計需要花費 22 分鐘才能閱讀完成。

這篇文章主要介紹“mysql 中有沒有關鍵字”的相關知識,丸趣 TV 小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“mysql 中有沒有關鍵字”文章能幫助大家解決問題。

mysql 中有關鍵字。mysql 中提供了多種關鍵字:1、BETWEEN,用在 WHERE 語句之后的時間或者數字的范圍查詢;2、CALL,用于調用存儲過程;3、CURRENT_DATE,獲取當天日期;4、CURRENT_TIME,獲取當前時間;5、CURRENT_USER,返回 MYSQL 的用戶名;6、CURSOR,用于聲明 mysql 中的游標;7、DISTINCT,用于去除重復數據。

本教程操作環境:windows7 系統、mysql8 版本、Dell G3 電腦。

在使用 MySQL 的時候,一般盡量避免用關鍵字作為表名,如使用關鍵字做表名,需要按標準寫法給 SQL 語句加 [](或是“) 區分字段名和表名。

下面列出 MySQL 所有關鍵字,希望給使用 MySQL 的朋友提供一些參考幫助。

ADDALLALTERANALYZEANDASASCASENSITIVEBEFOREBETWEENBIGINTBINARYBLOBBOTHBYCALLCASCADECASECHANGECHARCHARACTERCHECKCOLLATECOLUMNCONDITIONCONNECTIONCONSTRAINTCONTINUECONVERTCREATECROSSCURRENT_DATECURRENT_TIMECURRENT_TIMESTAMPCURRENT_USERCURSORDATABASEDATABASESDAY_HOURDAY_MICROSECONDDAY_MINUTEDAY_SECONDDECDECIMALDECLAREDEFAULTDELAYEDDELETEDESCDESCRIBEDETERMINISTICDISTINCTDISTINCTROWpDOUBLEDROPDUALEACHELSEELSEIFENCLOSEDESCAPEDEXISTSEXITEXPLAINFALSEFETCHFLOATFLOAT4FLOAT8FORFORCEFOREIGNFROMFULLTEXTGOTOGRANTGROUPHAVINGHIGH_PRIORITYHOUR_MICROSECONDHOUR_MINUTEHOUR_SECONDIFIGNOREININDEXINFILEINNERINOUTINSENSITIVEINSERTINTINT1INT2INT3INT4INT8INTEGERINTERVALINTOISITERATEJOINKEYKEYSKILLLABELLEADINGLEAVELEFTLIKELIMITLINEARLINESLOADLOCALTIMELOCALTIMESTAMPLOCKLONGLONGBLOBLONGTEXTLOOPLOW_PRIORITYMATCHMEDIUMBLOBMEDIUMINTMEDIUMTEXTMIDDLEINTMINUTE_MICROSECONDMINUTE_SECONDMODMODIFIESNATURALNOTNO_WRITE_TO_BINLOGNULLNUMERICONOPTIMIZEOPTIONOPTIONALLYORORDEROUTOUTEROUTFILEPRECISIONPRIMARYPROCEDUREPURGERAID0RANGEREADREADSREALREFERENCESREGEXPRELEASERENAMEREPEATREPLACEREQUIRERESTRICTRETURNREVOKERIGHTRLIKESCHEMASCHEMASSECOND_MICROSECONDSELECTSENSITIVESEPARATORSETSHOWSMALLINTSPATIALSPECIFICSQLSQLEXCEPTIONSQLSTATESQLWARNINGSQL_BIG_RESULTSQL_CALC_FOUND_ROWSSQL_SMALL_RESULTSSLSTARTINGSTRAIGHT_JOINTABLETERMINATEDTHENTINYBLOBTINYINTTINYTEXTTOTRAILINGTRIGGERTRUEUNDOUNIONUNIQUEUNLOCKUNSIGNEDUPDATEUSAGEUSEUSINGUTC_DATEUTC_TIMEUTC_TIMESTAMPVALUESVARBINARYVARCHARVARCHARACTERVARYINGWHENWHEREWHILEWITHWRITEX509XORYEAR_MONTHZEROFILL

下面給大家列出一下常見 mysql 關鍵字的作用

關鍵字作用 ANALYZE 通過 Analyze Table 語句可以修復索引。使用“SHOW INDEX FROM 表名”查看表中的索引狀態,當字段中不同值的數量大大多于表中 CARDINALITY 數量時,索引基本沒有起作用,這時使用“ANALYZE TABLE 表名”可以修復索引,再次使用“SHOW INDEX FROM 表名”可以看到 CARDINALITY 索引恢復正常 BETWEEN 用在 WHERE 之后的時間或者數字的范圍查詢,如“SELECT * FROM USER WHERE CREATE BETWEEN 2020-11-20 AND 2020-11-30 ;”查詢的是 20 號至 30 號之間的數據, 如果時間類型為 DATETIME 時查詢的范圍為 00:00:00, 比如上面的查詢語句中如果 CREATE_TIME 為 DATETIME 類型,查詢的范圍便是“2020-11-20 00:00:00 至 2020-11-30 00:00:00”CALL 用于調用存儲過程,如:CALL showUser()CASCADE 添加在約束之后,設置之后當刪除、更新主表時也會操作從表,例如:“CONSTRAINT 用戶信息 FOREIGN KEY (USER_NAME) REFERENCES TASK.USER (NAME) ON DELETE CASCADE ON UPDATE CASCADE”,添加之后當用戶表修改用戶名稱之后,從表的用戶名稱也會修改 CURRENT_DATE 用于獲取當天日期,如“SELECT CURRENT_DATE”返回的就是當天的日期 CURRENT_TIME 用于獲取當前時間,如 SELECT CURRENT_TIME 返回的就是當前的時分秒 DEFAULT CURRENT_TIMESTAMP 創建時間字段時如果加入這段代碼代表新增數據時默認插入當前時間,創建字段時:“create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP”ON UPDATE CURRENT_TIMESTAMP 創建時間字段時如果加上這段代碼代表修改數據時默認會同步當前時間,創建字段時:“update_time timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP”CURRENT_USER 返回 MYSQL 的用戶名 CURSOR 用于聲明 mysql 中的游標,用在存儲過程中,有充當指針的作用,用法:“DECLARE 游標名稱 CURSOR FRO 查詢出的結果集”DECLARE 用于在復合語句中聲明變量,如存儲過程中,可以使用 SET 變量名 = 值這種方式重新賦值, 示例中結果 1 是“測試”,結果 1(2)是“測試 1”DELAYED 用于使用延遲插入操作,在執行 DELAYED 聲明的語句時,數據庫會先返回狀態信息,然后將插入操作放入隊列,等待沒有操作隊列數據的指令便開始執行隊列 DESCRIBE 用于查看數據表中字段的詳細設計,有兩種用法:1.DESCRIBE 表名查看所有字段。2.DESCRIBE 表名 字段名用于單獨查看字段 DISTINCT 去除重復的數據,只能返回去重的數據,必須是在查詢的第一個字段,常用來查詢某一字段有多少條不重復的數據。如 SELECT COUNT(DISTINCT name) FROM userDISTINCTROW 用于聯表查詢的去重,可以查詢出主表中關聯的附表數據而不包含那些與查詢出的主表不相關的數據,如 SELECT DISTINCTROW user.id ,untitled.friend_name FROM user INNER JOIN untitled ON user.id = untitled.friend_id WHERE user.id = 1 可以查詢出用戶 id 與相關聯的 untitled 表中的好友名稱,不包含沒有查詢的用戶的的好友 DROP 主要用于刪除結構,如刪除數據庫:DROP DATABASE 數據庫名,刪除表:DROP TABLE 表名,刪除字段:ALTER TABLE 表名 DROP 字段名 DUAL 虛擬表在 mysql5.1 以上版本會有,感覺在 ORACLE 中才有用,因為在 ORACLE 中使用查詢必須要有 FROM 表名,而在 mysql 中沒有表名不會報錯,如在 mysql 中 SELECT 1+1 不會有問題但是在 ORACLE 中會報錯,這時要用 SELECT 1+1 FROM DUAL,官方聲明:DUAL 完全是為了方便那些要求所有 SELECT 語句都應該有 FROM 或 other 子句的人 EXISTS 用于在 WHERE 后的判斷操作,其返回結果是一個布爾值,使用方式是將現有行代入內查詢檢驗,如果內查詢中返回一行或是多行數據,則輸出本行數據,反之內查詢沒有數據則不輸出本行數據,如:SELECT * FROM user u WHERE EXISTS(SELECT * FROM untitled n WHERE n.friend_id=u.id)返回的是在 untitled 表中 friend 字段可以與 user 表中的 id 相關聯的數據, 也可以在 EXISTS 關鍵字前加 NOT 返回的就是不關聯的數據了 EXPLAIN 用查看一個 sql 的執行,有沒有加入索引或是有沒有做全表掃描等,使用方式:在 SELECT 前加上,如 EXPLAIN SELECT * FROM userFULLTEXT 全文索引,用于優化查詢速度,可以在創建表時加入 FULLTEXT(字段 1, 字段 2),也可以在創建表之后單獨加入 ALTER TABLE 表名 ADD FULLTEXT INDEX 索引名 (字段名)需要注意的是添加索引是,表引擎要使用 MyISAM 不然會報錯 The used table type doesn t support FULLTEXT indexesGRANT 用于用戶權限操作,可以授權給用戶權限或是刪除用戶權限,操作方式有很多如:CREATE USER testUser @ host IDENTIFIED BY 123456 用于創建用戶,show grants for testUser @ host 查看用戶權限等操作 GROUP 用于分組操作,GROUP BY 字段名 分組操作后要查詢的字段必須要在 GROUP BY 之后添加不然會報錯,比較經典的用法如:SELECT friend_name , COUNT(friend_name) FROM untitled GROUP BY friend_name 查詢某一類型的數據條數 HAVING 用于在聚合后對數據進行篩選,與 WHERE 的區別在于,WHERE 是在聚合前篩選數據的無法使用聚合函數如 COUNT,SUM 等,HAVING 是在聚合后進行篩選的可以使用聚合函數,例如:SELECT friend_name , COUNT(friend_name) FROM untitled GROUP BY friend_name HAVING COUNT(friend_name) 1 查詢的便是 friend_name 數量大于一的數據條數 HIGH_PRIORITY 用于 SELECT 和 INSERT 語句,聲明此操作為高優先級操作,數據庫會先執行此類操作,如:SELECT HIGH_PRIORITY * FROM user 當同時存在多個操作時,這個語句優先執行 IGNORE 常用于批量插入時忽略報錯數據,如:INSERT IGNORE INTO user (id,name,age) values(6, pangqi ,25); 如果主鍵 id 已存在則不會報錯,而是執行下一段插入操作 INNER 用于內連接查詢,設定 ON 條件之后會將符合條件的數據全部展示出來,與左連接,右連接的區別在于:INNER 沒有側重點,mysql 會將符合條件的所有數據都查出來,所以使用時要小心不要出現出現笛卡爾積,另外由于 INNER 是 mysql 默認的連接方式,所以可以省略 INNER 關鍵字如:SELECT * FROM user JOIN untitled ON user.id = untitled.friend_idINTERVAL 主要用于時間間隔,如:SELECT * FROM USER where create_time NOW()-INTERVAL 4 DAY 返回的是創建時間在四天前的數據,也可以將 DAY 替換為小時,分鐘,年月等,還可以用來比較數據如:SELECT INTERVAL(6,1,2,3,4,7,8,9,10)會返回 4,因為在比較時 mysql 會用索引為 0 的數據來比較接下來的數據,當接下來的數據大于索引為 0 的數據時,mysql 會返回上一個數據的索引 ISmysql 中的 IS 關鍵字僅用在 IS NULL 或是 IS NOT NULL 中 如:SELECT * FROM USER where update_time IS NULLJOIN 用于連接兩張表,連接方式大致有內連接 INNER JOIN,右連接 RIGHT JOIN,左連接 LEFT JOINKEYKEY 是數據庫的物理結構, 有兩層意義和作用:1:約束,2:索引,如主鍵的聲明 PRIMARY KEY (id),,既會有唯一約束,又會自動添加索引 KILL 用于終止 mysql 中的線程,可以使用 SHOW PROCESSLIST 查看現在正在進行的線程,使用 KILL 線程 id 終止線程,有兩個修改符 1:CONNECTION 默認的修改符可以終止所有與該線程 id 有關的連接,2:QUERY 終止現在執行的語句,但不會終止連接 LABEL 語句標簽 LEAVELeave 語句表明退出指定標簽的流程控制語句塊,通常會用在 begin…end,以及 loop, repeat, while 的循環語句中,就好像編程中的 break 一樣,使用方式 LEAVE 循環名;LEFTLEFT()函數是一個字符串函數,它返回具有指定長度的字符串的左邊部分。如:SELECT LEFT(name,3) FROM userLIKE 用于模糊搜索,可以搭配 % 與_共同使用,% 代表查詢一個或多個通配符,而_代表一個字符,如:SELECT * FROM user WHERE name LIKE %i 可以查詢到所有 name 中以 i 結尾的數據,將 % 換成_之后,查詢條件就變成了查詢 name 中以 i 結尾并且前面只有一個字符的數據 LIMIT 用于分頁查詢,如:SELECT * FROM user LIMIT 4,5 其中第一個參數為起始條數 如上例就是從第 4 條數據開始返回,第二個參數為偏移量如上例所示參數為 5 則表示返回從第 4 條的后 5 條數據,之前偏移量可以為 - 1 代表查詢起始條數后的所有數據,但是這個寫法被 mysql 官方認定為一種錯誤,所以較新版的 mysql 都不能用了,最好的辦法就是給一個比較大的數字 LOCALTIME 當地時間,可用做查詢結果字段,where 條件,插入時的當前時間,更新時的時間等等,mysql 有多種時間函數,可根據需要選擇不同的函數使用, 例:SELECT LOCALTIME,NOW(),sysdate(), localtimestamp, localtimestamp();LOCK 鎖表與解鎖 MySQL 使客戶端會話可以顯式獲取表鎖,以便與其他會話協作訪問表,或者防止其他會話在會話需要互斥訪問時修改表。會話只能為其自身獲取或釋放鎖。一個會話無法獲取另一會話的鎖,也不能釋放另一會話持有的鎖。例:LOCK table user read local 此時會產生一個鎖表操作,所有執行修改表的操作將會被拒絕并提示:Table user was locked with a READ lock and can t be updated,可以使用 unlock tables; 關鍵字解鎖 LOW_PRIORITY 低優先級,MySQL 允許你改變語句調度的優先級,它可以使來自多個客戶端的查詢更好地協作,這樣單個客戶端就不會由于鎖定而等待很長時間。一般用于 DELETE、INSERT、LOAD DATA、REPLACE 和 UPDATE 語句中,例:update LOW_PRIORITY user set username = zhangsan 在這種情況下,如果寫入者在等待的時候,第二個讀取者到達了,那么就允許第二個讀取者插到寫入者之前。只有在沒有其它的讀取者的時候,才允許寫入者開始操作。MOD 取余函數,如:select mod(12,5)返回余數 2NATURAL 自然連接,是 JOIN 的一種,特點是將表中具有相同名稱的字段自動進行記錄匹配,而這些同名字段類型可以不同,所以表中字段的類型可以不同,可以應用在 INNER,LEFT 等 JOIN 中,例:select * from user NATURAL LEFT JOIN user2 在這里 user 與 user2 的區別是除了 id 之外 user2 字段后會加上 1,這將導致連接時自動使用 id 進行關聯,結果也確實如此 OPTIMIZE 作用:優化整理整理表的碎片及索引,在數據庫存儲數據時數據庫會分配表空間,及索引給該數據當數據刪除后數據庫并不會收回這些資源而是等待新的數據填補這些空缺,使用 OPTIMIZE 關鍵字可以主動清除這些被占用的資源,用法:optimize table 表名稱 RANGE 分區:基于一個給定的區間范圍,要求給定區間中這個字段的值是連續的,當執行操作時會走相應的分區,可以極大的提升效率,要求是如果該表有主鍵的話作為分區字段也應該在主鍵的行列,用法:建表語句 +PARTITION BY RANGE (xuehao) (PARTITION p0 VALUES LESS THAN (6),PARTITION p1 VALUES LESS THAN (11),PARTITION p2 VALUES LESS THAN (16), PARTITION p3 VALUES LESS THAN (21));REFERENCES 建立外鍵關系,在建表語句中:FOREIGN KEY(uid) REFERENCES users(id)意思是指字段 uid 將和 user 表的主鍵字段 id 相連接 REGEXP 正則表達式,可以在條件中使用正則表達式進行操作,使用 SELECT * FROM user WHERE email NOT REGEXP ^[A-Z0-9._%-]+@[A-Z0-9.-]+.[A-Z]{2,4}$ RENAME 修改表名稱,使用:rename table user2 to user3;REPEAT 將給定數據當做字符串復制指定次數如:select REPEAT(3,3)得出的結果為“333”REPLACE 替換所有的指定字符串,如:select REPLACE(這是一個字符串,或者是一個字符 , 一個 , 兩個 REVOKE 撤銷已經賦予給 MySQL 用戶權限, 如:revoke all on *.* from testUser@host; 記得完成后刷新用戶權限表 FLUSH PRIVILEGES;RIGHT 對字符串進行截位操作, 如:select RIGHT( 這是一個字符串 ,5), 會倒序截取指定位數的字符串 RLIKE 模糊查詢,與 like 不同的時,rlike 的內容可以是正則, 且可以不完全匹配,如:select * from user where email RLIKE ^www.*$ SEPARATOR 可將查詢結果用字符串連接變為一行,SEPARATOR 指定連接符, 需配合 GROUP BY 使用,如:SELECT *, GROUP_CONCAT(username order by username separator) SCORE FROM user GROUP BY email RLIKE ^www.*$ USING 連接查詢時如果是字段名相同則可以作為連接條件,using 可以代替 on 出現如:select * from user left join students USING(quanxian)WHILE 循環語句關鍵詞,用在存儲過程中,需結合流程控制語句來使用,如:CREATE PROCEDURE fun() BEGIN SET @sum:=10; WHILE @sum 0 DO SELECT @sum; SET @sum:=@sum-1; END WHILE; END CALL fun(); DROP PROCEDURE fun

XOR 表示邏輯異或, 當任意一個操作數為 NULL 時, 返回值為 NULL,對于非 NULL 的操作數, 如果兩個的邏輯真假值相異,則返回結果為 1,否則為 0,如:select true XOR null;select true XOR true;select true XOR false;ZEROFILL 當創建表時數值類型加上這個關鍵字后,如果插入數字位數不足則自動填充相應的位數,如:CREATE TABLE student3 (id int(11) unsigned zerofill not null, xuehao int(50) NOT NULL );insert into student3 value(1,2); select * from student3;

關于“mysql 中有沒有關鍵字”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注丸趣 TV 行業資訊頻道,丸趣 TV 小編每天都會為大家更新不同的知識點。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-13發表,共計8714字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 宁远县| 略阳县| 信阳市| 桦川县| 鄂托克旗| 深泽县| 鞍山市| 措勤县| 北辰区| 视频| 邳州市| 石首市| 阳朔县| 宣武区| 商水县| 泸州市| 当阳市| 江西省| 讷河市| 渭源县| 浦城县| 东乌珠穆沁旗| 肇源县| 克什克腾旗| 通州市| 甘南县| 西宁市| 北海市| 九寨沟县| 南雄市| 南华县| 久治县| 吴川市| 清水县| 和田县| 来宾市| 苗栗市| 兴国县| 城固县| 光山县| 察雅县|