MySQL查詢語法 基礎篇

2021-10-02 02:43:56 字數 4355 閱讀 6763

show databases;

-- 使用目標資料庫

use imooc_demo;

-- 查詢全部字段

select * from t_emp;

-- 查詢這三列從t_emp表

select empno, ename, sal from t_emp;

-- 改名查詢

select ename,empno,sal*12 as income_year from t_emp;

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-b6effcuf-1578655229470)(./_image/2020-01-10-10-53-46.png)]

-- 分頁查詢   下邊含義是0-5條

select empno ,ename,sal from t_emp limit 0,5;

-- 下邊等價於0-10的意思

select empno ,ename,sal from t_emp limit 10;

from -> select -> limit

按照某種順序 必須使用order by

執行順序:select…from… order by 列名 [asc | desc]

-- 排序--公升序

select empno ,ename,sal,deptno from t_emp order by sal asc;

-- 排序--降序

select empno ,ename,sal,deptno from t_emp order by sal desc;

-- 多個排序字段,工資相同按入職排序

select empno ,ename,sal,hiredate,deptno from t_emp order by sal desc ,hiredate asc;

-- 檢視前五的

select empno,ename,sal from t_emp order by sal desc limit 0,5;

執行順序:from -> select -> order by -> limit

比如從員工表中查詢多少種職業,可能出現重覆記錄

加上distinct字段

-- 查詢job 不去重

select job from t_emp;

-- 查詢job 去重

select distinct job from t_emp ;

-- 不能重複用--兩個字段,功能消失

select distinct job, ename from t_emp ;

-- 不能重複用--兩個欄位都加,報錯

select distinct job,distinct ename from t_emp ;

-- 不能重複用--後個字段加,報錯

select job,distinct ename from t_emp ;

select…from …where 條件 and or 條件…

-- 條件查詢 10部門 底薪大於2000的

select empno,ename,sal from t_emp where deptno=10 and sal >=2000;

-- 條件查詢:10 20 兩個部門,薪資大於2000的

select empno,ename,sal , deptno from t_emp where (deptno=10 or deptno=20) and sal >=2000;

-- 部門10 ,年薪=底薪+提成,12個月大於15000的,

select empno , ename , sal, hiredate

from t_emp

where deptno=10 and (sal+ifnull(comm,0))*12>=15000;

and datediff(now(),hiredate)/365>=20;

表示式

意義例子

is null

為空comm is null

is not null

不為空comm is not null

between and

範圍sal between 2000 and 3000

like

模糊查詢

ename like 『a%』 %代表0-多個字元

regexp

正規表示式

ename regexp 『[a-za-z]』

下邊是mysql的寫法

-- 測試 is not null

select *

from t_emp

where comm is not null;

-- 測試 between and

select *

from t_emp

where comm is null

and sal between 2000 and 3000;

-- 測試 between and + like %佔位符

select *

from t_emp

where comm is null

and sal between 2000 and 3000

and ename like "%a%"; -- 前後都是可能有東西

-- 測試 between and + like _佔位符

select *

from t_emp

where comm is null

and sal between 2000 and 3000

and ename like "_lake"; -- 這是記住了前邊有1位,後邊是lake的

-- 測試 between and + 正規表示式

select *

from t_emp

where comm is not null -- 它有佣金

and sal between 1000 and 3000

and ename regexp "^[\\u4e00-\\u9fa5]$";

表示式

意義例子

and與 關係

age >18 and ***=『男』

or或 關係

empno = 8000 or deptno =20

not非 關係

not deptno =20

xor異或 關係

age > 18 xor ***=「男」

練習**如下

-- 10和20部門之外

select ename,deptno

from t_emp

where not deptno in(10,20) ;

-- 10和20部門之外 異或關係 不是10,20部門的 異或 工資大於2000的

select ename,deptno,sal

from t_emp

where not deptno in(10,20) xor sal>=2000

order by deptno,sal;

表示式

意義例子

&位與關係

3&7丨

位或關係

3丨7~

位取反~10

^位異或

3^7<<

左移10<<1

>>

右移10>>1

--  按位運算子測試

select 3&7; -- 答案3

select 3 | 7; -- 答案7

select ~ 7; -- 答案18446744073709551608

select 3 ^ 7; -- 答案4

select 10 << 1; -- 答案20

select 10 >> 1; -- 答案5

-- where注意事項:寫左邊

select empno,ename from t_emp

where ename = "ford" and sal>=2000;

select empno,ename from t_emp

where deptno=10 and sal>=2000;

from -> where -> select -> order by -> limit

Mysql語句常見查詢(基礎篇)

一些基礎的sql語句,最近在看sql語句,和sql的優化,就在筆記中做了些總結,不全面,以後會進行一些補充。sql基礎內容 1,select from user 查詢user表所有 2,select distinct user age user name from user 查詢所有不重複的user...

Python基礎篇 基礎語法

大家都知道每一門程式語言的語法都不是一樣的,新學一門程式語言的時候要掌握其語法才能讓開發行雲流水。基礎學習用python自帶的編輯器 idle 安裝完可以直接選單欄搜尋idle 1 輸出print hello wrold 2 注釋 單行注釋 多行注釋 3 資料型別 字串a string b stri...

MySQL基礎語法(四)(模糊查詢 連線查詢)

匹配任意多個字元,匹配任意單個字元 模糊查詢使用like關鍵字進行匹配 模糊查詢mysql做了優化可以忽略大小寫,但是一般情如果多資料庫開發環境下不推薦直接使用單一大小寫 都會做忽略大小寫處理 查詢學生姓張的學生資訊 select id,name,agefrom student where name...