【編測編學】MySQL資料庫基礎知識

bcbxhome發表於2020-12-28

一:資料庫的相關概念

 

1、 資料庫的好處

 

可以持久化資料到本地

結構化查詢

 

2、 資料庫的常見概念

 

DB :資料庫、儲存資料的容器

DBMS :資料庫管理系統,又稱之為資料庫軟體或資料庫產品,用於建立和管理DB

SQL :結構化查詢語言,用於和資料庫通訊的語言,不是某個資料庫軟體特有的,而是幾乎所有主流的資料庫軟體通用的語言

 

3、 資料庫儲存資料的特點

 

資料存放到表中,表在放到庫中

一個庫可以由多張表,每張表具有唯一的表名來標識自己

表中有一個或多個列,列又稱之為欄位,相當於java中得屬性

表中每一行資料,相當於Java中物件

 

4、 常見的資料庫管理系統

Mysql   oracle     db2    sqlserver

 

二:MySQL

 

1、 優點

 

開源、免費、成本低

效能高、移植性好

體積小、便於安裝

 

2、 MySQL 的安裝

屬於C\S架構的軟體,一般來講安裝服務端

 

3、 MySQL 服務的啟動和停止

 

透過命令

net start 服務名

net stop 服務名

計算機管理--------服務

 

4、 MySQL 服務的登入和退出

登入:mysql h 主機名 P 埠號 u 使用者名稱 p 密碼(預設埠3306,使用者root)

退出:exit或者Ctrl+c

 

5、 mysql 的語法規範

 

不區分大小寫,但是建議關鍵字大寫,表名、列名小寫

每條命令最好用分號結尾

每條命令根據需要,可以驚醒縮排,或者換行(建議關鍵字放一行,要查詢的放一行)

註釋

單行註釋:#註釋文字、--註釋文字

多行註釋:/*註釋文字*/

show database();// 檢視當前所有的資料庫

use+ 庫名;//開啟指定的庫

(只要用了use你就在那個庫中了)

show tables;// 檢視當前庫所有的表

show tables from 庫名;//檢視其他庫所有的表

create table 表名(

    列名 列型別,

    列名 列型別,

    ...

)// 建立表

desc 表名;//檢視錶的結構

檢視伺服器的版本:

方式一:登入到mysql服務端

select version();

方式二:沒有登入到mysql服務端

mysql --version 或mysql --V

 

三、 MySQL 一些基礎的查詢

1 、基本要掌握的

select 查詢列表 from 表名

USE manba;

 

#1. 查詢表中的單個欄位

SELECT last_name FROM manba;

 

#2. 查詢表中的多個欄位

SELECT last_name,salary,email FROM manba;

 

#3. 查詢表中所有欄位(雙擊左側)

# 方式一

SELECT

  `department_id`,

  `department_name`,

  `manager_id`,

  `location_id`

 FROM

  manba;

# 方式二

SELECT * FROM manba ;

 

#4. 查詢常量值

SELECT 100;

SELECT 'john';

# (不區分字元和字串)

 

#5. 查詢表示式

SELECT 100%98;

 

#6. 查詢函式

SELECT VERSION();

 

#7. 起別名

/*

①便於理解

②如果要查詢的欄位有重名的情況,使用別名可以區分開來

*/

# 方式一 : as

SELECT 100%98 AS 結果 ;

SELECT last_name AS ,first_name AS FROM manba;

 

# 方式二 : 空格

SELECT last_name 姓, first_name FROM manba;

# 案例:查詢 salary ,顯示結果為 output

SELECT salary AS "out put" FROM manba;

 

 

#8. 去重

 

# 案例:查詢員工表涉及到的所有部門編號

SELECT DISTINCT department_id FROM manba;

 

 

#9. + 號的作用

 

/*

java 中的 + 號:

①運算子:兩個運算元都為數值型

②連線符:只要有一個運算元為字串

 

mysql 中的 + 號:

僅僅只有一個功能:運算子

 

select 100+90

select '123'+90; 其中一方為字元型,會試圖將字元型數值轉換成數值型

                如果轉換成功則繼續加法運算

select 'john'+90; 如果轉換失敗,則字元型陣列值轉換成 0

 

select null+10; 只要其中一方為 null ,則結果為 null

*/

 

# 案例:查詢員工名和姓連線成一個欄位,並顯示為 姓名

 

SELECT CONCAT(last_name,first_name) AS 姓名 FROM manba;

 

#10. 判斷是否為空

#commission_pct 是否為空?為空返回 0

SELECT

       IFNULL(commission_pct,0) AS 獎金率 ,

       commission_pct

FROM

       manba;

 

2 、條件查詢

2.1 按條件表示式查詢

# 案例 1 :查詢工資 >12000 的員工資訊

 

SELECT * FROM manba WHERE salary>12000;

      

# 案例 2 :查詢部門編號不等於 90 號的員工名和部門編號

 

SELECT last_name,department_id FROM manba WHERE department_id!=90;

 

2.2 按邏輯表示式查詢

案例 1 :查詢工資在 10000 20000 之間的員工名,工資和獎金

 

SELECT last_name, salary,commission_pct FROM manba WHERE salary>=10000 and salary<=20000

      

案例 2 :查詢部門編號不在 90-110 之間,或者工資高於 15000 的員工資訊

SELECT * FROM manba WHERE department_id<90 OR department_id>110 OR salary>15000;

 

2.3 模糊查詢

2.3.1 一般和萬用字元搭配使用

       萬用字元: % 任意多個字元,包含 0

       _ 任意單個字元

案例 1 :查詢員工名中包含字元 a 的員工資訊

SELECT * from manba where last_name like '%a%';

% 代表萬用字元,代表任意個字元

 

案例 2 :查詢員工名中第 3 個字元為 n ,第五個字元為 l 的員工名和工資

SELECT last_name salary  from manba where last_name like '__n_l%';      

 

# 案例 3 :查詢員工名中第二個字元為 _ 的員工名(跳脫字元)     

SELECT last_name FROM manba WHERE  last_name LIKE '_\_%';           

 

2.3.2between and

①使用 between and 可以提高語句的簡潔度

②包含臨界值

③兩個臨界值順序不能調換

 

# 案例 1 :查詢員工編號在 100 120 之間的員工資訊

 

SELECT * from manba where manba_id between 100 and 200;

 

2.3.3.in

含義:用於判斷某欄位的值是否屬於 in 列表中的某一項

特點:

       ①使用 in 提高語句簡潔度

       in 列表的值型別必須統一或者相容

       ③不支援萬用字元

 

# 案例:查詢員工的工種編號是 IT_PROT, AD_VP, AD_PRES 中的一個的員工名和工種編號

SELECT last_name,job_id FROMmanba WHERE

job_id='IT_PROT' OR job_id='AD_VP' OR job_id='AD_VP';

 

SELECT last_name,job_id FROMmanba WHERE job_id IN ('IT_PROT' ,'AD_VP' , 'AD_VP');

 

2.3.4. is null(is not null)

= 或者 <> 不能用於判斷 null

 

# 案例 1 :查詢沒有獎金的員工名和獎金率

SELECT last_name,commission_pct FROM manba WHERE commission_pct IS NULL;

 

# 安全等於   <=>  is null 可以換成 <=> null

 

# 案例 1 :查詢沒有獎金的員工名和獎金率

SELECT last_name,commission_pct FROM manba WHERE commission_pct <=> NULL;

      

# 案例 12 :查詢工資為 12000 的員工資訊

SELECT last_name,salary FROM manba WHERE salary <=> 12000;

 

3 、排序查詢

引入:

       select * from manba;

語法:

       SELECT 查詢列表

       from

       [where 篩選條件 ]

       order by 排序列表 [asc|desc]

特點:

asc 代表升序, desc 代表降序,預設不寫是升序

order by 子句中可以支援單個欄位、多個欄位、表示式、函式、別名

order by 子句一般是放在查詢語句的最後面, limit 子句除外  

 

# 案例 1 :查詢員工資訊,要求工資從高到低排序

SELECT * FROM manba ORDER BY salary DESC;

SELECT * FROM manba ORDER BY salary ASC;

 

# 案例 2 :查詢部門編號 >=90 的員工資訊,按入職時間的先後進行排序

 

SELECT *

FROM manba

WHERE department_id>=90

ORDER BY hiredate ASC;

 

# 案例 3 :按年薪高低顯示員工的資訊和年薪 [ 按表示式排序 ]

SELECT *, salary*12*(1+IFNULL(commission_pct,0)) AS 年薪

FROM manba

ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

 

# 案例 4 :按年薪高低顯示員工的資訊和年薪 [ 按別名排序 ]

SELECT *, salary*12*(1+IFNULL(commission_pct,0)) AS 年薪

FROM employees

ORDER BY 年薪 DESC;

 

# 案例 5 :按姓名的長度顯示員工的姓名和工資 [ 按函式排序 ]

SELECT LENGTH(last_name) AS 位元組長度 , last_name,salary

FROM manba

ORDER BY LENGTH(last_name) DESC;

 

# 案例 6 :查詢員工資訊,要求先按工資升序,再按員工編號降序 [ 按多個欄位排序 ]

SELECT * FROM manba

ORDER BY salary ASC,employee_id DESC;

# 整體按工資排序,工資相同時,按員工編號降序

 

 

4. 常見函式的運用

概念:類似 java 的方法,將一組邏輯語句封裝在方法體中,對外暴露方法名

好處:隱藏了實現細節、提高程式碼的重用性

呼叫: select 函式名 ( 實參列表 ) [from ( 根據需要 )];

特點:

       ①叫什麼(函式名)

       ②幹什麼(功能)

分類:

       字元函式 :length  concat substr instr trim upper lower lpad rpad replace

      

       數學函式: round ceil floor truncate mod

      

       日期函式: now curdate curtime year month monthname

       day hour minute second str_to_date  date_format

      

       其他函式: version database user

      

       控制函式 : if case

        


下期我們就函式的應用,還有其他的查詢做一個彙總

【編測編學】  教學內容為:

 

測試基礎知識、專案實戰、測試管理、敏捷測試、探索式測試、APP測試、Linux、資料庫、測試環境搭建、Python程式設計、WEB端UI自動化測試、APP端UI自動化、介面功能測試、效能測試、介面自動化測試、Jenkins持續整合  等內容。


透過學習,學員能  掌握軟體測試企業最新技術,對標一線網際網路企業專案要求,使學員達到中高階測試工程師的水平,畢業後可快速融入企業實際工作中。

 

不管你是  文科生、專科生、0基礎、女同學  都可以輕鬆學會!



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69985967/viewspace-2745957/,如需轉載,請註明出處,否則將追究法律責任。

相關文章