sql两个列值以下划线拼接得到一个新的列_面试必备sql知识点——MySQL基础
在刷了上百道sql題后,發現所有的題目都是基于某一個或幾個知識點來做考察的,所以理清基礎的知識細節,才能在題目考察到任意知識點時,找到解決線索。
溫故而知新,學習在于總結,于是我再次對已經學習過的mysql的知識進行梳理,得到基礎和進階兩篇知識框架的總結。如果對你有幫助,建議點贊收藏!
本文是MySQL基礎知識的總結,主要涵蓋增、刪、改、查四個方面
內容大綱:
一、增
- 創建數據庫:create database 數據庫名稱
- 創建表:create table 表名(列 格式 null設置,·····),主鍵設置:primary key (主鍵列)
- 根據查詢創建新表:create table 表名 as select ·············
- 創建新列:alter table 表名 add column 列名 格式
二、刪(慎用)
- 刪除數據庫:drop database 數據庫名稱
- 刪除數據表:drop table 表名
- 只刪數據不刪表:delete from 表名(指定條件:+ where)
三、改
- 修改表名:alter table 舊表名 rename to 新表名
- 向表中插入數據:insert into 表名(列名···)values(‘數據’,····)
- 從其他表復制數據插入:insert 新表 (列名···)select 列名··from 舊表
- 修改列值:update 表名 set 列名 = 表達式
指定條件:+ where
多列更新:set 列名1 = 表達式,列名2= 表達式
update product set regist_date ='2009-10-10' where product_id ='008';四、查(重點)
基本select
- 某列:select 列名 from 表名
- 全表:select * from 表名
- 去重:select distinct 列名 from 表名
聚合
- count/sum/avg/max/min
分組
- group by
篩選
- where:指定行對應條件,不可用聚合函數
- having:指定組對應條件,可用聚合函數
排序
- order by
升序:Asc 降序:Desc
多個排序:order by 列名1,列名2(從左到右優先原則)
SELECT 學號,成績 from score2 ORDER BY 成績 Desc;- limit:從查詢結果中取出指定行
進階:
limit N:返回 N 條記錄
offset M:跳過 M 條記錄,M 默認為 0
limit M,N:跳過M條記錄,返回 N 條記錄
SELECT 學號,成績 from score2 ORDER BY 成績 Desc LIMIT 1,2;表連接(重點)
兩張學生表:
左表右表join/ inner join:內連接,左表右表都匹配的記錄
SELECT a.id,年齡,性別 from student1 a join student2 b on a.id=b.id;left join :左連接,以左表位置準,向右表匹配對應字段,有多條則逐次列出,無匹配,則顯示NULL。
SELECT a.id,年齡,性別 from student1 a LEFT JOIN student2 b on a.id=b.id;right join :右連接,以右表位置準,向左表匹配對應字段,有多條則逐次列出,無匹配,則顯示NULL。
SELECT b.id,年齡,性別 from student1 a RIGHT JOIN student2 b on a.id=b.id;outer / full join:全連接,包含兩個表全部連接結果,左、右表缺失的數據會顯示為NULL。
cross join:交叉連接 / 笛卡爾積,生成3X3結果的表格
SELECT a.id,年齡,性別 from student1 a CROSS JOIN student2 b;表合并
合并兩表相同字段:
- union:去重合并
- union all:非去重合并
視圖
視圖是不保存實際數據的臨時表,相當于直接調用由select語句查詢結果,在實際工作中,視圖可以減少寫sql語句時的嵌套。
create view 視圖名稱 as + select··········
示例:如下圖,創建一個名為“用戶行為”的臨時表
create view 用戶行為 as select user_id,count(behavior)as 用戶行為總數, sum(if(behavior = 'pv',1,0))as 點擊量, sum(if(behavior = 'fav',1,0))as 收藏數, sum(if(behavior = 'cart',1,0))as 加購數, sum(if(behavior = 'buy',1,0))as 購買量 from userbehavior group by user_id;后續可以直接寫sql語句調用該表
select sum(點擊量) as "總點擊量", sum(收藏數) as "總收藏數", sum(加購數) as "總加購數", sum(購買量) as "總購買量" from 用戶行為;復雜查詢
- 子查詢:也就是常說的嵌套,即將定義視圖的select語句直接用于from子句中。子查詢層數無上限。
- 標量子查詢:返回1行1列結果的子查詢(可在select和where中使用)
- 關聯子查詢:where中使用子查詢
總結
以上是生活随笔為你收集整理的sql两个列值以下划线拼接得到一个新的列_面试必备sql知识点——MySQL基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: bat脚本中获取上级目录_使用Pytho
- 下一篇: 12如何隐藏dock栏_iPhone边框