乙個表示式是直接量、列名、運算子和函式的組合,然後得到乙個值。比如:
5-2這是乙個表示式;
left('this',2)
也是乙個表示式。
表示式別名
對於select查詢語句,mysql必須為每個select子表示式分配乙個名字,這個名字叫做列標題。如果子表示式是一列,那麼列名就是列標題,如果子表示式是乙個表示式,那麼列標題就是這個表示式。如:
select column1,salary*2 from tablename;
那麼列標題就是column1和salary*2。
可以為子表示式指定乙個列標題,如下:
select column1,salary*2 as
double
from tablename;
那麼列標題變成了column1和double。
有一種情況必須指定列標題,就是在order和group by子句中用到了子表示式的。如:
select column1,salary*2 as
double
from tablename order by double
;
而不能寫成
select column1,salary*2 from tablename order by salary*2;
指定的列標題不能出現在同一條select子句中,如:
select column1,salary*2 as
double
,double
+2 from tablename;
是錯誤的。
列指定表示式
列指定表示式是最常用的select子表示式。列指定表示式指定從資料表裡查出一列。如:
select columnname1 from tablename;
columnname1就是乙個列指定表示式。
列指定表示式可以在列名前面加上表名,還可以加上資料庫名。乙個完整的列指定是:
database.table.column
使用者變數表示式
使用者變數表示式的格式為@加上變數名,如建立乙個使用者變數並初始化:
set
@age
= 18
使用者變數的型別派生自標量值的型別,上面的賦值為整數18,則變數的型別也為整型。
變數建立後可用於select子句和其他子句中,如where。如:
select
@age
將得到值18。
系統變數表示式
系統變數分為全域性系統變數和會話系統變數。全域性系統變數會影響到所有連線到mysql伺服器的使用者,而系統全域性變數僅影響當前的連線使用者。系統變數以@@開始,跟變數名。
設定乙個全域性系統變數:
set@@
global
.sql_warnings = true
global是全域性系統變數的關鍵字。
設定乙個會話系統變數:
set@@
session
.sql_select_limit = 10
session是會話系統變數的關鍵字。
case表示式
case是乙個條件表示式,類似於變成預言的if-else。case表示式用於如下情況:
比如有一張學生表(student),裡面的行存放的是每乙個學生的資訊,有一列是***,存放的是學生的性別。存資料的時候是m代表男,f代表女。但是我想查出來的結果是:如果是男的就顯示「男」,如果是女的就顯示「女」怎麼辦呢?
select
case ***
when
'm'then
'男'else
'女'end
as ***
from student;
case表示式的格式為:
case 待檢測值
when 條件1 then 值1
when 條件2 then 值2
else 值3
endcase表示式還可以巢狀,巢狀針對的是需要對兩列進行判斷的情況下。比如除了對性別判斷外,還需要對成績(score)進行判斷:
select
case ***
when
'm'then
case score
when 100 then
'男一百分'
when 0 then
'男零分'
else
'男普通'
endwhen
'f'then
case score
when 100 then
'女一百分'
when 0 then
'女零分'
else
'女普通'
endend
from student
case表示式還可以將待檢測值放入when的條件中。
函式表示式
函式表示式是乙個函式,如:
select
ucase
('database'
)
ucase(database)是乙個函式表示式。用於將字串標量值轉換成大寫。
函式表示式也可以巢狀。乙個函式表示式可以是另乙個函式表示式的引數。
復合數值表示式
復合數值表示式就是數值的運算。如:
select 10*8
10*8是乙個復合數值表示式。
其它的數值運算子還有:
* 乘法
/ 除法
+ 加法
- 減法
% 求餘
div 除法並捨入
復合日期表示式
復合日期表示式是乙個日期標量表示式與乙個時間間隔量的運算。比如乙個日期標量表示式加上10天。
select
'1990-10-12'
+ interval 10 day
'1990-10-12' + interval 10 day 是乙個復合日期表示式。interval 10 day 是乙個日期間隔量,表示10天,其它類似還有:
interval 10 year 表示10年
interval 10 month 表示10個月
interval 10 week 表示10星期
interval 10 day 表示10天
當乙個日期加上乙個幾天的日期間隔量時,這個日期會先轉換為乙個從0年開始的乙個天數的順序號,然後這個順序號加上天數的日期間隔量,然後再轉換成日期。
select
'2010-01-31'
+ interval 1 month
2023年1月31日加上乙個月後的日期是2023年2月31日,由於2月份只有28天,所以結果會轉化成2023年2月28日。
mysql正規表示式 MySQL正規表示式
正規表示式是為複雜搜尋指定模式的強大方式。正規表示式描述了一組字串。最簡單的正規表示式是不含任何特殊字元的正規表示式。例如,正規表示式hello匹配hello。非平凡的正規表示式採用了特殊的特定結構,從而使得它們能夠與1個以上的字串匹配。例如,正規表示式hello word匹配字串hello或字串w...
mysql約束表示式大全 MySQL約束
主鍵約束 primary key 主鍵約束即在表中定義乙個主鍵來唯一確定表中每一行資料的識別符號。主鍵可以是表中的某一列或者多列的組合,其中由多列組合的主鍵稱為復合主鍵。主鍵應該遵守下面的規則 每個表只能定義乙個主鍵。主鍵值必須唯一標識表中的每一行,且不能為 null,即表中不可能存在兩行資料有相同...
mysql 正規表示式
已知mysql可以通過 like 來進行模糊匹配。mysql 同樣也支援其他正規表示式的匹配,mysql中使用 regexp 操作符來進行正規表示式匹配。例項 查詢name欄位中以 st 為開頭的所有資料 mysql select name from person tbl where name re...