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...