sql筆記 P1-P38

##本單元目標

一探赫、為什么要學(xué)習(xí)數(shù)據(jù)庫

二、數(shù)據(jù)庫的相關(guān)概念? ? ?

DBMS撬呢、DB伦吠、SQL

三、數(shù)據(jù)庫存儲數(shù)據(jù)的特點

四魂拦、初始MySQL

MySQL產(chǎn)品的介紹? ? ? ?

MySQL產(chǎn)品的安裝? ? ? ? ? ★? ? ? ?

MySQL服務(wù)的啟動和停止? ? ★

MySQL服務(wù)的登錄和退出? ? ★? ? ?

MySQL的常見命令和語法規(guī)范? ? ?

五毛仪、DQL語言的學(xué)習(xí)? ★? ? ? ? ? ? ?

基礎(chǔ)查詢? ? ? ? ★? ? ? ? ? ?

條件查詢? ? ★

排序查詢? ? ★

常見函數(shù)? ? ? ? ★? ? ? ? ? ? ?

分組函數(shù)? ? ? ? ★? ? ? ? ? ? ?

分組查詢 ? ★

連接查詢 ★

子查詢? ? ? √? ? ? ? ? ? ? ? ?

分頁查詢? ? ? ★? ? ? ? ? ? ?

union聯(lián)合查詢 √

六、DML語言的學(xué)習(xí)? ? ★? ? ? ? ? ?

插入語句

修改語句

刪除語句

七芯勘、DDL語言的學(xué)習(xí)?

庫和表的管理 √

常見數(shù)據(jù)類型介紹? √? ? ? ? ?

常見約束? ? √

八箱靴、TCL語言的學(xué)習(xí)

事務(wù)和事務(wù)處理? ? ? ? ? ? ? ?

九、視圖的講解? ? ? ? ? √

十荷愕、變量? ? ? ? ? ? ? ? ? ? ?

十一衡怀、存儲過程和函數(shù)?

十二、流程控制結(jié)構(gòu)? ? ?

##數(shù)據(jù)庫的好處

1.持久化數(shù)據(jù)到本地

2.可以實現(xiàn)結(jié)構(gòu)化查詢安疗,方便管理

##數(shù)據(jù)庫相關(guān)概念

1抛杨、DB:數(shù)據(jù)庫,保存一組有組織的數(shù)據(jù)的容器

2荐类、DBMS:數(shù)據(jù)庫管理系統(tǒng)怖现,又稱為數(shù)據(jù)庫軟件(產(chǎn)品),用于管理DB中的數(shù)據(jù)

3玉罐、SQL:結(jié)構(gòu)化查詢語言屈嗤,用于和DBMS通信的語言

##數(shù)據(jù)庫存儲數(shù)據(jù)的特點

1、將數(shù)據(jù)放到表中吊输,表再放到庫中

2饶号、一個數(shù)據(jù)庫中可以有多個表,每個表都有一個的名字璧亚,用來標識自己讨韭。表名具有唯一性。

3癣蟋、表具有一些特性透硝,這些特性定義了數(shù)據(jù)在表中如何存儲,類似java中 “類”的設(shè)計疯搅。

4濒生、表由列組成,我們也稱為字段幔欧。所有表都是由一個或多個列組成的罪治,每一列類似java 中的”屬性”

5丽声、表中的數(shù)據(jù)是按行存儲的,每一行類似于java中的“對象”觉义。

##MySQL產(chǎn)品的介紹和安裝

###MySQL服務(wù)的啟動和停止

方式一:計算機——右擊管理——服務(wù)

方式二:通過管理員身份運行

net start 服務(wù)名(啟動服務(wù))

net stop 服務(wù)名(停止服務(wù))

###MySQL服務(wù)的登錄和退出?

方式一:通過mysql自帶的客戶端

只限于root用戶

方式二:通過windows自帶的客戶端

登錄:

mysql 【-h主機名 -P端口號 】-u用戶名 -p密碼

退出:

exit或ctrl+C

###MySQL的常見命令

1.查看當(dāng)前所有的數(shù)據(jù)庫

show databases;

2.打開指定的庫

use 庫名

3.查看當(dāng)前庫的所有表

show tables;

4.查看其它庫的所有表

show tables from 庫名;

5.創(chuàng)建表

create table 表名(

列名 列類型,

列名 列類型雁社,

。晒骇。霉撵。

);

6.查看表結(jié)構(gòu)

desc 表名;

7.查看服務(wù)器的版本

方式一:登錄到mysql服務(wù)端

select version();

方式二:沒有登錄到mysql服務(wù)端

mysql --version

mysql --V

###MySQL的語法規(guī)范

1.不區(qū)分大小寫,但建議關(guān)鍵字大寫,表名洪囤、列名小寫

2.每條命令最好用分號結(jié)尾

3.每條命令根據(jù)需要徒坡,可以進行縮進 或換行

4.注釋

單行注釋:#注釋文字

單行注釋:-- 注釋文字

多行注釋:/* 注釋文字? */

###SQL的語言分類

DQL(Data Query Language):數(shù)據(jù)查詢語言

select

DML(Data Manipulate Language):數(shù)據(jù)操作語言

insert 、update瘤缩、delete

DDL(Data Define Languge):數(shù)據(jù)定義語言

create喇完、drop、alter

TCL(Transaction Control Language):事務(wù)控制語言

commit剥啤、rollback

###SQL的常見命令

show databases锦溪; 查看所有的數(shù)據(jù)庫

use 庫名; 打開指定 的庫

show tables ; 顯示庫中的所有表

show tables from 庫名;顯示指定庫中的所有表

create table 表名(

字段名 字段類型,

字段名 字段類型

); 創(chuàng)建表

desc 表名; 查看指定表的結(jié)構(gòu)

select * from 表名;顯示表中的所有數(shù)據(jù)

##DQL語言的學(xué)習(xí)

###進階1:基礎(chǔ)查詢

語法:

SELECT 要查詢的東西

【FROM 表名】;

類似于Java中 :System.out.println(要打印的東西);

特點:

①通過select查詢完的結(jié)果 铐殃,是一個虛擬的表格海洼,不是真實存在

② 要查詢的東西 可以是常量值、可以是表達式富腊、可以是字段坏逢、可以是函數(shù)

###進階2:條件查詢

條件查詢:根據(jù)條件過濾原始表的數(shù)據(jù),查詢到想要的數(shù)據(jù)

語法:

select

要查詢的字段|表達式|常量值|函數(shù)

from

where

條件 ;

分類:

一赘被、條件表達式

示例:salary>10000

條件運算符:

> < >= <= = != <>

二是整、邏輯表達式

示例:salary>10000 && salary<20000

邏輯運算符:

and(&&):兩個條件如果同時成立,結(jié)果為true民假,否則為false

or(||):兩個條件只要有一個成立浮入,結(jié)果為true,否則為false

not(!):如果條件成立羊异,則not后為false事秀,否則為true

三、模糊查詢

示例:last_name like 'a%'

###進階3:排序查詢

語法:

select

要查詢的東西

from

where

條件

order by 排序的字段|表達式|函數(shù)|別名 【asc|desc】

###進階4:常見函數(shù)

一野舶、單行函數(shù)

1易迹、字符函數(shù)

concat拼接

substr截取子串

upper轉(zhuǎn)換成大寫

lower轉(zhuǎn)換成小寫

trim去前后指定的空格和字符

ltrim去左邊空格

rtrim去右邊空格

replace替換

lpad左填充

rpad右填充

instr返回子串第一次出現(xiàn)的索引

length 獲取字節(jié)個數(shù)

2、數(shù)學(xué)函數(shù)

round 四舍五入

rand 隨機數(shù)

floor向下取整

ceil向上取整

mod取余

truncate截斷

3平道、日期函數(shù)

now當(dāng)前系統(tǒng)日期+時間

curdate當(dāng)前系統(tǒng)日期

curtime當(dāng)前系統(tǒng)時間

str_to_date 將字符轉(zhuǎn)換成日期

date_format將日期轉(zhuǎn)換成字符

4睹欲、流程控制函數(shù)

if 處理雙分支

case語句 處理多分支

情況1:處理等值判斷

情況2:處理條件判斷

5、其他函數(shù)

version版本

database當(dāng)前庫

user當(dāng)前連接用戶

二、分組函數(shù)

sum 求和

max 最大值

min 最小值

avg 平均值

count 計數(shù)

特點:

1窘疮、以上五個分組函數(shù)都忽略null值袋哼,除了count(*)

2、sum和avg一般用于處理數(shù)值型

max闸衫、min涛贯、count可以處理任何數(shù)據(jù)類型

? ? 3、都可以搭配distinct使用蔚出,用于統(tǒng)計去重后的結(jié)果

4疫蔓、count的參數(shù)可以支持:

字段、*身冬、常量值,一般放1

? 建議使用 count(*)

##進階5:分組查詢

語法:

select 查詢的字段岔乔,分組函數(shù)

from 表

group by 分組的字段

特點:

1酥筝、可以按單個字段分組

2、和分組函數(shù)一同查詢的字段最好是分組后的字段

3雏门、分組篩選

針對的表 位置 關(guān)鍵字

分組前篩選: 原始表 group by的前面 where

分組后篩選: 分組后的結(jié)果集 group by的后面 having

4嘿歌、可以按多個字段分組,字段之間用逗號隔開

5茁影、可以支持排序

6宙帝、having后可以支持別名

##進階6:多表連接查詢

笛卡爾乘積:如果連接條件省略或無效則會出現(xiàn)

解決辦法:添加上連接條件

一、傳統(tǒng)模式下的連接 :等值連接——非等值連接

1.等值連接的結(jié)果 = 多個表的交集

2.n表連接募闲,至少需要n-1個連接條件

3.多個表不分主次步脓,沒有順序要求

4.一般為表起別名,提高閱讀性和性能

二浩螺、sql99語法:通過join關(guān)鍵字實現(xiàn)連接

含義:1999年推出的sql語法

支持:

等值連接靴患、非等值連接 (內(nèi)連接)

外連接

交叉連接

語法:

select 字段,...

from 表1

【inner|left outer|right outer|cross】join 表2 on? 連接條件

【inner|left outer|right outer|cross】join 表3 on? 連接條件

【where 篩選條件】

【group by 分組字段】

【having 分組后的篩選條件】

【order by 排序的字段或表達式】

好處:語句上要出,連接條件和篩選條件實現(xiàn)了分離,簡潔明了!

三负敏、自連接

案例:查詢員工名和直接上級的名稱

sql99

SELECT e.last_name,m.last_name

FROM employees e

JOIN employees m ON e.`manager_id`=m.`employee_id`;

sql92

SELECT e.last_name,m.last_name

FROM employees e,employees m

WHERE e.`manager_id`=m.`employee_id`;

##進階7:子查詢

含義:

一條查詢語句中又嵌套了另一條完整的select語句霞掺,其中被嵌套的select語句,稱為子查詢或內(nèi)查詢

在外面的查詢語句传于,稱為主查詢或外查詢

特點:

1囱挑、子查詢都放在小括號內(nèi)

2、子查詢可以放在from后面格了、select后面看铆、where后面、having后面盛末,但一般放在條件的右側(cè)

3弹惦、子查詢優(yōu)先于主查詢執(zhí)行否淤,主查詢使用了子查詢的執(zhí)行結(jié)果

4、子查詢根據(jù)查詢結(jié)果的行數(shù)不同分為以下兩類:

① 單行子查詢

結(jié)果集只有一行

一般搭配單行操作符使用:> < = <> >= <=

非法使用子查詢的情況:

a棠隐、子查詢的結(jié)果為一組值

b石抡、子查詢的結(jié)果為空

② 多行子查詢

結(jié)果集有多行

一般搭配多行操作符使用:any、all助泽、in啰扛、not in

in: 屬于子查詢結(jié)果中的任意一個就行

any和all往往可以用其他查詢代替

##進階8:分頁查詢

應(yīng)用場景:

實際的web項目中需要根據(jù)用戶的需求提交對應(yīng)的分頁查詢的sql語句

語法:

select 字段|表達式,...

from 表

【where 條件】

【group by 分組字段】

【having 條件】

【order by 排序的字段】

limit 【起始的條目索引,】條目數(shù);

特點:

1.起始條目索引從0開始

2.limit子句放在查詢語句的最后

3.公式:select * from? 表 limit (page-1)*sizePerPage,sizePerPage

假如:

每頁顯示條目數(shù)sizePerPage

要顯示的頁數(shù) page

##進階9:聯(lián)合查詢

引入:

union 聯(lián)合嗡贺、合并

語法:

select 字段|常量|表達式|函數(shù) 【from 表】 【where 條件】 union 【all】

select 字段|常量|表達式|函數(shù) 【from 表】 【where 條件】 union 【all】

select 字段|常量|表達式|函數(shù) 【from 表】 【where 條件】 union? 【all】

.....

select 字段|常量|表達式|函數(shù) 【from 表】 【where 條件】

特點:

1隐解、多條查詢語句的查詢的列數(shù)必須是一致的

2、多條查詢語句的查詢的列的類型幾乎相同

3诫睬、union代表去重煞茫,union all代表不去重

##DML語言

###插入

語法:

insert into 表名(字段名,...)

values(值1摄凡,...);

特點:

1续徽、字段類型和值類型一致或兼容,而且一一對應(yīng)

2亲澡、可以為空的字段钦扭,可以不用插入值,或用null填充

3床绪、不可以為空的字段客情,必須插入值

4、字段個數(shù)和值的個數(shù)必須一致

5癞己、字段可以省略裹匙,但默認所有字段,并且順序和表中的存儲順序一致

###修改

修改單表語法:

update 表名 set 字段=新值,字段=新值

【where 條件】

修改多表語法:

update 表1 別名1,表2 別名2

set 字段=新值末秃,字段=新值

where 連接條件

and 篩選條件

###刪除

方式1:delete語句

單表的刪除: ★

delete from 表名 【where 篩選條件】

多表的刪除:

delete 別名1概页,別名2

from 表1 別名1,表2 別名2

where 連接條件

and 篩選條件;

方式2:truncate語句

truncate table 表名

兩種方式的區(qū)別【面試題】

#1.truncate不能加where條件练慕,而delete可以加where條件

#2.truncate的效率高一丟丟

#3.truncate 刪除帶自增長的列的表后惰匙,如果再插入數(shù)據(jù),數(shù)據(jù)從1開始

#delete 刪除帶自增長列的表后铃将,如果再插入數(shù)據(jù)项鬼,數(shù)據(jù)從上一次的斷點處開始

#4.truncate刪除不能回滾,delete刪除可以回滾

##DDL語句

###庫和表的管理

庫的管理:

一劲阎、創(chuàng)建庫

create database 庫名

二绘盟、刪除庫

drop database 庫名

表的管理:

#1.創(chuàng)建表

CREATE TABLE IF NOT EXISTS stuinfo(

stuId INT,

stuName VARCHAR(20),

gender CHAR,

bornDate DATETIME

);

DESC studentinfo;

#2.修改表 alter

語法:ALTER TABLE 表名 ADD|MODIFY|DROP|CHANGE COLUMN 字段名 【字段類型】;

#①修改字段名

ALTER TABLE studentinfo CHANGE? COLUMN sex gender CHAR;

#②修改表名

ALTER TABLE stuinfo RENAME [TO]? studentinfo;

#③修改字段類型和列級約束

ALTER TABLE studentinfo MODIFY COLUMN borndate DATE ;

#④添加字段

ALTER TABLE studentinfo ADD COLUMN email VARCHAR(20) first;

#⑤刪除字段

ALTER TABLE studentinfo DROP COLUMN email;

#3.刪除表

DROP TABLE [IF EXISTS] studentinfo;

###常見類型

整型:

小數(shù):

浮點型

定點型

字符型:

日期型:

Blob類型:

###常見約束

NOT NULL

DEFAULT

UNIQUE

CHECK

PRIMARY KEY

FOREIGN KEY

##數(shù)據(jù)庫事務(wù)

###含義

通過一組邏輯操作單元(一組DML——sql語句),將數(shù)據(jù)從一種狀態(tài)切換到另外一種狀態(tài)

###特點

(ACID)

原子性:要么都執(zhí)行,要么都回滾

一致性:保證數(shù)據(jù)的狀態(tài)操作前和操作后保持一致

隔離性:多個事務(wù)同時操作相同數(shù)據(jù)庫的同一個數(shù)據(jù)時龄毡,一個事務(wù)的執(zhí)行不受另外一個事務(wù)的干擾

持久性:一個事務(wù)一旦提交吠卷,則數(shù)據(jù)將持久化到本地,除非其他事務(wù)對其進行修改

相關(guān)步驟:

1沦零、開啟事務(wù)

2祭隔、編寫事務(wù)的一組邏輯操作單元(多條sql語句)

3、提交事務(wù)或回滾事務(wù)

###事務(wù)的分類:

隱式事務(wù)路操,沒有明顯的開啟和結(jié)束事務(wù)的標志

比如

insert疾渴、update、delete語句本身就是一個事務(wù)

顯式事務(wù)屯仗,具有明顯的開啟和結(jié)束事務(wù)的標志

1搞坝、開啟事務(wù)

取消自動提交事務(wù)的功能

2、編寫事務(wù)的一組邏輯操作單元(多條sql語句)

insert

update

delete

3魁袜、提交事務(wù)或回滾事務(wù)

###使用到的關(guān)鍵字

set autocommit=0;

start transaction;

commit;

rollback;

savepoint? 斷點

commit to 斷點

rollback to 斷點

###事務(wù)的隔離級別:

事務(wù)并發(fā)問題如何發(fā)生瞄沙?

當(dāng)多個事務(wù)同時操作同一個數(shù)據(jù)庫的相同數(shù)據(jù)時

事務(wù)的并發(fā)問題有哪些?

臟讀:一個事務(wù)讀取到了另外一個事務(wù)未提交的數(shù)據(jù)

不可重復(fù)讀:同一個事務(wù)中慌核,多次讀取到的數(shù)據(jù)不一致

幻讀:一個事務(wù)讀取數(shù)據(jù)時,另外一個事務(wù)進行更新申尼,導(dǎo)致第一個事務(wù)讀取到了沒有更新的數(shù)據(jù)

如何避免事務(wù)的并發(fā)問題垮卓?

通過設(shè)置事務(wù)的隔離級別

1、READ UNCOMMITTED

2师幕、READ COMMITTED 可以避免臟讀

3粟按、REPEATABLE READ 可以避免臟讀、不可重復(fù)讀和一部分幻讀

4霹粥、SERIALIZABLE可以避免臟讀灭将、不可重復(fù)讀和幻讀

設(shè)置隔離級別:

set session|global? transaction isolation level 隔離級別名;

查看隔離級別:

select @@tx_isolation;

##視圖

含義:理解成一張?zhí)摂M的表

視圖和表的區(qū)別:

使用方式 占用物理空間

視圖 完全相同 不占用,僅僅保存的是sql邏輯

表 完全相同 占用

視圖的好處:

1后控、sql語句提高重用性庙曙,效率高

2、和表實現(xiàn)了分離浩淘,提高了安全性

###視圖的創(chuàng)建

語法:

CREATE VIEW? 視圖名

AS

查詢語句;

###視圖的增刪改查

1捌朴、查看視圖的數(shù)據(jù) ★

SELECT * FROM my_v4;

SELECT * FROM my_v1 WHERE last_name='Partners';

2、插入視圖的數(shù)據(jù)

INSERT INTO my_v4(last_name,department_id) VALUES('虛竹',90);

3张抄、修改視圖的數(shù)據(jù)

UPDATE my_v4 SET last_name ='夢姑' WHERE last_name='虛竹';

4砂蔽、刪除視圖的數(shù)據(jù)

DELETE FROM my_v4;

###某些視圖不能更新

包含以下關(guān)鍵字的sql語句:分組函數(shù)、distinct署惯、group? by左驾、having、union或者union all

常量視圖

Select中包含子查詢

join

from一個不能更新的視圖

where子句的子查詢引用了from子句中的表

###視圖邏輯的更新

#方式一:

CREATE OR REPLACE VIEW test_v7

AS

SELECT last_name FROM employees

WHERE employee_id>100;

#方式二:

ALTER VIEW test_v7

AS

SELECT employee_id FROM employees;

SELECT * FROM test_v7;

###視圖的刪除

DROP VIEW test_v1,test_v2,test_v3;

###視圖結(jié)構(gòu)的查看

DESC test_v7;

SHOW CREATE VIEW test_v7;

##存儲過程

含義:一組經(jīng)過預(yù)先編譯的sql語句的集合

好處:

1、提高了sql語句的重用性诡右,減少了開發(fā)程序員的壓力

2安岂、提高了效率

3、減少了傳輸次數(shù)

分類:

1稻爬、無返回?zé)o參

2嗜闻、僅僅帶in類型,無返回有參

3桅锄、僅僅帶out類型琉雳,有返回?zé)o參

4、既帶in又帶out友瘤,有返回有參

5翠肘、帶inout,有返回有參

注意:in辫秧、out束倍、inout都可以在一個存儲過程中帶多個

###創(chuàng)建存儲過程

語法:

create procedure 存儲過程名(in|out|inout 參數(shù)名? 參數(shù)類型,...)

begin

存儲過程體

end

類似于方法:

修飾符 返回類型 方法名(參數(shù)類型 參數(shù)名,...){

方法體;

}

注意

1、需要設(shè)置新的結(jié)束標記

delimiter 新的結(jié)束標記

示例:

delimiter $

CREATE PROCEDURE 存儲過程名(IN|OUT|INOUT 參數(shù)名? 參數(shù)類型,...)

BEGIN

sql語句1;

sql語句2;

END $

2盟戏、存儲過程體中可以有多條sql語句绪妹,如果僅僅一條sql語句,則可以省略begin end

3柿究、參數(shù)前面的符號的意思

in:該參數(shù)只能作為輸入 (該參數(shù)不能做返回值)

out:該參數(shù)只能作為輸出(該參數(shù)只能做返回值)

inout:既能做輸入又能做輸出

#調(diào)用存儲過程

call 存儲過程名(實參列表)

##函數(shù)

###創(chuàng)建函數(shù)

學(xué)過的函數(shù):LENGTH邮旷、SUBSTR、CONCAT等

語法:

CREATE FUNCTION 函數(shù)名(參數(shù)名 參數(shù)類型,...) RETURNS 返回類型

BEGIN

函數(shù)體

END

###調(diào)用函數(shù)

SELECT 函數(shù)名(實參列表)

###函數(shù)和存儲過程的區(qū)別

關(guān)鍵字 調(diào)用語法 返回值 應(yīng)用場景

函數(shù) FUNCTION SELECT 函數(shù)() 只能是一個 一般用于查詢結(jié)果為一個值并返回時蝇摸,當(dāng)有返回值而且僅僅一個

存儲過程 PROCEDURE CALL 存儲過程() 可以有0個或多個 一般用于更新

##流程控制結(jié)構(gòu)

###系統(tǒng)變量

一婶肩、全局變量

作用域:針對于所有會話(連接)有效,但不能跨重啟

查看所有全局變量

SHOW GLOBAL VARIABLES;

查看滿足條件的部分系統(tǒng)變量

SHOW GLOBAL VARIABLES LIKE '%char%';

查看指定的系統(tǒng)變量的值

SELECT @@global.autocommit;

為某個系統(tǒng)變量賦值

SET @@global.autocommit=0;

SET GLOBAL autocommit=0;

二貌夕、會話變量

作用域:針對于當(dāng)前會話(連接)有效

查看所有會話變量

SHOW SESSION VARIABLES;

查看滿足條件的部分會話變量

SHOW SESSION VARIABLES LIKE '%char%';

查看指定的會話變量的值

SELECT @@autocommit;

SELECT @@session.tx_isolation;

為某個會話變量賦值

SET @@session.tx_isolation='read-uncommitted';

SET SESSION tx_isolation='read-committed';

###自定義變量

一律歼、用戶變量

聲明并初始化:

SET @變量名=值;

SET @變量名:=值;

SELECT @變量名:=值;

賦值:

方式一:一般用于賦簡單的值

SET 變量名=值;

SET 變量名:=值;

SELECT 變量名:=值;

方式二:一般用于賦表 中的字段值

SELECT 字段名或表達式 INTO 變量

FROM 表;

使用:

select @變量名;

二、局部變量

聲明:

declare 變量名 類型 【default 值】;

賦值:

方式一:一般用于賦簡單的值

SET 變量名=值;

SET 變量名:=值;

SELECT 變量名:=值;

方式二:一般用于賦表 中的字段值

SELECT 字段名或表達式 INTO 變量

FROM 表;

使用:

select 變量名

二者的區(qū)別:

作用域 定義位置 語法

用戶變量 當(dāng)前會話 會話的任何地方 加@符號啡专,不用指定類型

局部變量 定義它的BEGIN END中 BEGIN END的第一句話 一般不用加@,需要指定類型

###分支

一险毁、if函數(shù)

語法:if(條件,值1们童,值2)

特點:可以用在任何位置

二辱揭、case語句

語法:

情況一:類似于switch

case 表達式

when 值1 then 結(jié)果1或語句1(如果是語句,需要加分號)

when 值2 then 結(jié)果2或語句2(如果是語句病附,需要加分號)

...

else 結(jié)果n或語句n(如果是語句问窃,需要加分號)

end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要)

情況二:類似于多重if

case

when 條件1 then 結(jié)果1或語句1(如果是語句完沪,需要加分號)

when 條件2 then 結(jié)果2或語句2(如果是語句域庇,需要加分號)

...

else 結(jié)果n或語句n(如果是語句嵌戈,需要加分號)

end 【case】(如果是放在begin end中需要加上case,如果放在select后面不需要)

特點:

可以用在任何位置

三听皿、if elseif語句

語法:

if 情況1 then 語句1;

elseif 情況2 then 語句2;

...

else 語句n;

end if;

特點:

只能用在begin end中J烨骸!N疽獭b殖!S掷鳌>鸥!8仓隆V堆!;吐琛@芨帷!璧诵!

三者比較:

應(yīng)用場合

if函數(shù) 簡單雙分支

case結(jié)構(gòu) 等值判斷 的多分支

if結(jié)構(gòu) 區(qū)間判斷 的多分支

###循環(huán)

語法:

【標簽:】WHILE 循環(huán)條件? DO

循環(huán)體

END WHILE 【標簽】;

特點:

只能放在BEGIN END里面

如果要搭配leave跳轉(zhuǎn)語句汰蜘,需要使用標簽,否則可以不用標簽

leave類似于java中的break語句之宿,跳出所在循環(huán)W宀佟!澈缺!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市炕婶,隨后出現(xiàn)的幾起案子姐赡,更是在濱河造成了極大的恐慌,老刑警劉巖柠掂,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件项滑,死亡現(xiàn)場離奇詭異,居然都是意外死亡涯贞,警方通過查閱死者的電腦和手機枪狂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宋渔,“玉大人州疾,你說我怎么就攤上這事』始穑” “怎么了严蓖?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵薄嫡,是天一觀的道長。 經(jīng)常有香客問我颗胡,道長毫深,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任毒姨,我火速辦了婚禮哑蔫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘弧呐。我一直安慰自己闸迷,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布泉懦。 她就那樣靜靜地躺著稿黍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪崩哩。 梳的紋絲不亂的頭發(fā)上巡球,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天,我揣著相機與錄音邓嘹,去河邊找鬼酣栈。 笑死,一個胖子當(dāng)著我的面吹牛汹押,可吹牛的內(nèi)容都是我干的矿筝。 我是一名探鬼主播,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼棚贾,長吁一口氣:“原來是場噩夢啊……” “哼窖维!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起妙痹,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤铸史,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后怯伊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體琳轿,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年耿芹,在試婚紗的時候發(fā)現(xiàn)自己被綠了崭篡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡吧秕,死狀恐怖琉闪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情砸彬,我是刑警寧澤塘偎,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布疗涉,位于F島的核電站,受9級特大地震影響吟秩,放射性物質(zhì)發(fā)生泄漏咱扣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一涵防、第九天 我趴在偏房一處隱蔽的房頂上張望闹伪。 院中可真熱鬧,春花似錦壮池、人聲如沸偏瓤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽厅克。三九已至,卻和暖如春橙依,著一層夾襖步出監(jiān)牢的瞬間证舟,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工窗骑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留女责,地道東北人。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓创译,卻偏偏與公主長得像抵知,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子软族,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容