程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL心得6--MySQL語言結構--常量、變量

MySQL心得6--MySQL語言結構--常量、變量

編輯:MySQL綜合教程

  1.在MySQL數據庫中,SQL語言由以下幾部分組成。   (1)數據定義語言(DDL)。   用於執行數據庫的任務,對數據庫及數據庫中的各種對象進行創建(create)、刪除(drop)、修改(alter)等操作。如前所述,數據庫對象主要包括:表、默認約束、規則、視圖、觸發器、存儲過程等。不同數據庫對象,其create、drop等語句的語法形式不同   (2)數據操縱語言(DML)。   用於操縱數據庫中各種對象,檢索和修改數據。DML包括的主要語句及功能如下表所示。 語    句 功    能 說    明   SELECT 從表或視圖中檢索數據   是使用最頻繁的SQL語句之一   INSERT   將數據插入到表或視圖中   www.2cto.com   UPDATE   修改表或視圖中的數據   既可修改表或視圖的一行數據,也可修改一組或全部數據   DELETE   從表或視圖中刪除數據   可根據條件刪除指定的數據   (3)數據控制語言(DCL)。   用於安全管理,確定哪些用戶可以查看或修改數據庫中的數據,DCL包括的主要語句及功能如下表所示。   語    句   功    能   說    明   grant   授予權限   可把語句許可或對象許可的權限授予其他用戶和角色   revoke   收回權限   與GRANT的功能相反,但不影響該用戶或角色從其他角色中作為成員繼承許可權限   (4) MySQL增加的語言元素。這部分不是SQL標准所包含的內容,而是為了用戶編程的方便增加的語言元素。這些語言元素包括常量、變量、運算符、函數、流程控制語句和注解等。每個SQL語句都以分號結束,並且SQL處理器忽略空格、制表符和回車符。   2. 常量   1).  字符串常量   字符串是指用單引號或雙引號括起來的字符序列,分為ASCII字符串常量和Unicode 字符串常量。   ASCII字符串常量是用單引號括起來的,由ASCII字符構成的符號串。舉例:‘hello’      ‘How are you!’  www.2cto.com     Unicode 字符串常量與ASCII字符串常量相似,但它前面有一個N標志符(N代表 SQL-92標准中的國際語言(National Language))。N前綴必須為大寫。只能用單引號括起字符串。舉例:N‘hello’   Unicode 數據中的每個字符用兩個字節存儲,而每個ASCII字符用一個字節存儲。   在字符串中不僅可以使用普通的字符,也可使用幾個轉義序列,它們用來表示特殊的字符,見下表。每個轉義序列以一個反斜槓(“\”)開始,指出後面的字符使用轉義字符來解釋,而不是普通字符。注意 NUL 字節與 NULL 值不同,NUL為一個零值字節,而 NULL 代表沒有值。   序  列   含    義   \0   一個ASCII  0 (NUL)字符   \n   一個換行符   \r   一個回車符(Windows中使用\r\n作為新行標志)   \t   一個定位符   \b   一個退格符   \Z   一個ASCII  26字符(CTRL+Z)   www.2cto.com   \'   一個單引號(“'”)   \"   一個雙引號(“"”)   \\   一個反斜線(“\”)   \%   一個“%”符。它用於在正文中搜索“%”的文字實例,否則這裡“%”將解釋為一個通配符   \_   一個“_”符。它用於在正文中搜索“_”的文字實例,否則這裡“_”將解釋為一個通配符   有以下幾種方式可以在字符串中包括引號:   ●   在字符串內用單引號“'”引用的單引號“'”可以寫成“''”(兩個單引號)。   ●   在字符串內用雙引號“"”引用的雙引號“"”可以寫成“""”(兩個雙引號)。   ●   可以在引號前加轉義字符(“\” )。   ●   在字符串內用雙引號“"”引用的單引號“'”不需要特殊處理,不需要用雙字符或轉義。同樣,在字符串內用單引號“'”引用的雙引號“"”也不需要特殊處理。   2).  數值常量   數值常量可以分為整數常量和浮點數常量。   整數常量即不帶小數點的十進制數,例如: 2,+1453,–2147483648。   浮點數常量是使用小數點的數值常量,例如: -1.39,1.5E5,0.5E-2。   3).  十六進制常量   MySQL支持十六進制值。一個十六進制值通常指定為一個字符串常量,每對十六進制數字被轉換為一個字符,其最前面有一個大寫字母“X”或小寫字“x”。在引號中只可以使用數字“0”到“9”及字母“a”到“f”或“A”到“F”。x'4D7953514C'表示字符串MySQL。   十六進制數值不區分大小寫,其前綴“X”或“x”可以被“0x”取代而且不用引號。即X'41'可以替換為0x41,注意:“0x”中x一定要小寫。   十六進制值的默認類型是字符串。如果想要確保該值作為數字處理,可以使用cast(...AS UNSIGNED)。   例: 執行如下語句: SELECT0x41, CAST(0x41 AS UNSIGNED);   如果要將一個字符串或數字轉換為十六進制格式的字符串,可以用hex()函數。   例:將字符串CAT轉換為16進制。 SELECT HEX('CAT');  www.2cto.com     4).  日期時間常量   日期時間常量:用單引號將表示日期時間的字符串括起來構成。日期型常量包括年、月、日,數據類型為DATE,表示為“1999-06-17”這樣的值。時間型常量包括小時數、分鐘數、秒數及微秒數,數據類型為TIME,表示為“12:30:43.00013”這樣的值。MySQL 還支持日期/時間的組合,數據類型為DATETIME或TIMESTAMP,如“1999-06-17 12:30:43”。DATETIME和TIMESTAMP的區別在於:DATETIME的年份在1000~9999之間,而TIMESTAMP的年份在1970~2037之間,還有就是TIMESTAMP在插入帶微秒的日期時間時將微秒忽略。TIMESTAMP還支持時區,即在不同時區轉換為相應時間。   需要要特別注意的是,MySQL 是按年-月-日的順序表示日期的。中間的間隔符“-”也可以使用如“\”、“@”或“%”等特殊符號。   如下是日期時間常量的例子:'2008-05-12 14:28:24:00'   日期時間常量的值必須符合日期和時間的標准,如這樣的日期是錯誤的:'1996-02-31'。   5).  位字段值   可以使用b'value'符號寫位字段值。value是一個用0和1寫成的二進制值。直接顯示b'value'的值可能是一系列特殊的符號。例如,b'0'顯示為空白,b'1'顯示為一個笑臉圖標。   使用bin函數可以將位字段常量顯示為二進制格式。使用oct函數可以將位字段常量顯示為數值型格式。   例: SELECT BIN(b'111101'+0), OCT(b'111101'+0);   6).  布爾值   布爾值只包含兩個可能的值:TRUE和FALSE。FALSE的數字值為“0”,TRUE的數字值為“1”。   例: 獲取TRUE和FALSE的值。 SELECT TRUE, FALSE;  www.2cto.com     7).  NULL值   NULL值可適用於各種列類型,它通常用來表示“沒有值”、“無數據”等意義,並且不同於數字類型的“0”或字符串類型的空字符串。   3.  變量   1).  用戶變量   用戶可以在表達式中使用自己定義的變量,這樣的變量叫做用戶變量。   用戶可以先在用戶變量中保存值,然後在以後引用它,這樣可以將值從一個語句傳遞到另一個語句。在使用用戶變量前必須定義和初始化。如果使用沒有初始化的變量,它的值為NULL。   用戶變量與連接有關。也就是說,一個客戶端定義的變量不能被其他客戶端看到或使用。當客戶端退出時,該客戶端連接的所有變量將自動釋放。   定義和初始化一個變量可以使用SET語句,語法格式為:   SET  @user_variable1=expression1 [,user_variable2= expression2 , …]   其中,user_variable1、user_variable2為用戶變量名,變量名可以由當前字符集的文字數字字符、“.”、“_”和“$”組成。當變量名中需要包含了一些特殊符號(如空格、#等)時,可以使用雙引號或單引號將整個變量括起來。expression1、expression2為要給變量賦的值,可以是常量、變量或表達式。   例: 創建用戶變量name並賦值為“王林”。   SET @name='王林';   注意:@符號必須放在一個用戶變量的前面,以便將它和列名區分開。“王林”是給變量name指定的值。name的數據類型是根據後面的賦值表達式自動分配的。也就是說,name的數據類型跟 '王林' 的數據類型是一樣的,字符集和校對規則也是一樣的。如果給name變量重新賦不同類型的值,則name的數據類型也會跟著改變。  www.2cto.com     (1_1).還可以同時定義多個變量,中間用逗號隔開。   例:創建用戶變量user1並賦值為1,user2賦值為2,user3賦值為3。  SET @user1=1, @user2=2,@user3=3;   (1‑2).定義用戶變量時變量值可以是一個表達式。   例:創建用戶變量user4,它的值為user3的值加1。   SET @user4=@user3+1;   (1_3).在一個用戶變量被創建後,它可以以一種特殊形式的表達式用於其他SQL語句中。變量名前面也必須加上符號@。   例1:查詢上例中創建的變量name的值。 SELECT @name;   例2: 使用查詢給變量賦值。   USE XSCJ;   SET @student=(SELECT 姓名 FROMXS WHERE 學號='081101');   例3: 查詢表XS中名字等於例2中student值的學生信息。    SELECT 學號, 姓名, 專業名, 出生日期        FROM XS WHERE 姓名=@student;   說明:在SELECT語句中,表達式發送到客戶端後才進行計算。這說明在HAVING、GROUP BY或ORDERBY子句中,不能使用包含SELECT列表中所設的變量的表達式。   對於SET語句,可以使用“=”或“:=”作為分配符。分配給每個變量的值可以為整數、實數、字符串或NULL值。也可以用其他SQL語句代替SET語句來為用戶變量分配一個值。在這種情況下,分配符必須為“:=”,而不能用“=”,因為在非SET語句中“=”被視為比較操作符。   例: 執行如下語句,結果t2的值為7。   SELECT @t2:=(@t2:=2)+5 AS  t2;   2).  系統變量   MySQL有一些特定的設置,當MySQL數據庫服務器啟動的時候,這些設置被讀取來決定下一步驟。例如,有些設置定義了數據如何被存儲,有些設置則影響到處理速度,還有些與日期有關,這些設置就是系統變量。和用戶變量一樣,系統變量也是一個值和一個數據類型,但不同的是,系統變量在MySQL服務器啟動時就被引入並初始化為默認值。附錄G中列出了絕大多數的系統變量。   例: 獲得現在使用的MySQL版本。  SELECT @@VERSION ;   大多數的系統變量應用於其他SQL語句中時,必須在名稱前加兩個@符號,而為了與其他SQL產品保持一致,某些特定的系統變量是要省略這兩個@符號的。如CURRENT_DATE(系統日期)、CURRENT_TIME(系統時間)、CURRENT_TIMESTAMP(系統日期和時間)和CURRENT_USER(SQL用戶的名字)。   例: 獲得系統當前時間。  SELECT CURRENT_TIME;   3)在MySQL中,有些系統變量的值是不可以改變的,例如VERSION和系統日期。而有些系統變量是可以通過SET語句來修改的,例如SQL_WARNINGS。 語法格式為:   SET  system _var_name =expr  www.2cto.com        | [global | session] system_var_name = expr      | @@ [global.| session.] system_var_name = expr   說明:system_var_name為系統變量名,expr為系統變量設定的新值。名稱的前面可以添加GLOBAL或SESSION等關鍵字。   指定了GLOBAL或@@global.關鍵字的是全局系統變量(globalsystem variable)。指定了SESSION或@@session.關鍵字的則為會話系統變量(local systemvariable)。SESSION和@@session.還有一個同義詞LOCAL和@@local.。如果在使用系統變量時不指定關鍵字,則默認為會話系統變量。   (3_1).全局系統變量   當MySQL啟動的時候,全局系統變量就初始化了,並且應用於每個啟動的會話。如果使用GLOBAL(要求SUPER權限)來設置系統變量,則該值被記住,並被用於新的連接,直到服務器重新啟動為止。   例: 將全局系統變量sort_buffer_size的值改為25000。           SET @@global.sort_buffer_size=25000;        注意:如果在使用SET GLOBAL時同時使用了一個只能與SETSESSION同時使用的變量,或者如果在設置一個全局變量時未指定GLOBAL(或@@),則MySQL會產生錯誤。   www.2cto.com   (3_2).會話系統變量   會話系統變量(session system variable)只適用於當前的會話。大多數會話系統變量的名字和全局系統變量的名字相同。當啟動會話的時候,每個會話系統變量都和同名的全局系統變量的值相同。一個會話系統變量的值是可以改變的,但是這個新的值僅適用於正在運行的會話,不適用於所有其他會話。   例: 將當前會話的SQL_WARNINGS變量設置為TRUE。     SET  @@SQL_WARNINGS =ON;   說明:這個系統變量表示如果不正確的數據通過一條INSERT語句添加到一個表中,MySQL是否應該返回一條警告。默認情況下,這個變量是關閉的,設為ON表示返回警告。   例: 對於當前會話,把系統變量SQL_SELECT_LIMIT的值設置為10。這個變量決定了SELECT語句的結果集中的最大行數。   SET @@SESSION.SQL_SELECT_LIMIT=10;   SELECT  @@LOCAL .SQL_SELECT_LIMIT;   說明:在這個例子中,關鍵字SESSION放在系統變量的名字前面(SESSION和LOCAL可以通用)。這明確地表示會話系統變量SQL_SELECT_LIMIT和SET語句指定的值保持一致。但是,名為SQL_SELECT_LIMIT的全局系統變量的值仍然不變。同樣地,改變了全局系統變量的值,同名的會話系統變量的值保持不變。   MySQL對於大多數系統變量都有默認值。當數據庫服務器啟動的時候,就使用這些值。也可以在C盤MYSQL文件夾下的my.ini選項文件中修改這些值。當數據庫服務器啟動的時候,這個文件被自動讀取。   (1).如果要將一個系統變量值設置為MySQL默認值,可以使用default關鍵字。   例: 把SQL_SELECT_LIMIT的值恢復為默認值。   SET @@LOCAL.SQL_SELECT_LIMIT=DEFAULT;   (2).使用SHOWVARIABLES語句可以得到系統變量清單。SHOW GLOBAL VARIABLES返回所有全局系統變量,而SHOW SESSION VARIABLES返回所有會話系統變量。如果不加關鍵字就默認為SHOWSESSION VARIABLES。  www.2cto.com     例: 得到系統變量清單。 SHOW VARIABLES;   (3)要獲得與樣式匹配的具體的變量名稱或名稱清單,需使用LIKE子句,語句如下:   SHOW VARIABLES LIKE 'max_join_size';   SHOW GLOBAL VARIABLES LIKE 'max_join_size';   (4)要得到名稱與樣式匹配的變量的清單,需使用通配符“%”,例如: SHOW VARIABLESLIKE 'character%';  
  作者 tianyazaiheruan

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved