SQL實(shí)用語句總結(jié)

解決主鍵沖突

  1. insert into 表名[(字段列表:包含主鍵)] values(值列表) on duplicate key update 字段 = 新值;
insert into t_user values(1,'lisi') on duplicate key update u_name = 'lisi';
  1. replace into 表名 [(字段列表:包含主鍵)] values(值列表);
 insert into values (1,'zhangsan');

也可以直接替換,replace 在沒有沖突的時候相當(dāng)于insert,沖突的時候會替換。

復(fù)制表

  1. 復(fù)制表結(jié)構(gòu)
    create table 表名 like 數(shù)據(jù)庫.表名;
create table  t_user_copy like t_user;
  1. 插入數(shù)據(jù)
    insert into 表名[(字段列表)] select 字段列表 from 數(shù)據(jù)表名;
     insert into t_user_copy select * from t_user;
    

###查詢語句

select` [select選項(xiàng)] `字段列表``[AS 字段別名] | * `from `數(shù)據(jù)源 `[where條件子句]` [group by子句]` [having子句]` [order by子句]` [limit 子句];

1.  可以在分組查詢的時候,將分組后的某個字段都連接起來
```sql
select c_id,sex,s_name,GROUP_CONCAT(s_name,'-') from t_student group by sex;

在《SQL基礎(chǔ)教程 》日:MICK書上在介紹group by語句的時候曾經(jīng)提到有三個誤區(qū)。
group by 查詢時的字段不能包含分組字段以外的字段,但是用聚合函數(shù),因?yàn)?code>分組查詢時,其它字段的元素個數(shù)和分組的字段很可能不是一對一,而是多對一的關(guān)系,比如將學(xué)生表的學(xué)生按照班級分組,每組對應(yīng)的學(xué)生顯然不是一個,這樣如果在分組查詢時如果出現(xiàn)了stu_name無法確定顯示哪一個學(xué)生的姓名,但是自己用mysql測試發(fā)現(xiàn)顯示的時分組,在組內(nèi)排序的第一個,也許是mysql或者后來sql語句的優(yōu)化吧。

  1. 回溯統(tǒng)計with rollup
    如圖在分組語句后加上WITH ROLLUP,任何一個分組后都會有一個小組, 最后都需要向上級分組進(jìn)行匯報統(tǒng)計,** 不用在每個分組查詢結(jié)束后為了查詢總是再次進(jìn)行查數(shù)據(jù)庫獲得總數(shù)。** 根據(jù)當(dāng)前分組的字段. 這就是回溯統(tǒng)計: 回溯統(tǒng)計的時候會將分組字段置空。


    單個字段回溯統(tǒng)計.png
SELECT c_id,sex,COUNT(*),GROUP_CONCAT(s_name) 
FROM t_student GROUP BY c_id,sex WITH ROLLUP;

多個字段分組分別統(tǒng)計組內(nèi)總數(shù)


多路回溯.png
  1. union聯(lián)合查詢
    select 語句1 union [all |distinct ] select語句2...
    聯(lián)合查詢只要求字段數(shù)量一樣, 跟數(shù)據(jù)類型無關(guān)

作用:

  • 查詢同一張表,但是需求不同: 如查詢學(xué)生信息, 男生身高升序, 女生身高降序.
  • 多表查詢: 多張表的結(jié)構(gòu)是完全一樣的,保存的數(shù)據(jù)(結(jié)構(gòu))也是一樣的.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容