数据库——(DB、DBMS、SQL)
前言
數(shù)據(jù)庫是存放數(shù)據(jù)的倉庫。它的存儲空間很大,可以存放百萬條、千萬條、上億條數(shù)據(jù)。但是數(shù)據(jù)庫并不是隨意地將數(shù)據(jù)進行存放,是有一定的規(guī)則的,否則查詢的效率會很低。當今世界是一個充滿著數(shù)據(jù)的互聯(lián)網(wǎng)世界,充斥著大量的數(shù)據(jù)。即這個互聯(lián)網(wǎng)世界就是數(shù)據(jù)世界。數(shù)據(jù)的來源有很多,比如出行記錄、消費記錄、瀏覽的網(wǎng)頁、發(fā)送的消息等等。除了文本類型的數(shù)據(jù),圖像、音樂、聲音都是數(shù)據(jù)。
數(shù)據(jù)庫常見概念
DB
概念:
數(shù)據(jù)庫,保存一組有組織的數(shù)據(jù)容器。
優(yōu)點:
- 實現(xiàn)數(shù)據(jù)持久化。
- 使用完整的管理系統(tǒng)統(tǒng)一管理,易于查詢。
特點:
- 將數(shù)據(jù)放到表中,表再放到庫中。
- 一個數(shù)據(jù)庫可以有多個表,每個表都有一個名字,用來標識自己;表名具有唯一性。
- 表具有一些特性,這些特性定義了數(shù)據(jù)在表中如何存儲,類似 java 中“類”的設計
- 表由列組成,我們也稱為‘字段’。所以表都是由一個或者多個列組成的,每一列類似于 java 中的“屬性”
- 表中的數(shù)據(jù)是按行存儲的,每一行類似于 java 中的“對象”。
DBMS
概念:
數(shù)據(jù)庫管理系統(tǒng),又稱數(shù)據(jù)庫軟件(產(chǎn)品),用于管理DB中的數(shù)據(jù)
常見的數(shù)據(jù)管理系統(tǒng):mysql、oracle、db2、sqlserver
SQL
概念:
結(jié)構化查詢語言,用于和DBMS通信的語言,不是某個數(shù)據(jù)庫軟件特有的,而是所有的主流數(shù)據(jù)庫軟件通用的語言
連接查詢
按年份分類:
sql92:
- 等值連接
- 非等值連接
- 自連接
sql99:
- 內(nèi)連接
- 等值連接
- 非等值連接
- 自連接 - 外連接
-左外連接
-右外連接 - 交叉連接
子查詢
含義:嵌套在其他語句內(nèi)部的select語句稱為子查詢或內(nèi)查詢
外面的語句可以是:insert、update、delete、select等,一般select作為外面語句較多
外面如果為select語句,則此語句稱為外查詢或主查詢
分類
按出現(xiàn)的位置分類:
- select后面:僅僅支持標量子查詢
- from后面:表子查詢
- where 或 having 后面:標量子查詢、列子查詢、行子查詢
- exists后面:標量子查詢、列子查詢、行子查詢、表子查詢
按結(jié)果集分類:
- 標量子查詢(單行子查詢):結(jié)果集為一行一列
- 列子查詢(多行子查詢):結(jié)果集為多行一列
- 行子查詢:結(jié)果集為多行多列
- 表子查詢:結(jié)果集為多行多列(任意)
案例
這是力扣中的數(shù)據(jù)庫中的一道例題
Employee 表包含所有員工信息,每個員工有其對應的 Id, salary 和 department Id。
Department 表包含公司所有部門的信息。
編寫一個 SQL 查詢,找出每個部門工資最高的員工。對于上述表,您的 SQL 查詢應返回以下行(行的順序無關緊要)。
解題思路:
①求出每個部門對應的最高工資和部門編號
②內(nèi)連接兩表并進行篩選
# Write your MySQL query statement below select d.Name Department,e.Name Employee,e.Salary Salary from Employee e, Department d where e.DepartmentId=d.Id and (e.Salary,e.DepartmentId) IN (select max(Salary),DepartmentIdfrom Employee group by DepartmentId );運行結(jié)果如下:
總結(jié)
以上是生活随笔為你收集整理的数据库——(DB、DBMS、SQL)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU Employment Plann
- 下一篇: SQL注入与ASP木马上传