週末的時光是短暫,也是輕鬆愉快的,在這炎炎的夏日坐在小板凳上,吹着空調喝着茶的我帶你點輕輕的點開個人文章連接,帶領屏幕前的你回顧一下MySql的內容,但願你能有所收穫。本篇隨筆分上下兩部分,上半部分理論,下半部分實際操做。java
====上====mysql
複習:數據庫的相關概念
1、數據庫的好處
1.能夠持久化到本地
2.結構化查詢
2、數據庫的概念★
1.DB:數據庫,存儲數據的容器
2.DBMS: 數據庫管理系統,又稱爲數據庫軟件或者數據庫產品,用於建立或管理DB
3.SQL:結構化查詢語言,用於和數據庫通訊的語言,不是某個數據庫軟件特有的,而是幾乎全部的主流的數據庫軟件通用語言。
3、數據庫存儲數據的特色
1.數據存放到表中,而後再放到庫中
2.一個庫能夠有多張表每張表具備惟一的表名用來標識本身。
3.表中有一個或者多個列,列又稱爲「字段」,至關於java中的」屬性」
4.表中的每一行數據,至關於java中」對象」
4、常見的數據庫管理系統
1.Mysql
2.Oracle
3.DB2
4.Sqlserver
複習:MySql的介紹
1、Mysql的介紹
前生屬於瑞典的一家公司,Mysql AB
08年被sun公司收購
09年sun被oracle收購
2、Mysql的優勢
1.開源,免費,成本低(8以前都免費)
2.性能高,移植性也好(這裏對比SQLserver)
3.體積小,(二進制的源碼包只有20M).便於安裝。
3、Mysql的安裝
1.屬於C/S架構的軟件,通常來安裝服務端。
2.安裝不要有中文與空格,初學的建議不要改路徑
3.有企業版與社區版
4、Mysql服務的啓動和中止
方式一: 經過命令行方式
Net start 服務名
Net stop 服務名
方式二:計算機--》右鍵--》管理--》服務--》找到Mysql點啓動
5、Mysql服務的登錄和退出
登錄:
Mysql -h主機名 -P端口號 -u帳號 -p密碼
退出:
Exit或者Ctrl+C
複習:SQL語言
1、基礎查詢
1.語法
SELECT 查詢列表
FROM 表名;
2.特色
①查詢列表能夠是字段,常量,表達式,函數,也能夠是多個
②查詢結果是一個虛擬表
3.示例
①查詢單個字段
SELECT 字段名 FROM 表名;
②查詢多個字段
SELECT 字段名,字段名 FROM 表名;
③查詢全部字段
SELECT * FROM 表名;
④查詢常量
SELECT 常量值;
注意:字符型和日期型的常量值必須用單引號,數值型不須要
加了表名也能正常出結果,不會報錯。sql
⑤查詢函數
SELECT 函數名(實參列表)
注意:Mysql的函數必需要有返回值
⑥查詢表達式+,-,*,/
SELECT 100/1234
⑦起別名
AS 可讀性強
空格 多字段時比較繁雜
⑧去重,只能是單字段
SELECT DISTINCT 字段名 FROM 表名;
例:SELECT DISTINCT a,b FROM 表名;若是b字段沒有重複,或者a有3個重複字段,b有5個重複字段,形成查詢出來的不規則。
⑨+
做用:作加法用算
SELECT 數值+數值 直接運算
SELECT 字符+數值 先試圖將字符轉換成數值,若是轉換成功,則繼續運算,不然轉換成0繼續運算
SELECT null+值 結果爲null
⑩【補充】concat函數
功能:拼接字符
SELECT CONCAT(字符1,字符2,字符3...);
【補充】IFNULL函數
功能:判斷某字段或表達式是否爲NULL,若是爲NULL返回指定的值,不然返回原來的值。
例:SELECT IFNULL(commission_pct,0) FROM employees;
【補充ISNULL】函數
功能:判斷某字段是否爲NULL,若是是則返回1,不然返回0.
2、條件查詢 ①語法 SELECT 查詢列表 FROM 表名 WHERE 篩選條件 執行順序,先表,再字段,最後條件 ②篩選條件的分類 1.簡單的條件運算符 < ,<=,>,>=, =, <>,!=,<=>
2.邏輯運算符 && AND 與,|| OR 或,! NOT 非 3.模糊查詢 Like,通常搭配通配符字符使用,但5.5版本以後能夠判斷在數值型 通配符%任意多個字符,_任意單個字符 BETWEEN AND, IN, IS NULL,用於判斷NULL值 IS NOT NULL,用於判斷NULL值
====下==== 數據庫
下列操做使用HEIDISQL(免費),固然你也能夠用你本身喜歡的工具。先來一張HEIDISQL的字體設置圖省得你實際操做看着眼睛不舒服。安全
MYSQL複習系列所用到的表腳本連接:總共四張表表結構圖以下。架構
連接: https://pan.baidu.com/s/1jWtgCnmO__7aOTVuXWaZPA 提取碼: 4thx
表裏面有些數據字段爲何用數字不用字符串,每存一個字符串就會開闢一塊空間。爲了解決數據冗餘,因而把字段提取出來一張表實現分類存儲。例如部門:研發部編號01,人事部編號02。oracle
#基礎查詢 語法 select 查詢列表 from 表名; 特色: 1.查詢列表能夠是:表中的字段,常量值,表達式,函數 2.查詢的結果是一個虛擬的表格(臨時性) HeidiSQL快捷鍵 新建窗口 Ctrl + T SQLyog 快捷鍵 F12 將選中的語句進行,格式化SQL語句。表字段能夠不用寫,直接去左側欄點擊。 SQLyog 快捷鍵 F9 選中語句後,執行語句。 查詢前,先切換庫。USE 庫名; 有的字段上帶有」 ` 」着重號,(數字1旁邊的鍵),不是單引號,能夠加能夠不加。帶有着重號的表明一個字段。
用來區分關鍵字與字段,着重號的用處,使有些不規範的表的字段(用關鍵字作的字段)加着重號表明字段而不是關鍵字。
#1.查詢表中的單個字段函數
SELECT last_name FROM employees;工具
#2.查詢表中的多個字段。 SELECT last_name,salary,email FROM employees;
#3.查詢表中的全部字段 #使用*是按表字段的順序輸出,有效排列不適合用。 SELECT * FROM employees;
#4.查詢常量值 SELECT 100;
#MYSQL裏面不區分字符與字符串 SELECT 'john';
#5查詢表達式 SELECT 100*98;
#6.查詢函數 SELECT VERSION(); #調用該方法獲得的值並顯示
#7.起別名 1.便於理解 2.若是要查詢的字段有重名的狀況使用別名能夠區分開來。 SELECT 100%98 AS 結果;
#方式一,使用AS
SELECT last_name AS 姓,first_name AS 名 FROM employees;
#方式二,使用空格
SELECT last_name 姓,first_name 名 FROM employees;
特殊狀況性能
SELECT salary AS "out put" FROM employees;
#8 去重 #案例:查詢員工表中涉及到全部的部門編號 #SELECT department_id FROM employees; SELECT DISTINCT department_id FROM employees;
對比
#9. +號的做用 #案例:查詢員工名和姓鏈接成一個字段,並顯示爲姓名。 java中的+加號 ①運算符,兩個操做都爲數值型 ②鏈接符,只要有一個操做數爲字符串 mysql中的+加號 僅僅只有一個功能,運算符 第一種狀況: SELECT 100+90; 兩個操做數都爲數值型,則作加法運算 第二種狀況: SELECT '123'+99;其中一方爲字符型,試圖將字符型數值轉換成數值型 若是轉換成功,則繼續作加法運算 第三種狀況: SELECT 'john'+90; 若是轉換失敗, 則將字符型數值準換成0 第四種狀況:null與任意數據拼接都爲null SELECT null + 10; 只要其中一方爲null,則結果確定爲null
Mysql拼接 CONCAT(字符1,字符2,)坑開踢,字符串拼接,用逗號
#案例:查詢員工名和姓鏈接成一個字段,並顯示爲姓名。
SELECT CONCAT(last_name,first_name) AS 名姓 FROM employees;
#IFNULL(存在空的字段,替換的內容),空判斷函數。 例如:commission_put的空子段替換成0 SELECT IFNULL(commission_pct,0) AS 獎金率, commission_pct FROM employees;
語法: 執行順序 select 查詢列表 3 from 表名 1 where 篩選條件 ; 2 分類: 一.按條件表達式篩選 簡單的條件運算符: > < = <> != >= =< 二.按邏輯表達式篩選 邏輯運算符:主要用於鏈接表達式 && || ! and or not &&和and:兩個條件都爲true,結果爲true,反之爲false ||和or:只要有一個條件爲true,結果爲true,反之爲false !和not:若是鏈接的條件自己爲false,結果爲true,反之爲false. 三.模糊查詢 like between and in is null
#案例1.查詢工資>12000的員工信息 SELECT * FROM employees WHERE salary > 12000;
#按條件表達式篩選 #案例2.查詢部門編號不等於90號的員工名和部門編號。 SELECT first_name,department_id FROM employees WHERE department_id <> 90 ;
#邏輯運算符用於鏈接條件表達式 #案例一:查詢工資在10000到20000之間的員工名,工資以及獎金。 SELECT first_name,salary,commission_pct FROM employees WHERE salary>=10000 AND salary<=20000;
#案例二:查詢部門編號不是在90到110之間的,或者工資高於15000的員工信息。 SELECT * FROM employees WHERE department_id < 90 OR department_id > 110 OR salary > 15000; SELECT * FROM employees WHERE NOT(department_id >= 90 AND department_id <= 110) OR salary > 15000;
三.模糊查詢
like 像 特色: ① 通常和通配符搭配使用 通配符: %任意多個字符,包含0個字符 _任意單個字符 between and ① 使用between and能夠提升語句的簡介度 ② 包含臨界值 ③ 臨界值不要調換順序,兩個值必須統一 In 含義:判斷某字段的值是否屬於in列表中的某一項。 特色: ① 提升簡潔度 ② In列表的值類型必須統一或兼容(隱式轉換) 判空 is null is not null 安全等於<=> 等於 #1.like #案例1:查詢員工名中包含字符a的員工信息。 #百分號表明通配符
SELECT *
FROM employees
WHERE first_name LIKE '%a%';
#案例2.查詢員工名中第三個字符爲n,第五個字符爲l的員工名和工資。 SELECT first_name,salary FROM employees WHERE first_name LIKE '__n_l%';
須要轉義 \ ,有些字段裏面有一些特殊的符號就要用到轉義 指定(自定義)轉義符號 關鍵詞 ESCAPE [表示是一個轉義字符] 【推薦使用】 #案例3.查詢員工姓中第二個字符爲_的員工名。 SELECT last_name FROM employees WHERE last_name LIKE '_\_%'
===================================== SELECT last_name FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$';
2.between and 案例1:查詢員工編號在100到120之間的員工信息 SELECT * FROM employees WHERE employee_id >= 100 AND employee_id <= 120;
======================================== SELECT * FROM employees WHERE employee_id BETWEEN 100 AND 120;
#3.in #案例:查詢員工的工種編號是IT_PROT,AD_VP,AD_PRES中的一個員工名和工種編號。 SELECT first_name,job_id FROM employees WHERE job_id = 'IT_PROT' OR job_id = 'AD_VP' OR job_id='AD_PRES'
=================================== SELECT first_name,job_id FROM employees WHERE job_id IN('IT_PROT','AD_VP','AD_PRES');
IS NOT NULL
#案例2:查詢有獎金的員工名和獎金率
SELECT first_name,commission_pct
FROM employees
WHERE commission_pct IS NOT NULL;
#安全等於 <=> 表明是否等於,等於返回true #案例1.查詢沒有獎金的員工名和獎金率 SELECT last_name,commission_pct FROM employees WHERE commission_pct <=>NULL;
#案例2.查詢工資爲12000的員工信息。 SELECT last_name,salary FROM employees WHERE salary <=> 12000;
IS NULL 與 <=>的區別
IS NULL :僅僅能夠判斷NULL值,可讀性好。
<=> :便可以判斷NULL值,又能夠判斷普通的數值,可讀性差。
Mysql基礎回顧一結束,能看到最後也相信你對MySql又有了進一步的增強。孔子曰:「溫故而知新,能夠爲師矣。」知識仍是時不時要回顧一下,計算機的世界知識體系很大但願我與屏幕前的你都能走的更遠。
最後感謝B站/李老師的講解。