1. —-> limit 1<—-
加上limit 1,查詢了對應的一條記錄,就不會繼續往下掃瞄,提高查詢效率(減少資料庫訪問負擔)。
適用於沒有增加索引(比如類似於主鍵,已經增加了索引的列,不加效果也相同),且只需要查詢一列(或者0列)的資料查詢語句。
select * from table1 where addr=? limit 1;
2.—->union和union all<—-
這兩個關鍵字都是將兩個結果集合並為乙個。
區別:
1.union在進行表鏈結後悔篩選掉重複的記錄,所以在表鏈結後悔對所產生的結果集進行排序運算,刪除重複的記錄再返回結果。
2.union all 只是簡單的將兩個結果合併後就返回。如果返回的兩個結果集中包含重複的資料,那麼返回的結果就會包含重複的資料。
3.從效率上說,union all 比union快的多,所以如果可以確認兩個合併的結果集中不包含重複的資料,就使用union all。
4.反之,為了篩除重複的資料,用union更為合適。
select * from table1 union
select * from table2
select * from table1 union
allselect * from table2
基本原則(union組合查詢):
1.所有查詢中的列數和順序必須相同。
2.資料型別必須相容。
3.—->cast<—-
cast函式用於將某種資料型別的表示式顯示轉換成另一種資料型別。
轉換條件:
1.兩個表示式的資料型別完全相同。
2.兩個表示式可隱性轉換。
3.必須顯式轉換資料型別。
concat('11','22','33') // 112233
4.—–>concat<—-
接連多個字段,返回結果為連線引數產生的字串。如果任何乙個引數為null,則返回值為null。
注意:
1.如果所有引數均為非二進位制字串,則結果為非二進位制字串。
2.如果自變數中含有任一二進位制字串,則結果為乙個二進位制字串。
select
concat(firstname,lastname) from table1
5.—->concat_ws<—-
concat_ws()代表 concat with separator(分離器)。第乙個引數是其他引數的分隔符,分隔符的位置
放在要連線的兩個字串之間。分隔符可以是乙個字串,也可以是其他引數。
注意:
1.如果分隔符為null,則結果為null。
2.函式會忽略任何分隔符引數後的null值。
concat_ws('_','11','22',null,'33') //11_22_33 (忽略了null值)
6.—-> group_concat <—-
語法如下:
group_concat([distinct] 要連線的字段 [order by asc/desc 排序字段 ][separator 『分隔符』])
舉例用法:
1.原始方法:
select * from table //欄位為id,name
結果為:1,10
1,20
1,20
2,10
2,20
3,200
3,300
2.以id分組,把name欄位的值列印在一行,逗號分隔(預設):
select id,group_concat(name) from
table
group
by id
結果為:1, 10,20,20
2, 20
3, 200,300
3.以id分組,把name的值列印在一行,分號分隔:
select id,group_concat(name separator ';') from
table
group
by id
1, 10;20;20
2, 20
3, 200;300
4.以id分組,把去除冗餘的name欄位的值列印在一行;
select id,group_concat(distinct name) from
table
group
by id
1, 10,20
2, 20
3, 200,300
5.以id分組,把name欄位的值列印在一行,逗號分隔,以name倒序排序:
select id,group_concat(name order
by name desc) from
table
group
by id
1, 20,20,10
2, 20
3, 300,200
7.—-> repeat <—-
用來複製字串,repeat(要複製的字串,複製的倍數)
repeat('abc',2) //abcabc
8.—-> ltrim(str)<—–
去除左邊空格函式
select ltrim(' left') // 'left'
9.—->rtrim(str)<—-
去除右邊空格函式
select rtrim('right ') // 'right'
10.—->trim<—-
過濾指定的字串。
mysql> select
trim(' bar '); //預設刪除前後空格
-> 'bar'
mysql> select
trim(leading ','
from
',,bar***'); //刪除指定首字元 如',『
-> 'bar***'
mysql> select
trim(both ','
from
',,bar,,,'); //刪除指定首尾字元
-> 'bar'
mysql> select
trim(trailing ','
from
'barxxyz,,');
-> 'barxxyz'
mysql學習筆記 51 mysql學習筆記
初學mysql時整理,隨時更新 資料操作 增 insert into 表名 字段列表 values 值列表 值列表 如果要插入的值列表包含所有字段並且順序一致,則可以省略字段列表。可同時插入多條資料記錄!replace 與 insert 完全一樣,可互換。insert into 表名 set 欄位名...
mysql學習筆記 51 Mysql 學習筆記
一.首先進入mysql mysql u root p新增使用者許可權設定 grant all privileges on to jerry localhost identified by aa1234567 只允許本機訪問 grant all privileges on to jerry 10.80...
mysql做筆記 mysql學習筆記
alter table 新增,修改,刪除表的列,約束等表的定義。檢視列 desc 表名 修改表名 alter table t book rename to bbb 新增列 alter table 表名 add column 列名 varchar 30 刪除列 alter table 表名 drop ...