目錄
一、資料庫的好處
二、資料庫相關概念
三、資料庫存盤資料的特點
四、MYSQL服務的啟動和停止
五、MySQL常見命令
六、MysSQL的語法規范
七、基礎查詢
1.介紹
2.查詢方式
3.補充
八、條件查詢
1.介紹
2.運算子分類
3.like 介紹
4.between and 介紹
5.in 介紹
6.is (not) null 介紹
九、排序查詢
1.介紹
十、分組查詢
1.分組函式
2.分組查詢介紹
十一、連接查詢
1.介紹
2.分類
3.笛卡爾積(笛卡爾乘積)
4.內連接
5.外連接
6.交叉連接
十二、子查詢
1.介紹
2.分類
3.where或having后面
4.select后面
5.from后面
6.exists后面(相關子查詢)
十三、分頁查詢
1.介紹(1-9為執行順序)
2.特點
十四、聯合查詢
1.介紹
2.特點
十五、預祝元旦快樂
一、資料庫的好處
? 持久化資料到本地
? 可以實作結構化查詢,方便管理
二、資料庫相關概念
? DB:資料庫,保存一組有組織的資料的容器
? DMBS:資料庫管理系統,又稱為資料庫軟體,用于管理DB中的資料
? SQL:結構化查詢語言,用于和DBMS通信的語言
三、資料庫存盤資料的特點
? 將資料放倒表中,表在放到庫中,
? 一個資料庫中可以有多個表,每個表都有一個名字用來標識自己,表名具有唯一性,
? 表具有一些特性,這些特性定義了資料在表中如何存盤,類似java中類的設計,
? 表由列組成,我們稱為欄位,所有表都是由一個或多個列組成的,每一列類似java中的屬性,
? 表中的資料是按行存盤的,每一行類似于java中的物件,
四、MYSQL服務的啟動和停止
方式一:計算機--右擊管理--服務
方式二:通過管理員身份運行dos視窗
net start 服務名(啟動服務)
net stop 服務名(停止服務)
五、MySQL常見命令
? 查看當前所有的資料庫
show databases;
? 打開指定的庫
use 庫名;
? 查看當前庫的所有表
show tables
? 查看其他庫的所有表
show tables from 庫名;
? 創建表
create table 表名(
列名 列型別,
列名 列型別,
.....
) ;
? 查看表結構
desc 表名;
? 查看服務器的版本
方式一:登錄到mysql服務端
select version();
方式二:沒有登錄到mysql服務端
mysql --version
或
mysql --V
六、MysSQL的語法規范
? 不區分大小寫,但建議關鍵字大寫,表名、列名小寫
? 每條命令最好用分號結尾
? 每條命令根據需要,可以縮進 或換行
? 注釋
單行注釋:#注釋文字
單行注釋:-- 注釋文字
多行注釋:/*注釋文字*/
七、基礎查詢
1.介紹
語法:
SELECT 查詢串列 FROM 表名;
類似于:System.out.println(列印東西);
特點:
? 查詢串列可以是:表中的欄位、常量值、運算式、函式
? 查詢的結果是一個虛擬的表格
2.查詢方式
? 查詢表中的單個欄位 SELECT last_name FROM employees;
? 查詢表中的多個欄位 SELECT last_name,salary,email FROM employees;
? 查詢表中所有欄位 SELECT 所有欄位 FROM employees;2.SELECT * FROM employees;
? 查詢常量值 SELECT 100;SELECT 'John';
? 查詢運算式 SELCET 100%98;
? 查詢函式 SELECT VERSION();
3.補充
? 起別名
好處:
1.便于理解
2.如果要查詢的欄位有重名的情況,使用別名可以區分開來
例:
SELECT last_name AS 姓,first_name AS 名 FROM employees;(AS可省略)
注意:
別名中有特殊符號時(空格,#等),用雙引號標識起來(mysql中建議雙引號,單引號也行)
例:
SELECT salary AS "out put" FROM employees;
? +號的作用
java中的+號:
? 運算子,兩個運算元都為數值型
? 連接符,只要有一個運算元為字串
mysql中的+號:
僅僅只有一個功能,運算子
例:
SELECT 100+90; 兩個運算元都為數值型,做加法運算
SELECT '123'+90; 數字字符型將轉換成數值型,而后做加法運算
SELECT 'john'+90; 非數字字符型將轉換成數值型0,而后做加法運算
SELECT null+10; 只要其中一方為null,結果肯定為null
八、條件查詢
1.介紹
語法:
SELECT
查詢串列
FROM
表名
WHERE
篩選條件;
2.運算子分類
? 條件運算子: > < = != <> >= <=
? 邏輯運算子:&& || ! and or not
? 模糊查詢:like between and in is null is not null
3.like 介紹
特點
一般和通配符搭配使用:
? % 任意多個字符,包含0個字符
? _ 任意單個字符
案例
案例一:查詢員工名中包含字符a的員工資訊
SELECT * FROM employees WHERE last_name LIKE '%a%';
案例二:查詢員工中第三個字符為e,第五個字符為a的員工名
SELECT last_name FROM employees WHERE last_name LIKE '__e_a';
案例三:查詢員工名中第二個字符為_的員工名(轉譯,通配符等特殊符號充普通字符)
SELECT last_name FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$';
LIKE '_\_%';
4.between and 介紹
特點
? 使用between and 可以提高陳述句的簡潔度
? 包含臨界值
? 兩個臨界值不要調換順序(between 120 and 100 報錯)
案例
案例一:查詢員工編號在100到120之間的員工資訊
SELECT
*
FROM
employees
WHERE
employees_id >=120 AND employees_id<=100;
--------------------------------------------------------------------------------
SELECT
*
FROM
employees
WHERE
employees_id BETWEEN 100 AND 120;
5.in 介紹
含義:判斷某欄位的值是否屬于in串列中的某一項
特點:1.使用in提高陳述句的簡潔度
2.in串列的值型別必須統一
案例
案例:查詢員工的工種編號是IT_PROG、AD_VP、AD_PRES中的一個的員工名和工種編號
SELECT
last_name'
job_id
FROM
employees
WHERE
job_id='IT_PROG', OR job id ='AD_VP, OR job id ='AD_PRES';
--------------------------------------------------------------------------------------------
SELECT
last_name
job_id
FROM
employees
WHERE
job_id IN('IT_PORG','AD_VP','AD_PRES');
6.is (not) null 介紹
特點
? = 或 <> 不能用于判斷null值
? is null 或 is not null 可判斷null值
補充:安全等于 <=>
? IS NULL :只可以判斷NULL值,可讀性高,建議使用
? <=> : 既可以判斷NULL值,又可以判斷普通的數值,但可讀性低
九、排序查詢
1.介紹
語法:
SELECT 查詢串列
FROM 表
WHERE 篩選條件
ORER BY 排序串列【asc,desc】
特點:
? asc表升序,可省略;desc表降序
? order by 子句中可以支持單個欄位,多個欄位(按第一個欄位為主要關鍵字進行排序,后續欄位為次要關鍵字進行排序)、運算式、函式、別名,
? order by 字句中一般是放在查詢陳述句的最后面,limit子句除外,
十、分組查詢
1.分組函式
功能:
用作統計使用,又稱為聚合函式或統計函式或組函式
分類:
sum求和、avg平均值、max最大值、min最小值、count計算個數
特點:
? sum、avg一般用于處理數值型
max、min、count可以處理任何型別
? 以上分組函式都忽略null值
? 可以和distinct搭配實作去重的運算
? 一般使用count(*)用作統計行數
? 和分組函式一同查詢的欄位要求是group by后的欄位
2.分組查詢介紹
語法:
SELECT 分組函式,列(要求出現在group by的后面)
FROM 表
WHERE 篩選條件
GROUP BY 分組的串列
ORDER BY 子句
注意:
查詢串列比較特殊,要求是分組函式和group by 后出現的欄位
特點:
? 分組查詢中的篩選條件分為兩類
資料源 位置 關鍵字
分組前篩選 原始表 group by子句的前面 where
分組后篩選 分組后的結果集 group by子句的后面 having
? group by子句支持單個欄位分組,多個欄位分組,(欄位間用逗號隔開沒有順序要求),運算式或函式用的較少,
? 也可以添加排序(排序放在整個分組查詢最后)
注意:
? 分組函式做條件肯定放在having子句中
? 能在分組前篩選的,就優先考慮分組前篩選
十一、連接查詢
1.介紹
含義:
又稱多表查詢,當查詢的欄位來自于多個表時,就會用到連接查詢
2.分類
按年代分類:
sql92標準:僅僅支持內連接
sql99標準(推薦):支持內連接+外連接(左外和右外)+交叉連接
按功能分類:
內連接:
等值連接
非等值連接
自連接
外連接:
左外連接
右外連接
全外連接
交叉連接
3.笛卡爾積(笛卡爾乘積)
? 產生條件:
1.省略連接條件
2.連接條件無效
3.所有表中所有行互相連接
? 解決辦法:
添加有效的篩選條件
4.內連接
* SQL92語法:
SELECT 查詢串列
FROM 表名1 別名1 ,表名2 別名2
WHERE 連接條件
AND 篩選條件
GROUP BY 分組串列
HAVING 分組后篩選條件
ORDER BY 排序串列
* SQL99語法:
select 欄位串列
from 表名1
[inner] join 表名2 on 條件
where 篩選條件
group by 分組條件
having 分組后的篩選條件
order by 排序欄位
* 注意:
? 使用表名前綴在多個表中區分相同的列
? 在不同表中具有相同列名的列可以用表的別名加以區分
? 如果使用了表別名,則在select陳述句中需要使用表別名代替表名
? 表別名最多支持32個字符長度,但建議越少越好
5.外連接
? 左外連接(兩表交集部分,和左表的非交集部分)
* 語法:
select 欄位串列
from 表1
left [outer] join 表2 on 條件
...
* 注意:
左外連接查詢的是左表所有資料以及其交集部分
-------------------------------------------------------------------------
? 右外連接(兩表交集部分,和右表的非交集部分)
* 語法:
select 欄位串列
from 表1
right [outer] join 表2 on 條件
...
* 注意:
右外連接查詢的是右表所有資料以及其交集部分
----------------------------------------------------------------------------
? 全外連接(mysql不支持):兩個表的全部(表a表b的交際部分,和非交集部分)
6.交叉連接
含義:使用99語法標準實作的笛卡爾乘積
十二、子查詢
1.介紹
含義:
1.出現在其他陳述句中的select陳述句,稱為子查詢或內查詢
2.外部的查詢陳述句,稱為主查詢或外查詢
2.分類
? 按子查詢出現的位置:
● select后面:
僅僅支持標量子查詢
● from后面:
支持表子查詢
● where或having后面:(常用)
標量子查詢(單行子查詢)(常用)
列子查詢 (多行子查詢)(常用)
行子查詢
● exists后面(相關子查詢)
表子查詢
? 按結果集的行列數不同:
● 標量子查詢(結果集只有一行一列)
● 列子查詢(結果集只有一列多行)
● 行子查詢(結果集有一行多列)
● 表子查詢(結果集一般為多行多列)
3.where或having后面
where或having后面:
? 標量子查詢(單行子查詢)
? 列子查詢(多行子查詢)
? 行子查詢(多列多行)
特點:
? 子查詢放在小括號內
? 子查詢一般放在條件的右側
? 標量子查詢,一般搭配單行運算子使用
> < >= <= = <>
? 列子查詢,一般搭配多行運算子使用
in、any/some、all
? 子查詢的執行優先于主查詢執行,主查詢的條件用到了子查詢的結果
4.select后面
select后面:
僅僅支持標量子查詢
5.from后面
from后面:
將子查詢結果沖到一張表,要求必須起別名
6.exists后面(相關子查詢)
語法:
exists(完整的查詢陳述句)
結果:
1(存在)或0(不存在)
十三、分頁查詢
1.介紹(1-9為執行順序)
應用場景:當要顯示的資料,一頁顯示不全,需要分頁提交sql請求
語法:
select 查詢串列 7
from 表 1
【join type jion表2 2
on 連接條件 3
where 篩選條件 4
group by 分組欄位 5
having 分組后篩選 6
order by 排序的欄位】 8
limit offset,size; 9
offset 要顯示條目的起始索引(起始索引從0開始)
size 要顯示的條目個數
2.特點
? limit陳述句放在查詢陳述句的最后
? 公式:
要顯示的頁數page,每頁的條目數size
select 查詢串列
from 表
limit (page-1)*size,size;
十四、聯合查詢
1.介紹
union 聯合 合并:將多條查詢陳述句的結果合并成一個結果
語法:
查詢陳述句1
union
查詢陳述句2
union
.........
應用場景:
要查詢的結果來自于多個表,且多個表沒有直接的連接關系,但查詢的資訊一致時
2.特點
特點:
? 要求多條查詢陳述句的查詢列數時一致的
? 要求多個查詢陳述句的查詢的每一列的型別和順序最好一致
? union關鍵字默認去重,如果使用union all 可以包含重復項
十五、預祝元旦快樂
作為純小白(非計算機專業)學java已經是4個多月了,很感謝自己的堅持,我從一竅不通到漸漸地覺得學習編程并不是那么難,甚至還自大的感覺自己有點入門了- - 學起來不那么吃力,但依然是枯燥的,現在主要是克服惰性,也希望大家也都能堅持住,一起加油!
元旦左右不一定會更新,最后預祝大家元旦快樂,心想事成!!

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/395104.html
標籤:java
上一篇:Redis常用資料結構及應用場景
