日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

MySQL学习笔记(一)基本查询操作

發(fā)布時(shí)間:2023/12/10 数据库 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL学习笔记(一)基本查询操作 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

基礎(chǔ)查詢

條件查詢

排序查詢


sql文件地址

鏈接: https://pan.baidu.com/s/1lKXMiYfnTk-0fFZTyhFX0g ?密碼: pvaw

基礎(chǔ)查詢

  • 語(yǔ)法:select 查詢列表 from 表名;
  • 類似于:System.out.println(打印東西);
  • 特點(diǎn):
  • 查詢列表可以是:表中的字段、常量值、表達(dá)式、函數(shù)
  • 查詢的結(jié)果是一個(gè)虛擬的表格
  • USE myemployees;#1.查詢表中的單個(gè)字段SELECT last_name FROM employees;#2.查詢表中的多個(gè)字段 SELECT last_name,salary,email FROM employees;#3.查詢表中的所有字段#方式一: SELECT `employee_id`,`first_name`,`last_name`,`phone_number`,`last_name`,`job_id`,`phone_number`,`job_id`,`salary`,`commission_pct`,`manager_id`,`department_id`,`hiredate` FROMemployees ; #方式二: SELECT * FROM employees;#4.查詢常量值SELECT 100;SELECT 'john';#5.查詢表達(dá)式SELECT 100%98;#6.查詢函數(shù)SELECT VERSION();#7.起別名/*①便于理解②如果要查詢的字段有重名的情況,使用別名可以區(qū)分開來(lái)*/#方式一:使用as SELECT 100%98 AS 結(jié)果; SELECT last_name AS 姓,first_name AS 名 FROM employees;#方式二:使用空格 SELECT last_name 姓,first_name 名 FROM employees;#案例:查詢salary,顯示結(jié)果為 out put SELECT salary AS "out put" FROM employees;#8.去重#案例:查詢員工表中涉及到的所有的部門編號(hào) SELECT DISTINCT department_id FROM employees;#9.+號(hào)的作用/*java中的+號(hào): ①運(yùn)算符,兩個(gè)操作數(shù)都為數(shù)值型 ②連接符,只要有一個(gè)操作數(shù)為字符串mysql中的+號(hào): 僅僅只有一個(gè)功能:運(yùn)算符select 100+90; 兩個(gè)操作數(shù)都為數(shù)值型,則做加法運(yùn)算 select '123'+90;只要其中一方為字符型,試圖將字符型數(shù)值轉(zhuǎn)換成數(shù)值型如果轉(zhuǎn)換成功,則繼續(xù)做加法運(yùn)算 select 'john'+90; 如果轉(zhuǎn)換失敗,則將字符型數(shù)值轉(zhuǎn)換成0select null+10; 只要其中一方為null,則結(jié)果肯定為null*/#案例:查詢員工名和姓連接成一個(gè)字段,并顯示為 姓名# 10SELECT CONCAT('a','b','c') AS 結(jié)果;SELECT CONCAT(last_name,first_name) AS 姓名 FROMemployees;SELECT CONCAT(last_name,first_name) AS 姓名 FROM employees;#11.【補(bǔ)充】ifnull函數(shù) #功能:判斷某字段或表達(dá)式是否為null,如果為null 返回指定的值,否則返回原本的值SELECT IFNULL(commission_pct,0) FROM employees;#12.【補(bǔ)充】isnull函數(shù) #功能:判斷某字段或表達(dá)式是否為null,如果是,則返回1,否則返回0

    案例:

    #1. 下面的語(yǔ)句是否可以執(zhí)行成功 SELECT last_name , job_id , salary AS sal FROM employees; #2.下面的語(yǔ)句是否可以執(zhí)行成功 SELECT * FROM employees; #3.找出下面語(yǔ)句中的錯(cuò)誤 SELECT employee_id , last_name, salary * 12 AS "ANNUAL SALARY" FROM employees;#4.顯示表departments的結(jié)構(gòu),并查詢其中的全部數(shù)據(jù)DESC departments; SELECT * FROM `departments`;#5.顯示出表employees中的全部job_id(不能重復(fù)) SELECT DISTINCT job_id FROM employees;#6.顯示出表employees的全部列,各個(gè)列之間用逗號(hào)連接,列頭顯示成OUT_PUTSELECTCONCAT(`first_name`,',',`last_name`,',',`job_id`,',',IFNULL(commission_pct,0)) AS out_put FROMemployees;

    條 件 查 詢

    語(yǔ)法:
    ?? ?select?
    ?? ??? ?查詢列表
    ?? ?from
    ?? ??? ?表名
    ?? ?where
    ?? ??? ?篩選條件;

    分類:
    ?? ?一、按條件表達(dá)式篩選
    ?? ?
    ?? ?簡(jiǎn)單條件運(yùn)算符:> < = != <> >= <=
    ?? ?
    ?? ?二、按邏輯表達(dá)式篩選
    ?? ?邏輯運(yùn)算符:
    ?? ?作用:用于連接條件表達(dá)式
    ?? ??? ?&& || !
    ?? ??? ?and or not
    ?? ??? ?
    ?? ?&&和and:兩個(gè)條件都為true,結(jié)果為true,反之為false
    ?? ?||或or: 只要有一個(gè)條件為true,結(jié)果為true,反之為false
    ?? ?!或not: 如果連接的條件本身為false,結(jié)果為true,反之為false
    ?? ?
    ?? ?三、模糊查詢
    ?? ??? ?like
    ?? ??? ?between and
    ?? ??? ?in
    ?? ??? ?is null

    #一、按條件表達(dá)式篩選#案例1:查詢工資>12000的員工信息SELECT * FROMemployees WHEREsalary>12000;#案例2:查詢部門編號(hào)不等于90號(hào)的員工名和部門編號(hào) SELECT last_name,department_id FROMemployees WHEREdepartment_id<>90;#二、按邏輯表達(dá)式篩選#案例1:查詢工資z在10000到20000之間的員工名、工資以及獎(jiǎng)金 SELECTlast_name,salary,commission_pct FROMemployees WHEREsalary>=10000 AND salary<=20000; #案例2:查詢部門編號(hào)不是在90到110之間,或者工資高于15000的員工信息 SELECT* FROMemployees WHERENOT(department_id>=90 AND department_id<=110) OR salary>15000;#三、模糊查詢 /* likebetween and in is null|is not null*/ #1.like /* 特點(diǎn): ①一般和通配符搭配使用通配符:% 任意多個(gè)字符,包含0個(gè)字符_ 任意單個(gè)字符 *、#案例1:查詢員工名中包含字符a的員工信息select * fromemployees wherelast_name like '%a%';#abc #案例2:查詢員工名中第三個(gè)字符為e,第五個(gè)字符為a的員工名和工資 selectlast_name,salary FROMemployees WHERElast_name LIKE '__n_l%';#案例3:查詢員工名中第二個(gè)字符為_的員工名SELECTlast_name FROMemployees WHERElast_name LIKE '_$_%' ESCAPE '$'; #2.between and /* ①使用between and 可以提高語(yǔ)句的簡(jiǎn)潔度 ②包含臨界值 ③兩個(gè)臨界值不要調(diào)換順序*/#案例1:查詢員工編號(hào)在100到120之間的員工信息SELECT* FROMemployees WHEREemployee_id >= 120 AND employee_id<=100; #---------------------- SELECT* FROMemployees WHEREemployee_id BETWEEN 120 AND 100;#3.in /* 含義:判斷某字段的值是否屬于in列表中的某一項(xiàng) 特點(diǎn):①使用in提高語(yǔ)句簡(jiǎn)潔度②in列表的值類型必須一致或兼容③in列表中不支持通配符*/ #案例:查詢員工的工種編號(hào)是 IT_PROG、AD_VP、AD_PRES中的一個(gè)員工名和工種編號(hào)SELECTlast_name,job_id FROMemployees WHEREjob_id = 'IT_PROT' OR job_id = 'AD_VP' OR JOB_ID ='AD_PRES';#------------------SELECTlast_name,job_id FROMemployees WHEREjob_id IN( 'IT_PROT' ,'AD_VP','AD_PRES');#4、is null /* =或<>不能用于判斷null值 is null或is not null 可以判斷null值*/#案例1:查詢沒(méi)有獎(jiǎng)金的員工名和獎(jiǎng)金率 SELECTlast_name,commission_pct FROMemployees WHEREcommission_pct IS NULL;#案例1:查詢有獎(jiǎng)金的員工名和獎(jiǎng)金率 SELECTlast_name,commission_pct FROMemployees WHEREcommission_pct IS NOT NULL;#----------以下為× SELECTlast_name,commission_pct FROMemployeesWHERE salary IS 12000;#安全等于 <=>#案例1:查詢沒(méi)有獎(jiǎng)金的員工名和獎(jiǎng)金率 SELECTlast_name,commission_pct FROMemployees WHEREcommission_pct <=>NULL;#案例2:查詢工資為12000的員工信息 SELECTlast_name,salary FROMemployeesWHERE salary <=> 12000;#is null pk <=>IS NULL:僅僅可以判斷NULL值,可讀性較高,建議使用 <=> :既可以判斷NULL值,又可以判斷普通的數(shù)值,可讀性較低

    案例:

    1. 查詢沒(méi)有獎(jiǎng)金,且工資小于18000的員工工資與姓名SELECT last_name, salary FROM employees WHERE salary < 18000 AND commission_pct IS NULL;2. 查詢employees表中,job_id不為"IT"或者工資為12000的員工信息SELECT * FROM employees WHERE job_id <> 'IT' OR salary=12000;3.查看部門departments表結(jié)構(gòu)DESC departments;4. 查看部門departments表中涉及到了哪些位置編號(hào)SELECTDISTINCT location_id FROMdepartments;5.試問(wèn):select * from employees 和 select * from employees where commission_pct like '%%' and last_name like '%%';結(jié)果是否一樣?并說(shuō)明原因不一樣! 如果判斷的字段有null值

    排序查詢

    語(yǔ)法:
    select 查詢列表
    from 表名
    【where ?篩選條件】
    order by 排序的字段或表達(dá)式;


    特點(diǎn):
    1、asc代表的是升序,可以省略
    desc代表的是降序

    2、order by子句可以支持 單個(gè)字段、別名、表達(dá)式、函數(shù)、多個(gè)字段

    3、order by子句在查詢語(yǔ)句的最后面,除了limit子句

    練習(xí)

    #1、按單個(gè)字段排序 SELECT * FROM employees ORDER BY salary DESC;#2、添加篩選條件再排序#案例:查詢部門編號(hào)>=90的員工信息,并按員工編號(hào)降序SELECT * FROM employees WHERE department_id>=90 ORDER BY employee_id DESC;#3、按表達(dá)式排序 #案例:查詢員工信息 按年薪降序SELECT *,salary*12*(1+IFNULL(commission_pct,0)) FROM employees ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;#4、按別名排序 #案例:查詢員工信息 按年薪升序SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪 FROM employees ORDER BY 年薪 ASC;#5、按函數(shù)排序 #案例:查詢員工名,并且按名字的長(zhǎng)度降序SELECT LENGTH(last_name),last_name FROM employees ORDER BY LENGTH(last_name) DESC;#6、按多個(gè)字段排序#案例:查詢員工信息,要求先按工資降序,再按employee_id升序 SELECT * FROM employees ORDER BY salary DESC,employee_id ASC;

    案例:

    1.查詢員工的姓名和部門號(hào)和年薪,按年薪降序 按姓名升序排序SELECTlast_name, department_id, salary*12*(1+IFNULL(commission_pct, 0)) AS 年薪 FROMemployees ORDER BY 年薪 DESC, last_name ASC;2. 選擇工資不在8000到17000的員工姓名和工資,按工資降序排序SELECTlast_name, salary FROMemployees WHERE salary NOT BETWEEN 8000 AND 17000 ORDER BY salary DESC;3.查詢郵箱中包含e的員工信息,并先按郵箱的字節(jié)數(shù)降序排序,再按部門號(hào)升序排序SELECT* FROMemployees WHERE email like '%e%' ORDER BY LENGTH(email) DESC, department_id ASC;

    參考:https://www.bilibili.com/video/BV1xW411u7ax?from=search&seid=11649676530490571861

    總結(jié)

    以上是生活随笔為你收集整理的MySQL学习笔记(一)基本查询操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。