MySql學習筆記

2021-07-23 02:20:48 字數 3588 閱讀 7350

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 ...