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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库知识个人总结

發布時間:2023/12/31 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库知识个人总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

關系數據庫的范式:

第一范式:數據庫表中的所有字段值都是不可分解的原子值。

第二范式:確保數據庫表中的每一列都和主鍵相關,而不能只和主鍵的某一部分相關(主要針對聯合主鍵),也就是說在一個數據庫表中,一個表只能保存一種數據。

第三范式:確保數據表中每一列數據都和主鍵直接相關,而不能間接相關。(一般數據庫滿足)

數據完整性分為4類:實體完整性(設計時指定主鍵,并且主鍵不能為空值),域完整性(列滿足特定的數據類型或者約束,如取值范圍,精度等),參照完整性(兩個表的主鍵和外鍵的數據對應一致),用戶定義完整性。

insert(向數據庫表中插入數據)

用values子句為一行指定數據值:insert into 地址表(編號,描述)values (101,'市區')

用select子句為一行或者多行指定數據值

insert into 地址表(編號,描述) select 地址號,說明 from 客戶表

update(更新數據)

將Medicine數據庫中的藥品的價格進行調整,幅度為原來的90%:update Medicine set showprice=showprice*0.9

在Medicine數據庫中將使用急速快遞物流的訂單修改為貨到付款,且無物流費用:update SaleOrderSummary

set Freight=0,RayMain='貨到付款' where FreighterName='極速快遞'

top (更新指定更新的行數或者行數的百分比):對MedicinieDetail表的前5條條藥品的價格增加:update top(5) MedicineDetail set showprice=showprice+5

對MrdicineDetail的前30%的藥品價格增加5:update top(30) percent MedicineDetail set showprice=showprice+5

delete(刪除數據庫表的單行數據,多行數據或者所有數據):刪除ClientInfo表中職稱為"業務代表”的所有客戶信息:

delete ClientInfo Where Compost=‘業務代表’

刪除ClientInfo表中的所有數據:delete from ClientInfo

列表條件:in:查詢MedicineInfo表中查詢出分類編號為31,80或者91的藥品信息,查詢結果包含編號,藥品名稱和所屬分類編號

Select MedicineId '編號',MedicineName '藥品名稱',TypeId '所屬分類編號' from MedicineInfo where TypeId IN(31,80,91)

要從藥品信息表MedicineDetail中統計每個廠家生產的藥品的數量,就可以使用group by子句對ProviderName列進行分組,然后統計結果集的個數

select ProviderName '上產廠家', count(*) '藥品數量' from MedicineDetail group by ProviderName

要從藥品信息表中獲取每個廠家長產藥品的最高價格:select ProviderName '生產廠家', Max(showprice) '價格' from MedicineDetail group by ProviderName

篩選藥品信息表中MedicineDetail中數量多于10個的藥品生產廠家以及的該廠家的藥品數量就可以使用having子句進行過濾

select ProviderName '生產廠家', count(*) '藥品數量’ from MedicineDetail group by ProivderName Having count (*) >10

內連接:將兩個表中滿足條件的記錄組合在一起。

外連接:返回所有匹配的行和不匹配的行。

外連接分為左外鏈接:left outer join LEFT返回所有匹配的行并從關鍵字join左邊的表中返回所有不匹配的行,

right outer join RIGHT返回所有匹配的行并從關鍵字join郵編的表中返回所有不匹配的行。

例如:左外鏈接:select 列名列表 from 表名1 LEFT [OUTER] join 表名2 on 表名1.列名=表名2.列名

使用子查詢

1.使用比較運算符 any和some表示相比較的兩個數據集中,至少有一個值的比較為真,滿足搜索條件,若子查詢結果集為空,則不滿足搜索條件。

all與結果集中所有的值比較都為真, 才能滿足搜索條件。

在Personnel_Sys數據庫中查詢包含女性員工的部門編號和部門名稱。

select did '編號' , dname '部門名稱'

from Departments where did=ANY(select did from Employees where sex='女')

2.使用in關鍵字

in關鍵字可以判斷指定的值是否包含在另外一個查詢結果集中。

select e.eid '編號',e.ename '姓名',e.sex '性別',e.hometown '籍貫',c.salary2 '調整后工資' from salary_changes c inner join employees e on c.eid=e.eid where e.eid in(select eid from employees where married='已婚')

3.使用exists關鍵字

exists關鍵字的作用是在where子句中測試子查詢返回的數據行是否存在,不會返回任何行只會產生邏輯值true或者false

在Personnel_Sys數據庫中如果存在一個部門沒有員工的情況,那么就顯示所有部門的信息

select * from Departments where exists(select e.eid '編號',e.ename '姓名',d.dname '部門名稱' from employees e right outer join departments d on e.eid=d.did where e.eid is null)

4.單值查詢

子查詢的查詢結果就返回一個值:在Personnel_sys數據庫中輸出編號為100401員工所在部門的編號,部門名稱以及部門人數

select * from departments where did=(select did from employees where eid=100401)

5.嵌套子查詢

在查詢語句中包含一個或者多個子查詢:查詢并顯示調整過薪資的員工的信息,包含員工編號,姓名,性別和籍貫

select eid '編號',ename '姓名',sex '性別',hometown '籍貫' from employees where eid in(select eid from salary_changes)

使用create view語句創建一個名為V_employee_department的視圖,要求視圖可以查詢每個員工的編號,姓名,職稱以及所在部門名稱:create view V_employee_department

(

編號,姓名,職稱,所在部門)

as select e.eid,e.ename,e.post,d.dname from employees e inner join departments d on e.eid=d.did

?

?

?

總結

以上是生活随笔為你收集整理的数据库知识个人总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。