(原)SQL掃盲貼
select 這句話,我相信你已經知道了
就是 select 表裡面的列 column1, column2 from 表的名字;
比方表的名字是 employee 僱員,然後列,有 ID, 姓名 name,職位 title,部門dpet,薪水 salary,你只要知道名字和薪水
就是 select name, salary from employee;
簡單吧?
如果要加上條件,就是加一句 where 在最後,比方你要知道部門 id 是 20 的職員的薪水,
就是:
select name, salary from employee where dept=20;
也很簡單,是不是?
order by 你也會用的,我不用說了吧?就是排序?
正排,反排是 order by column_name desc
上面這些,對於一個表的操作,基本上就是這些了,
但是要注意的地方,比方在 where 這句裡面
如果是 文字的 列 要用 單引號或者雙引號
WHERE tblStaff.Department = "Marketing”
or
WHERE tblStaff.Department = 'Marketing’
數字就是不用。
WHERE tblInvoices.InvoiceNumber > 1500
據說日期要用 # 我不記得了,你自己試驗一下
WHERE tblStaff.BirthDate = #09/27/1950#
對了,還有一個地方,要明確一下,就是 where 的時候要用括號
比方,你要找 dept 10 和 20 的月薪大於 2000 的人
要用到 括號
where (dept=20 or dept=10) and salary >2000 這樣來限定你選擇的資料
比方說,同樣的 employee 的表,你要知道每個部門每個月發放的的工資,要這樣寫
select dept, sum(salary) from employee
group by dept;
這樣你使用的單列的 function, 如果需要對上面資料作限定,比方 部門單月工資超過 100,000 的,這個時候用 having
select dept, sum(salary) from employee
group by dept
having sum(salary) > 100000;
如果說多個表,就要說到表之間的關聯,所謂的 primary key and foreigh key 就是外來鍵之間的關係
RDBMS relational database management system 中要把資料放入一個資料庫,要遵循 normalization, 這玩意一級一級說上去,挺麻煩的,主要就是說,在資料庫裡面的資料不要重複存放。
比方上面說的 employee 的表,就存放的一個 部門 id, 因為如果存放了 部門的名字,就會出現很多重複的資料,這個時候,就要另外做一個部門表
dept 包括 dept_id, dept_name, location(地點),在這個表裡面,部門 id 不能重複的,可以做 primary key.
在 employee 的表裡面,每個員工的 id 也是不能重複的,是 primary key.
這個時候,employee 表裡面的存在的 dept_id 的這個列,就要對應 dept 裡面 dept_id 的這個列。他們之間的關係,是 多 對 一
dept_id 在 employee 的表裡面,就是外來鍵,foreign key 對應 dept 表的 PK
這是聯絡這兩個表的線索。
這個關係不一定是物理存在,但是如果要 query 兩個表,這兩個表一定要有某種關係
n 個表之間,如果算起來最少的關係,應該有 n-1 個 條件
比方:
表: A 列 x, y 其中 x, pk y fk to B.y
表 B 列 y, p .... 跟上面相同
表 C 列 p, q ...
如果要把所有的資料選出來,是這樣
select A.x, B.y, C.p, C.q
from A, B, C
where A.y=B.y
and B.p = C.p;
這個關係理順了,表才能聯合正確。條件要剛剛好,如果重複加疊已經建立正確的關係的表,會引發 performance 效能方面的問題
pk primary key 主鍵的意思,簡單點說,就是這個欄位或者這個一組欄位不能重複,如果重複則報錯,儲存不進去。
那個query 的意思是,如果你想從2個表中去資料,那必須2個表其中的欄位能夠關聯起來。比如你的人事表中有工號,你的薪資表中也有工號,那可以通過2個表的工號連線,把2個表的資料顯示在一行。
pk 就是 primary key 是不是叫主鍵,一般來說每個表都有一個主鍵,不能空,不能重複這樣的列。
query 就是 查詢語句。
關於 union 有兩種,union 和 union all
如果兩個表的結構完全相同,你可以:
SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2
如果這兩個表中又重複的資料,union 之後重複的資料只出現一次,
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
這樣的話,重複的資料,不會被踢出去~~~
pk是主鍵,fk是外來鍵
例如2個表
1. item,name,item_type,warehouse....
2. warehouse,name ,quantity
2表 的warehouse關聯, item 為 1這個表的 pk,warehouse 是其外來鍵,warehouse 是表2的主鍵,,
比方你說得你的十二個月的工資表
如果要要查詢資料,十二個月並起來,是沒有問題的
但是如果十二張單表,都是用 employ_id 做的主鍵
如果一個人領了超過兩次的工資,這個 id 就有重複了,就不能符合主鍵的定義了
所以如果合併的話,不能有主鍵
但是你如果建立一個新表,不設立主鍵,只要你自己知道資料沒有錯誤,也是沒關係的:比方
create table ABC as
(select columns from A union all select columns from B ...)
你選的 columns 都要一致。。。
2、如果要從6個表中查詢某人在6個月的工資,怎麼寫?
第二個,
如果這個人的emp_id 是 008
select emp_id, name, salary from table_month_1 where emp_id=008
union all
select emp_id, name, salary from table_month_2 where emp_id=008
union all
select emp_id, name, salary from table_month_3 where emp_id=008
union all
select emp_id, name, salary from table_month_4 where emp_id=008
union all
select emp_id, name, salary from table_month_5 where emp_id=008
union all
select emp_id, name, salary from table_month_6 where emp_id=008;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7942439/viewspace-563135/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL 基礎知識掃盲SQL
- Netty之Java堆外記憶體掃盲貼NettyJava記憶體
- 入行掃盲貼:<遊戲分析與評測>該怎麼做?遊戲
- 掃盲貼:2021 CSS 最冷門特性都是些啥?CSS
- 「掃盲」 ElasticsearchElasticsearch
- Promise掃盲Promise
- HTML掃盲HTML
- RocketMQ掃盲篇MQ
- PostgreSQL掃盲教程SQL
- ECMAScript 6 掃盲
- 【掃盲貼】講透大資料,我只需要一頓飯大資料
- Dozer掃盲級教程
- Spring AOP 掃盲Spring
- JVM快速掃盲篇JVM
- Css知識掃盲CSS
- Java Web 掃盲行動JavaWeb
- Filecoin: 挖礦流程掃盲
- 數字證書掃盲
- 伺服器軟體大掃盲伺服器
- 介面測試全流程掃盲
- Android、Java泛型掃盲AndroidJava泛型
- 雲端計算術語掃盲
- 掃盲:Kotlin 的泛型Kotlin泛型
- Android Annotation掃盲筆記Android筆記
- GPS知識全面掃盲
- MySQL掃盲 -- 授權方式 (轉)MySql
- oracle mutex概念掃盲之一OracleMutex
- 【MySQL】經典資料庫SQL語句編寫練習題——SQL語句掃盲MySql資料庫
- PYTHON-基礎掃盲1Python
- MongoDB4.2 分片掃盲說明MongoDB
- JVM知識點掃盲系列(2)JVM
- 【掃盲】Win10配置mmdetection 2.6Win10
- Semver(語義化版本號)掃盲
- 敏捷開發之Scrum掃盲篇敏捷Scrum
- JDE 的掃盲知識介紹。。。
- sql注入——盲注SQL
- DDR記憶體條掃盲貼 宏旺半導體一文解答記憶體條痛點記憶體
- window.print —— 瀏覽器列印掃盲瀏覽器