Mysql第六講 select查詢基礎篇

qwer1030274531發表於2020-09-17

  Mysql第六講

  基本語法

  查詢常量

  查詢表示式

  查詢函式

  查詢指定的欄位

  查詢所有列

  列別名

  表別名


基本語法

select 查詢的列 from 表名;1

注意:

  • select語句中不區分大小寫,SELECT和select、FROM和from效果一樣。

  • 查詢的結果放在一個表格中,表格的第1行稱為列頭,第2行開始是資料,類屬於一個二維陣列。

查詢常量

select 常量值1,常量值2,常量值3;1

如:

mysql> select 1,'b';+---+---+| 1 | b |+---+---+| 1 | b |+---+---+1 row in set (0.00 sec)1234567

查詢表示式

select 表示式;1

如:

mysql> select 1+2,3*10,10/3;+-----+------+--------+| 1+2 | 3*10 | 10/3   |+-----+------+--------+|   3 |   30 | 3.3333 |+-----+------+--------+1 row in set (0.00 sec)1234567

查詢函式

select 函式;1

如:

mysql> select mod(10,4),isnull(null),ifnull(null,'第一個引數為空返回這個值'),ifnull(1,'第一個引數為空返回這個值,否知返回第一個引數');+-----------+--------------+-----------------------------------------------------+--------------------------------------------------------------------------------+| mod(10,4) | isnull(null) | ifnull(null,'第一個引數為空返回這個值')             | ifnull(1,'第一個引數為空返回這個值,否知返回第一個引數')                       |+-----------+--------------+-----------------------------------------------------+--------------------------------------------------------------------------------+|         2 |            1 | 第一個引數為空返回這個值                            | 1                                                                              |+-----------+--------------+-----------------------------------------------------+--------------------------------------------------------------------------------+1 row in set (0.00 sec)1234567

說明一下:

mod函式,對兩個引數取模運算。

isnull函式,判斷引數是否為空,若為空返回1,否則返回0。

ifnull函式,2個引數,判斷第一個引數是否為空,如果為空返回第一個引數的值,否則返回第一個引數的值。

查詢指定的欄位

select 欄位1,欄位2,欄位3 from 表名;1

如:

mysql> drop table if exists test1;Query OK, 0 rows affected (0.01 sec)mysql> create table test1(a int not null comment '欄位a',b varchar(10) not null default '' comment '欄位b');Query OK, 0 rows affected (0.01 sec)mysql> insert into test1 values(1,'a'),(2,'b'),(3,'c');Query OK, 3 rows affected (0.01 sec)Records: 3  Duplicates: 0  Warnings: 0mysql> select a,b from test1;+---+---+| a | b |+---+---+| 1 | a || 2 | b || 3 | c |+---+---+3 rows in set (0.00 sec)12345678910111213141516171819

說明:

test1表有兩個欄位a、b,select a,b from test1;用於查詢test1中兩個欄位的資料。

查詢所有列

select * from 表名1

說明:

*表示返回表中所有欄位。

如:

mysql> select * from test1;+---+---+| a | b |+---+---+| 1 | a || 2 | b || 3 | c |+---+---+3 rows in set (0.00 sec)123456789

列別名

在建立資料表時,一般都會使用英文單詞或英文單詞縮寫來設定欄位名,在查詢時列名都會以英文的形式顯示,這樣會給使用者檢視資料帶來不便,這種情況可以使用別名來代替英文列名,增強閱讀性。

語法:

select 列 [as] 別名 from 表;1

使用雙引號建立別名:

mysql> select a "列1",b "列2" from test1;+------+------+| 列1  | 列2  |+------+------+|    1 | a    ||    2 | b    ||    3 | c    |+------+------+3 rows in set (0.00 sec)123456789

使用單引號建立別名:

mysql> select a '列1',b '列2' from test1;;+------+------+| 列1  | 列2  |+------+------+|    1 | a    ||    2 | b    ||    3 | c    |+------+------+3 rows in set (0.00 sec)123456789

不用引號建立別名:

mysql> select a 列1,b 列2 from test1;+------+------+| 列1  | 列2  |+------+------+|    1 | a    ||    2 | b    ||    3 | c    |+------+------+3 rows in set (0.00 sec)123456789

使用as建立別名:

mysql> select a as 列1,b as 列 2 from test1;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2 from test1' at line 1mysql> select a as 列1,b as '列 2' from test1;+------+-------+| 列1  | 列 2  |+------+-------+|    1 | a     ||    2 | b     ||    3 | c     |+------+-------+3 rows in set (0.00 sec)1234567891011

別名中有特殊符號的,比如空格,此時別名必須用引號引起來。

懵逼示例,看效果:

mysql> select 'a' 'b';+----+| a  |+----+| ab |+----+1 row in set (0.00 sec)mysql> select 'a' b;+---+| b |+---+| a |+---+1 row in set (0.00 sec)mysql> select 'a' "b";+----+| a  |+----+| ab |+----+1 row in set (0.00 sec)mysql> select 'a' as "b";+---+| b |+---+| a |+---+1 row in set (0.00 sec)12345678910111213141516171819202122232425262728293031

認真看一下第1個和第3個返回的結果(列頭和資料),是不是懵逼狀態,建議這種的最好使用as,as後面跟上別名。

表別名

select 別名.欄位,別名.* from 表名 [as] 別名;1

如:

mysql> select t.a,t.b from test1 as t;+---+---+| a | b |+---+---+| 1 | a || 2 | b || 3 | c |+---+---+3 rows in set (0.00 sec)mysql> select t.a as '列 1',t.b as 列2 from test1 as t;+-------+------+| 列 1  | 列2  |+-------+------+|     1 | a    ||     2 | b    ||     3 | c    |+-------+------+3 rows in set (0.00 sec)mysql> select t.* from test1 as t;                   +---+---+| a | b |+---+---+| 1 | a || 2 | b || 3 | c |+---+---+3 rows in set (0.00 sec)mysql> select * from test1 as t;+---+---+| a | b |+---+---+| 1 | a || 2 | b || 3 | c |+---+---+3 rows in set (0.00 sec)123456789101112131415161718192021222324252627282930313233343536373839

注意:

  • 建議別名前面跟上as關鍵字

  • 查詢資料的時候,避免使用select *,建議需要什麼欄位寫什麼欄位


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2721963/,如需轉載,請註明出處,否則將追究法律責任。

相關文章