Java-MySql-函式、多表查詢
子查詢
當多個表中資料存在關聯,且需要先由另一個表資料查詢後使用進行當前表資料的查詢
由多條sql語句組成用於返回指定資料
子查詢中的sql語句一般返回一列資料並且有時可能返回唯一資料
函式
聚合函式
聚合函式:對一組值進行計算,並返回計算後的值 ,具有統計資料的作用,將多行資料進行聚合操作返回一個指定值
注意:在使用聚合函式時一般不會再對其他資料進行單獨查詢,因為聚合函式執行後僅返回一條資料,所以在進行查詢時,如果其他資料存在多條也只返回第一條語句
sum()
求和,將指定列中所有資料求和後返回
avg()
求平均值,獲取指定列平均值
max()
min()
count()
返回滿足條件的行數
字串函式
CHARSET(str) | 返回字串字符集 |
---|---|
CONCAT (string2 [,… ]) | 連線字串 |
INSTR (string ,substring ) | 返回substring在string中出現的位置,沒有返回0 |
UCASE (string2 ) | 轉換成大寫 |
LCASE (string2 ) | 轉換成小寫 |
LEFT (string2 ,length ) | 從tring2中的左邊起取length個字元 |
LENGTH (string ) | string長度 |
REPLACE (str ,search_str ,replace_str ) | 在str中用replace_str替換search_str |
STRCMP (string1 ,string2 ) | 逐字元比較兩字串大小, |
SUBSTRING (str , position [,length ]) | 從str的position開始,取length個字元 |
LTRIM (string2 ) RTRIM (string2 ) trim | 去除前端空格或後端空格 |
charset()
返回指定欄位字串編碼
concat()
連線字串。將兩欄位資料或字串進行連線
instr()
查詢指定字串出現的位置,不存在則返回0
ucase()
將指定欄位資料已大寫形式返回
lcase()
將指定欄位資料已小寫形式返回
left()
返回指定欄位從左開始指定長度的資料
length()
返回指定欄位字元個數
replace()
使用指定字串替換欄位中某一字串
substring()
返回指定欄位自定起始位置開始長度的字串
trim()
空格替換
日期函式
用於進行日期轉換以及日期格式定義的函式
ADDTIME (date2 ,time_interval ) | 將time_interval加到date2 |
---|---|
CURRENT_DATE ( ) | 當前日期 |
CURRENT_TIME ( ) | 當前時間 |
CURRENT_TIMESTAMP ( ) | **當前時間戳 ** |
DATE (datetime ) | 返回datetime的日期部分 |
DATE_ADD (date2 , INTERVAL d_value d_type ) | 在date2中加上日期或時間 |
DATE_SUB (date2 , INTERVAL d_value d_type ) | 在date2上減去一個時間 |
DATEDIFF (date1 ,date2 ) | 兩個日期差 |
NOW ( ) | 當前時間 |
YEAR|Month|DATE (datetime ) | 年月日 |
current_date()
返回當前時間(date型別)
current_time()
返回當前時間(time型別)
current_timstamp()
返回當前時間(timestamp型別)
now()
返回當前時間(datatime型別)
date()
返回指定日期欄位date部分資料
time()
返回指定日期欄位time部分資料
date_add()
為包含date資料的日期型別進行新增
需要使用interval 進行數值的轉換
date_sub()
為包含date資料的日期型別進行減少
datediff()
返回兩個日期直接相差天數(第一個日期減第二個日期)
year()
返回指定日期型別的年
month()
返回指定日期型別的月
day()
返回指定日期型別的日
數學函式
abs()
返回數值型別絕對值
ceiling()
向上取整
floor()
向下取整
least()
獲取一行資料中最小值
rand()
隨機數
在資料庫表中有以下字元資料,如:
13-1、13-2、13-3、13-10、13-100、13-108、13-18、13-11、13-15、14-1、14-2
現在希望通過SQL語句進行排序,並且首先要按照前半部分的數字進行排序,然後再按照後半部分的數字進行排序,輸出要排成這樣:
13-1、13-2、13-3、13-10、13-11、13-15、13-18、13-100、13-108、14-1、14-2
#-前面升序 -後面降序
select * from sort order by str
#查詢每個-的位置
select instr(str,'-') from sort
#獲取-左邊的值
select CONVERT(left(str,instr(str,'-')-1),SIGNED) from sort
#獲取-右邊的值
select CONVERT(right(str,length(str)-instr(str,'-')),SIGNED) from sort
select * from sort order by CONVERT(left(str,instr(str,'-')-1),SIGNED) asc , CONVERT(right(str,length(str)-instr(str,'-')),SIGNED) desc
分組
關鍵字group by
使用指定欄位進行分組,欄位資料的個數就是分組的個數,這樣在使用聚合函式時只會對相應分組進行聚合操作
聚合函式一般與分組一同使用,但是在進行條件判斷時,如果對於聚合函式進行判斷且存在分組那麼不能使用where進行條件判斷必須使用having(只針對於聚合函式的值的判斷)
where進行篩選與having的區別
WHERE子句:
用來篩選 FROM 子句中指定的操作所產生的行
GROUP BY子句:
用來分組 WHERE 子句的輸出
HAVING子句:
用來從分組的結果中篩選行
多表操作
在進行資料查詢時想查詢並返回多個表的資料的時候使用多表查詢
連線查詢
全連線
在進行多表連線查詢時返回兩表的笛卡爾積,在進行表連線時會將每張表的每一行與另一張表的每一行資料進行連線
注意:使用全連線會造成大量的冗餘資料,所以一般在where語句中進行篩選
不建議使用全連線進行連線查詢,因為全連線進行連線效率不高,因為是首先現將所有資料返回笛卡爾積之後使用where進行篩選
執行步驟為先將所有資料進行連線之後再進行條件篩選
內連線
INNER JOIN
語法:select *from 表1 inner join 表2 on 連線條件
內連線必須書寫on連線條件(如果不寫與全連線結構一致)
與全連線不同的是,內連線是在進行連線時直接將資料進行過濾之後進行返回
外連線
左外連線 (LEFT JOIN)
右外連線 (RIGHT JOIN)
語法:select * from 表1 left[right] join 表2 on連線條件
以左表或右表為準,保留左表或右表全部資料的基礎上進行連線
sql查詢語法總結
select 查詢展示的欄位與函式
from 資料來源(可以是由另一個查詢語句返回的結果作為表)
inner /left/right join 連線查詢
on 連線條件
where 篩選條件
group by 分組欄位
having 分組條件篩選
order by 排序欄位 asc /desc
limit 起始行 ,擷取行
在進行sql查詢語句書寫時
1、明確資料來源連線
查詢展示欄位所在的表
2、篩選條件where
根據需求決定展示資料的行有哪些
3、分組條件
根據需求決定使用分組的欄位(注意分組欄位是以指定欄位的值進行分組)
4、排序與擷取
相關文章
- 多表查詢
- 【MySQL】多表查詢MySql
- Django 多表查詢Django
- MySQL 多表查詢MySql
- 04多表查詢
- mysql多表查詢MySql
- SQL查詢的:子查詢和多表查詢SQL
- Oracle-多表查詢Oracle
- ORM多表查詢下ORM
- Solr複雜查詢一:函式查詢Solr函式
- MySQL多表關聯查詢MySql
- MySQL 多表查詢分頁MySql
- JPA多表關聯查詢
- Hibernate hql 多表查詢
- thinkPHP多表聯合查詢PHP
- jpa動態查詢與多表聯合查詢
- JPA 之 多表聯合查詢
- mySQL多表查詢與事務MySql
- JPA的多表複雜查詢
- mysql多表查詢如何實現MySql
- 多表查詢建表語句
- mysql資料庫多表查詢MySql資料庫
- 【janes】多表查詢 外連線
- 多表查詢經典練習
- MySQL資料庫基礎——多表查詢:子查詢MySql資料庫
- 34. 過濾條件、多表查詢、子查詢
- MYSQL學習筆記26: 多表查詢|子查詢MySql筆記
- PostgreSQL 查詢替換函式SQL函式
- Solr的函式查詢(FunctionQuery)Solr函式Function
- 子串查詢函式strstr函式
- MYSQL學習筆記25: 多表查詢(子查詢)[標量子查詢,列子查詢]MySql筆記
- 如何做多表關聯查詢
- mysql中的多表關聯查詢MySql
- thinkphp中的多表關聯查詢PHP
- Sql Server系列:多表連線查詢SQLServer
- SQL複雜查詢多表連線SQL
- MSSQL基礎教程:多表格查詢SQL
- [Mysql 查詢語句]——集合函式MySql函式