<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      mysql基礎(chǔ)

      ##數(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ù)庫中可以有多個表,每個表都有一個的名字,用來標(biāo)識自己。表名具有唯一性。
      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é)果 ,是一個虛擬的表格,不是真實存在
      ② 要查詢的東西 可以是常量值、可以是表達(dá)式、可以是字段、可以是函數(shù)

      ###進階2:條件查詢
      條件查詢:根據(jù)條件過濾原始表的數(shù)據(jù),查詢到想要的數(shù)據(jù)
      語法:
      select
      要查詢的字段|表達(dá)式|常量值|函數(shù)
      from

      where
      條件 ;

      分類:
      一、條件表達(dá)式
      示例:salary>10000
      條件運算符:
      > < >= <= = != <>

      二、邏輯表達(dá)式
      示例:salary>10000 && salary<20000

      邏輯運算符:

      and(&&):兩個條件如果同時成立,結(jié)果為true,否則為false
      or(||):兩個條件只要有一個成立,結(jié)果為true,否則為false
      not(!):如果條件成立,則not后為false,否則為true

      三、模糊查詢
      示例:last_name like 'a%'
      like
      between and
      in (in列表的值類型必須一致或兼容)
      is null (=或<>不能用于判斷null值is null或is not null 可以判斷null值)

      ###進階3:排序查詢

      語法:
      select
      要查詢的東西
      from

      where
      條件

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


      ###進階4:常見函數(shù)
      一、單行函數(shù)
      1、字符函數(shù)
      concat拼接 SELECT CONCAT(last_name,'_',first_name) 姓名 FROM employees;
      substr截取子串 SELECT SUBSTR('李莫愁愛上了陸展元',7) out_put; 注意:索引從1開始
      upper轉(zhuǎn)換成大寫 SELECT UPPER('john');
      lower轉(zhuǎn)換成小寫
      trim去前后指定的空格和字符
      ltrim去左邊空格 SELECT TRIM('aa' FROM 'aaaaaaaaa張aaaaaaaaaaaa翠山aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa') AS out_put;
      rtrim去右邊空格
      replace替換 SELECT REPLACE('周芷若周芷若周芷若周芷若張無忌愛上了周芷若','周芷若','趙敏') AS out_put;
      lpad左填充 SELECT LPAD('殷素素',2,'*') AS out_put;
      rpad右填充
      instr返回子串第一次出現(xiàn)的索引 SELECT INSTR('楊不殷六俠悔愛上了殷六俠','殷八俠') AS out_put;
      length 獲取字節(jié)個數(shù) SELECT LENGTH('john');

      2、數(shù)學(xué)函數(shù)
      round 四舍五入 SELECT ROUND(-1.55); SELECT ROUND(1.567,2);
      rand 隨機數(shù)
      floor向下取整 SELECT FLOOR(-9.99);
      ceil向上取整 SELECT CEIL(-1.02);
      mod取余 mod(a,b) : a-a/b*b
      truncate截斷 SELECT TRUNCATE(1.69999,1);
      3、日期函數(shù)
      now當(dāng)前系統(tǒng)日期+時間
      curdate當(dāng)前系統(tǒng)日期
      curtime當(dāng)前系統(tǒng)時間
      str_to_date 將字符轉(zhuǎn)換成日期 SELECT STR_TO_DATE('1998-3-2','%Y-%c-%d') AS out_put;
      date_format將日期轉(zhuǎn)換成字符 SELECT DATE_FORMAT(NOW(),'%y年%m月%d日') AS out_put;
      4、流程控制函數(shù)
      if 處理雙分支
      case語句 處理多分支
      情況1:處理等值判斷
      情況2:處理條件判斷

      SELECT salary 原始工資,department_id,
      CASE department_id
      WHEN 30 THEN salary*1.1
      WHEN 40 THEN salary*1.2
      WHEN 50 THEN salary*1.3
      ELSE salary
      END AS 新工資
      FROM employees;

      SELECT salary,
      CASE
      WHEN salary>20000 THEN 'A'
      WHEN salary>15000 THEN 'B'
      WHEN salary>10000 THEN 'C'
      ELSE 'D'
      END AS 工資級別
      FROM employees;


      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后可以支持別名

      #分組前的篩選
      #案例:查詢有獎金的每個領(lǐng)導(dǎo)手下員工的平均工資
      SELECT AVG(salary),manager_id
      FROM employees
      WHERE commission_pct IS NOT NULL
      GROUP BY manager_id;

      #分組后的篩選
      案例:查詢哪個部門的員工個數(shù)>5
      #①查詢每個部門的員工個數(shù)
      SELECT COUNT(*),department_id
      FROM employees
      GROUP BY department_id;

      #添加排序
      #案例:每個工種有獎金的員工的最高工資>6000的工種編號和最高工資,按最高工資升序
      SELECT job_id,MAX(salary) m
      FROM employees
      WHERE commission_pct IS NOT NULL
      GROUP BY job_id
      HAVING m>6000
      ORDER BY m ;


      ##進階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 排序的字段或表達(dá)式】

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


      三、自連接

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

      sql99

      SELECT e.last_name,m.last_name
      FROM employees e
      JOIN employees m ON e.`manager_id`=m.`employee_id`;

      #進階7:子查詢
      含義:出現(xiàn)在其他語句中的select語句,稱為子查詢或內(nèi)查詢
      外部的查詢語句,稱為主查詢或外查詢

      分類:
      按子查詢出現(xiàn)的位置:
      select后面:
      僅僅支持標(biāo)量子查詢
      from后面:
      支持表子查詢
      where或having后面:★
      標(biāo)量子查詢(單行) √
      列子查詢 (多行) √
      行子查詢
      exists后面(相關(guān)子查詢)
      表子查詢

      按結(jié)果集的行列數(shù)不同:
      標(biāo)量子查詢(結(jié)果集只有一行一列,只有一個值)
      列子查詢(結(jié)果集只有一列多行)
      行子查詢(結(jié)果集有一行多列)
      表子查詢(結(jié)果集一般為多行多列)

      特點:

      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往往可以用其他查詢代替

      #標(biāo)量子查詢★ 子查詢優(yōu)先于主查詢,作為著查詢的結(jié)果

      #案例1:誰的工資比 Abel 高?
      #①查詢Abel的工資
      SELECT salary
      FROM employees
      WHERE last_name = 'Abel'
      #②查詢員工的信息,滿足 salary>①結(jié)果
      SELECT *
      FROM employees
      WHERE salary>(
      SELECT salary
      FROM employees
      WHERE last_name = 'Abel'
      );
      #列子查詢(多行子查詢)★
      #案例1:返回location_id是1400或1700的部門中的所有員工姓名
      #①查詢location_id是1400或1700的部門編號
      SELECT DISTINCT department_id
      FROM departments
      WHERE location_id IN(1400,1700)
      #②查詢員工姓名,要求部門號是①列表中的某一個
      SELECT last_name
      FROM employees
      WHERE department_id <>ALL(
      SELECT DISTINCT department_id
      FROM departments
      WHERE location_id IN(1400,1700)
      );


      ##進階8:分頁查詢

      應(yīng)用場景:

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

      語法:

      select 字段|表達(dá)式,...
      from 表
      【where 條件】
      【group by 分組字段】
      【having 條件】
      【order by 排序的字段】
      limit 【起始的條目索引,】條目數(shù);

      特點:

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

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

      3.公式:
      select 查詢列表 from 表 limit (page-1)*size,size;
      limit 【offset,】size;
      offset要顯示條目的起始索引(起始索引從0開始) -->(page-1)*size
      size 要顯示的條目個數(shù)

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

      引入:
      union 聯(lián)合、合并

      語法:

      select 字段|常量|表達(dá)式|函數(shù) 【from 表】 【where 條件】 union 【all】
      select 字段|常量|表達(dá)式|函數(shù) 【from 表】 【where 條件】 union 【all】
      select 字段|常量|表達(dá)式|函數(shù) 【from 表】 【where 條件】 union 【all】
      .....
      select 字段|常量|表達(dá)式|函數(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、字段可以省略,但默認(rèn)所有字段,并且順序和表中的存儲順序一致

      ###修改

      修改單表語法:

      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:非空,用于保證該字段的值不能為空
      比如姓名、學(xué)號等
      DEFAULT:默認(rèn),用于保證該字段有默認(rèn)值
      比如性別
      PRIMARY KEY:主鍵,用于保證該字段的值具有唯一性,并且非空
      比如學(xué)號、員工編號等
      UNIQUE:唯一,用于保證該字段的值具有唯一性,可以為空
      比如座位號
      CHECK:檢查約束【mysql中不支持】
      比如年齡、性別
      FOREIGN KEY:外鍵,用于限制兩個表的關(guān)系,用于保證該字段的值必須來自于主表的關(guān)聯(lián)列的值/在從表添加外鍵約束,用于引用主表中某列的值

      主鍵(PRIMARY KEY)和唯一(UNIQUE)的對比:
      保證唯一性 是否允許為空 一個表中可以有多少個 是否允許組合
      主鍵 √ × 至多有1個 √,但不推薦
      唯一 √ √ 可以有多個 √,但不推薦

      外鍵:
      1、要求在從表設(shè)置外鍵關(guān)系
      2、從表的外鍵列的類型和主表的關(guān)聯(lián)列的類型要求一致或兼容,名稱無要求
      3、主表的關(guān)聯(lián)列必須是一個key(一般是主鍵或唯一)
      4、插入數(shù)據(jù)時,先插入主表,再插入從表
      刪除數(shù)據(jù)時,先刪除從表,再刪除主表


      #1.添加列級約束
      語法:
      直接在字段名和類型后面追加 約束類型即可。
      只支持:默認(rèn)、非空、主鍵、唯一

      主表:CREATE TABLE major(
      id INT PRIMARY KEY,
      majorName VARCHAR(20)
      );
      從表:CREATE TABLE stuinfo(
      id INT PRIMARY KEY,#主鍵
      stuName VARCHAR(20) NOT NULL UNIQUE,#非空
      gender CHAR(1) CHECK(gender='男' OR gender ='女'),#檢查
      seat INT UNIQUE,#唯一
      age INT DEFAULT 18,#默認(rèn)約束
      majorId INT REFERENCES major(id)#外鍵
      );
      #查看stuinfo中的所有索引,包括主鍵、外鍵、唯一
      SHOW INDEX FROM stuinfo;

      #2.添加表級約束
      語法:在各個字段的最下面
      【constraint 約束名】 約束類型(字段名)

      DROP TABLE IF EXISTS stuinfo;
      CREATE TABLE stuinfo(
      id INT,
      stuname VARCHAR(20),
      gender CHAR(1),
      seat INT,
      age INT,
      majorid INT,
      CONSTRAINT pk PRIMARY KEY(id),#主鍵
      CONSTRAINT uq UNIQUE(seat),#唯一鍵
      CONSTRAINT ck CHECK(gender ='男' OR gender = '女'),#檢查
      CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id)#外鍵
      );


      ##數(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ù)
      set autocommit=0;不自動提交
      start transaction;開啟(可省略)
      步驟2:編寫事務(wù)中的sql語句(select insert update delete)
      語句1;
      語句2;
      ...
      步驟3:結(jié)束事務(wù)
      commit;提交事務(wù)
      rollback;回滾事務(wù)

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

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

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


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

      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é)束標(biāo)記
      delimiter 新的結(jié)束標(biāo)記
      示例:
      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 字段名或表達(dá)式 INTO 變量
      FROM 表;

      使用:

      select @變量名;

      二、局部變量

      聲明:

      declare 變量名 類型 【default 值】;
      賦值:

      方式一:一般用于賦簡單的值
      SET 變量名=值;
      SET 變量名:=值;
      SELECT 變量名:=值;


      方式二:一般用于賦表 中的字段值
      SELECT 字段名或表達(dá)式 INTO 變量
      FROM 表;

      使用:

      select 變量名

       

      二者的區(qū)別:

      作用域 定義位置 語法
      用戶變量 當(dāng)前會話 會話的任何地方 加@符號,不用指定類型
      局部變量 定義它的BEGIN END中 BEGIN END的第一句話 一般不用加@,需要指定類型

      ###分支
      一、if函數(shù)
      語法:if(條件,值1,值2)
      特點:可以用在任何位置

      二、case語句

      語法:

      情況一:類似于switch
      case 表達(dá)式
      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中!!!!!!!!!!!!!!!


      三者比較:
      應(yīng)用場合
      if函數(shù) 簡單雙分支
      case結(jié)構(gòu) 等值判斷 的多分支
      if結(jié)構(gòu) 區(qū)間判斷 的多分支


      ###循環(huán)

      語法:


      【標(biāo)簽:】WHILE 循環(huán)條件 DO
      循環(huán)體
      END WHILE 【標(biāo)簽】;

      特點:

      只能放在BEGIN END里面

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

      leave類似于java中的break語句,跳出所在循環(huán)!!!

       

      posted @ 2021-02-28 21:17  LPJのBLOG  Views(122)  Comments(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品99一区二区三区| 无码任你躁久久久久久老妇| 在线无码午夜福利高潮视频| 2020无码专区人妻系列日韩| 国产蜜臀一区二区在线播放| 无码抽搐高潮喷水流白浆| 日韩中文字幕一二三视频| 性色av蜜臀av色欲av| 亚洲精品一区二区三区在线观看| 老女老肥熟国产在线视频| 天天做天天爱夜夜爽导航| 色偷偷www.8888在线观看| 国产成人av性色在线影院| 国产日韩av一区二区在线| 亚洲色在线V中文字幕| 亚洲日本精品一区二区| 熟女亚洲综合精品伊人久久| 乱码精品一区二区三区| 国产学生裸体无遮挡免费| 成人av午夜在线观看| 97久久精品人人澡人人爽| 午夜免费福利小电影| 欧美国产精品啪啪| 成人区人妻精品一区二区| 野外做受又硬又粗又大视频√| 国产欧美日韩免费看AⅤ视频| 国产欧美日韩另类精彩视频| 亚洲精品www久久久久久| 亚洲成av人片在www鸭子| 久久精品99国产国产精| 国产三级精品片| 亚洲AV无码秘?蜜桃蘑菇| 亚洲精品第一区二区在线| 亚洲国产精品日韩在线 | 国产精品免费第一区二区| 激情综合网激情综合| 亚洲精品tv久久久久久久久久| 无码日韩精品一区二区三区免费| 哈尔滨市| 日韩精品人妻av一区二区三区| 日本伊人色综合网|