国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升

這篇具有很好參考價值的文章主要介紹了MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

作者前言

????????????????????????????????

? ? ? ? ?????????個人主頁::小小頁面

?????????????????gitee頁面:秦大大

? ? ? ? ? ? ? ? 一個愛分享的小博主?歡迎小可愛們前來借鑒

______________________________________________________? ?

目錄

SQL提高

?日期函數(shù)

????????length

????????round

????????reverse

????????substring

????????ifnull

????????case when

????????cast

????????grouping sets

排序函數(shù)

?開窗函數(shù)
?

?____________________________________________________________________

??

內(nèi)置函數(shù)

日期函數(shù)

now()

select now();

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

?獲取當前時間(獲取到秒)

year()

select year(now());

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

?獲取當前的年,注意一下year()里的()要填now()

month()

select month(now());

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

獲取當前月份?

day()

select day(now());

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

?獲取當前的日期

length

select first_name, length(first_name) from new_employees limit 0,10;

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

?查看字符長度

round

select round(1.22, 3)

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

注意一下,這里的保留小數(shù)不會自動補全,會四舍五入

reverse()?

字符串翻轉(zhuǎn)

select first_name, reverse(first_name) from new_employees limit 0,10;

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

substring()

截取字符串

-- 截取字符串
-- start開始的位置,如果沒有則默認從第一位開始,length截取的長度
SUBSTRING(column, start, length)

column:字段

start:從哪一位開始

length:截取的長度

select first_name, substring(first_name,1,5) from new_employees limit 0,10;
MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

ifnull()

判空

會把null(空)變成別名

select ifnull(`daa`, '111') from aaa;;

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

??isnull

?nvl

coalesce

這三個都是一樣的效果

case when(當...)

這個函數(shù)一點特別,就拿python的if ...elif....else(或者C語言的if.....else if.....else)來說,我們只需寫好條件和代碼塊就行了,但是這個函數(shù)的寫法是這樣的

select 
case when 條件
    then '運行內(nèi)容1'
when 條件
    then '運行內(nèi)容2'
else "運行內(nèi)容"

end  as  別名

其實sql語句沒有格式,這樣寫是為了讓大家好看,when 相當于else if()??

cast

以前的數(shù)據(jù)庫的不同類型的數(shù)據(jù)不能相加和相減的,而現(xiàn)在的數(shù)據(jù)庫有些可以,mysql就是之一

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

?現(xiàn)在已經(jīng)不支持了,這里演示不了

-- cast(column as data_type)
-- 更改字段類型
select cast(column as int(10)) from table
select cast(column as char(10)) from table

grouping sets

前面我們學過一個分組,group by,這個方法把所有的符合條件的分成一組,只顯示出集體,不顯示出個人,簡單理解為分組加聚合

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

如圖,而grouping sets

這個在mysql中也無法使用,但是我們可以做出這樣的效果

select
depart
,gender
,count(id) cnt
from table
grouping sets(
(depart) -- 部門維度
,(gender) -- 性別維度
,(depart, gender) -- 部門及性別的維度
,() -- 不分組,全部人數(shù)
???????)

但是我們可以分析一下 利用這個方法相對于進行了三次分組然后再利用union distinct連接起來

第一次是分組depart

第二次是分組gender

第三次分組depart, gender

代碼:

select
coalesce(gender, '人和1')
, null `age`
, count(0)
from new_employees
group by `gender`
with rollup
union distinct
select
null `gender`
, coalesce(age, '人和2')
, count(0)
from new_employees
group by `age`
with rollup
union distinct
select
`gender`
, `age`
, count(0)
from new_employees
group by`gender`, `age`
with rollup;

結(jié)果:

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

?排序函數(shù)

在前面中我們學過一個order by

??????????????MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

?而這個排序函數(shù)起到的就是給個編號這樣可以方便我們查找

分三類

row_number() over()? as 別名? ?====》從小到大,依次往下

rank() over() as 別名? ?======》從小到大 相同數(shù)據(jù)位居一樣,但是不同數(shù)據(jù)名次依舊

dense_rank()? over() as 別名? =====》從小到大,相同數(shù)據(jù)位居一樣? 名次從1開始無斷層

-- row_number() 根據(jù)選擇字段排序,若存在相同數(shù)據(jù),則隨機排順序
-- 根據(jù)年齡從大到小排序
select
row_number() over(order by age desc) rk
from table
-- rank() 根據(jù)選擇字段排序,若存在相同數(shù)據(jù),則并列名次,但是名次個數(shù)任然占用
-- 根據(jù)年齡從小到大排序
select
rank() over(order by age) rk
from table
-- dense_rank() 根據(jù)選擇字段排序,若存在相同數(shù)據(jù),則并列名次,但是名次個數(shù)不占用
-- 根據(jù)年齡從小到大排序
select
dense_rank() over(order by age) rk
from table

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql? ? ? ? ? ? ? ? ? ? ? ? ? ??MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql? ?

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

?開窗函數(shù)

-- function([column]) OVER(partition by column [order by column])
-- function通常為聚合函數(shù),也可以是排序的函數(shù)
-- 根據(jù)性別和年齡分組,對身高進行排序
select
row_number() over(partition by gender, age order by high) rk
from table
-- 根據(jù)性別和年齡分組,求出人數(shù)
select
count(id) over(partition by gender, age) cnt
from table
where id is not null

記住一定要有函數(shù)function,可以是avg() sum()等

partition by 是我們可以理解為是group by 的前半身,只分組不聚合,因為group by有有聚合的效果,而開窗函數(shù)缺少聚合效果,簡單的說分組男女性別,就是會顯示出哪個人是男性及相關(guān)信息

row_number() over () as 別名

select
emp_no
,age
,dept_no
,gender
,row_number() over(partition by dept_no,gender order by age desc) as kkk
from (
select
a.emp_no
,a.age
,a.gender
,b.dept_no
from new_employees as a join dept_emp as b on a.emp_no =b.emp_no
) as c
limit 30;

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

?count(0)over()as 別名

select
emp_no
,age
,dept_no
,gender
,count(1) over(partition by dept_no,gender) as kkk
from (
select
a.emp_no
,a.age
,a.gender
,b.dept_no
from new_employees as a join dept_emp as b on a.emp_no =b.emp_no limit 30
) as c;

MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升,數(shù)據(jù)庫,mysql

?可以看出kkk有重復的數(shù)據(jù),就拿第一條數(shù)據(jù)說 這條數(shù)據(jù)屬于這19個數(shù)據(jù),如果把count函數(shù)替換成avg(age)就可以明確哪個人超出平均值,哪些人沒有超出

總結(jié):

關(guān)于sql語句先介紹到這里,有不懂的小可愛可以私聊文章來源地址http://www.zghlxwxcb.cn/news/detail-603300.html

到了這里,關(guān)于MySQL數(shù)據(jù)庫第十一課---------SQl語句的拔高-------水平提升的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關(guān)文章

  • 【數(shù)據(jù)庫】MySQL 高級(進階) SQL 語句

    【數(shù)據(jù)庫】MySQL 高級(進階) SQL 語句

    location表格創(chuàng)建 store_info表格創(chuàng)建 顯示表格中一個或數(shù)個字段的所有數(shù)據(jù)記錄 不顯示重復的數(shù)據(jù)記錄 按照條件進行查詢 在已知的字段數(shù)據(jù)取值范圍內(nèi)取值 另外還有not in命令,用法一致,表示顯示不在指定范圍內(nèi)的字段的值。 在兩個字段數(shù)據(jù)值之間取值,包含兩邊字段的數(shù)據(jù)

    2024年02月09日
    瀏覽(28)
  • 【MySQL】數(shù)據(jù)庫SQL語句之DML

    【MySQL】數(shù)據(jù)庫SQL語句之DML

    目錄 前言: 一.DML添加數(shù)據(jù) 1.1給指定字段添加數(shù)據(jù) 1.2給全部字段添加數(shù)據(jù) 1.3批量添加數(shù)據(jù) 二.DML修改數(shù)據(jù) 三.DML刪除數(shù)據(jù) 四.結(jié)尾 ? 時隔一周,啊蘇今天來更新啦,簡單說說這周在做些什么吧,上課、看書、放松等,哈哈哈,所以博客就這樣被擱了。 ? 今天感覺不錯,給大

    2024年02月08日
    瀏覽(94)
  • 【MySQL數(shù)據(jù)庫 | 第十九篇】SQL性能分析工具

    【MySQL數(shù)據(jù)庫 | 第十九篇】SQL性能分析工具

    目錄 ? 前言: SQL執(zhí)行頻率: 慢查詢?nèi)罩荆?profile: profile各個指令: 總結(jié): ????????本篇我們將為大家講解SQL性能的分析工具,而只有熟練的掌握了性能分析的工具,才可以更好的對SQL語句進行優(yōu)化。雖然我們在自己練習的時候?qū)@種優(yōu)化感知并不明顯,但是如果我們要

    2024年02月09日
    瀏覽(95)
  • MySQL數(shù)據(jù)庫第十四課--------sql優(yōu)化---------層層遞進

    MySQL數(shù)據(jù)庫第十四課--------sql優(yōu)化---------層層遞進

    ?? ?????????????????????? ??? 作者介紹: ???? ?? ?????????????? ?? ??作者id:老秦包你會, ?? 簡單介紹:?????????????????????????????? 喜歡學習C語言和python等編程語言,是一位愛分享的博主,有興趣的小可愛可以來互討 ????

    2024年02月12日
    瀏覽(99)
  • MySQL相關(guān)的SQL語句、數(shù)據(jù)庫、數(shù)據(jù)表、字段、類型

    1、 SQL 語句不區(qū)分大小寫。 SQL語句 用途 描述 mysql -u root -p 連接 MySQL 在命令行窗口中輸入 mysql -u root -p 命令,回車,然后輸入 MySQL 密碼(不要忘記了密碼,找回麻煩),再回車就連接上 MySQL 了。最初都是使用 root 用戶登錄,工作中不能一直使用 root 用戶登錄。因為 root 權(quán)限太

    2024年02月13日
    瀏覽(115)
  • MySQL數(shù)據(jù)庫中的索引(含SQL語句)

    MySQL數(shù)據(jù)庫中的索引(含SQL語句)

    假設有一張表,表中有100萬條數(shù)據(jù),這100萬條數(shù)據(jù)在硬盤上是存儲在數(shù)據(jù)頁上的,一頁數(shù)據(jù)大小為16k。存儲100萬條數(shù)據(jù)那么就需要數(shù)據(jù)頁,假設其中有一條數(shù)據(jù)是“id為7900”的,那么如果要查詢這條數(shù)據(jù),其中SQL是SELECT * FROM 表名 WHERE id = 7900。在執(zhí)行這條SQL語句的時候,MyS

    2024年02月02日
    瀏覽(42)
  • mysql,用sql語句,建立學生-課程數(shù)據(jù)庫基本表

    mysql,用sql語句,建立學生-課程數(shù)據(jù)庫基本表

    學生表 學號 姓名 年齡 性別 院系 Student Sno Sname Sage Ssex Sdept 課程表 課程號 課程名 先行課 學分 Course Cno Cname Cpno Ccredit 選課表 學號 課程號 成績 SC Sno Cno Grade 注意創(chuàng)建表的時候要注意它的字段名,類型,長度,約束條件,取值范圍要合適,大小寫符號要正確,中文逗號,分號

    2024年02月08日
    瀏覽(27)
  • MySQL數(shù)據(jù)庫概念、管理以及SQL語句的基本命令操作

    MySQL數(shù)據(jù)庫概念、管理以及SQL語句的基本命令操作

    數(shù)據(jù)(data) 描述事物的符號記錄 包括數(shù)字,文字、圖形、圖像、聲音、檔案記錄等 以“記錄”形式按統(tǒng)一格式進行存儲(記錄可以看成一條記錄) 表 將不同的記錄組織在一起 用來存儲具體數(shù)據(jù) 記錄:行 字段(屬性):列 以行+列的形式就組成了表(數(shù)據(jù)存儲在表中) 數(shù)

    2024年02月08日
    瀏覽(33)
  • MySQL 數(shù)據(jù)庫實用指南:測試數(shù)據(jù)準備、SQL語句規(guī)范與基本操作

    MySQL 數(shù)據(jù)庫實用指南:測試數(shù)據(jù)準備、SQL語句規(guī)范與基本操作

    歡迎來到小K的MySQL專欄,本節(jié)將為大家準備MySQL測試數(shù)據(jù)、以及帶來SQL語句規(guī)范、數(shù)據(jù)庫的基本操作的詳細講解 要學習SQL查詢語句,首先必須解決一個問題,數(shù)據(jù)問題。為了方便大家學習閱讀我的文章,在這里提供了一個test.sql文件 ? 登錄MySQL,輸入 source xxx/test.sql 導入sql文

    2024年02月08日
    瀏覽(32)
  • MySQL數(shù)據(jù)庫增刪改查及聚合查詢SQL語句學習匯總

    MySQL數(shù)據(jù)庫增刪改查及聚合查詢SQL語句學習匯總

    目錄 數(shù)據(jù)庫增刪改查SQL語句 MySQL數(shù)據(jù)庫指令 1.查詢數(shù)據(jù)庫 2.創(chuàng)建數(shù)據(jù)庫 3.刪除數(shù)據(jù)庫 4.選擇數(shù)據(jù)庫 創(chuàng)建表table ? 查看所有表 創(chuàng)建表 查看指定表的結(jié)構(gòu) 刪除表 數(shù)據(jù)庫命令進行注釋 增刪改查(CRUD)詳細說明 增加 SQL庫提供了關(guān)于時間的函數(shù):now()? 查詢 查詢表作列與列之間進

    2024年02月09日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包