【數據庫】《SQL必知必會 4th》部分筆記

9.匯總數據

count(*) 包括空

count(name) 不包括空

?

10.分組數據

group by 分組

having 過濾分組

where 過濾行

11.子查詢

select .. from .. where in (select ...)

由內向外處理

A.子查詢過濾

作為子查詢的語句只能查詢單個列。

B.作為計算字段使用子查詢

select

cust_name,

cust_state,

(select count(*) from orders where orders.cust_id=customer.cust_id))as orders

from customers

order by cust_name;

12.聯結

A.cross join(叉連接)

沒有where的話,會返回笛卡爾積。

B.inner join(內連接)首選。

連接處理耗費資源,連接的表越多,性能下降越厲害。

但是,處理連接比處理子查詢快得多。

C.self join(自連接)

D.natural join(自然連接)

E.out join(外連接)

  left join

  right join

  full outer join

注意:1).一般使用內連接

   2).總是提供連接條件,否則笛卡爾積。

   3).采用不同的連接(inner left right)條件測試,排查故障方便。

14.組合查詢(UNION)

15.插入數據

A.插入檢索出的數據(到已有的表)

  INSERT INTO

B.從一個表復制到另一個表(新表)

  SELECT INTO  

  select * into custCopy from customers

16.更新與刪除數據

A.使用update、delete一定不要忘了where!!!

B.有的update、delete需要權限。

C.一定要使用update、delete之前,要先select看看!!!

17.創建和操縱表

create table student

(

id int not null, 

name varchar(20)

);

ALTER TABLE student add age int;

ALTER TABLE student drop column age;

DROP TABLE student;

18.視圖。

A.什么使用視圖?

  1).重用sql

  2).簡化sql操作

  3).使用表的一部分而不是整個表

  4).保護數據

  5).更改數據格式和表示。

  視圖可以返回與底層表的表示和格式不同的數據。

B.視圖規則與限制

C.創建視圖

CREATE VIEW studentView as (select ...)

  1)簡化復雜連接

  2)格式化檢索出的數據

  3)過濾不想要的數據

19.存儲過程。

A.簡介

  一些復雜的操作需要多條語句才能完成。

  可將其視為批文件,雖然他們的作用不僅限于批處理。

B.為什么?

  1)通過把處理封裝在一個易用的單元中,簡化復雜的操作。

  2)由于不要求反復建立一系列處理步驟,保證了數據的一致性。防止錯誤。步驟越多,出錯的可能性越大。

    如果所有開發人員都是用同一存儲過程,則所使用的代碼都是相同的。

  3)簡化對變動的管理。安全性。

  4)存儲過程通常以編譯過的形式存儲,提高性能。

  5)編寫更靈活的代碼

C.好處

  簡單、安全、高性能

D.缺陷

  1)不易移植

  2)編寫存儲過程比編寫基本sql復雜,需要更高的技能,更豐富的經驗。

?

E.執行存儲過程

  EXECUTE

F.創建存儲過程

  create procedure mailingListCount(ListCount out Integer)

  is v_rows Integer;

  begin?

    select count(*) into v_rows

    from customers

    where not cust_email is null;

    ListCount :=vrows;

  end;

var ReturnValue Number

exec?mailingListCount(:ReturnValue);

select?ReturnValue;?

20.管理事務處理

事務處理是一種機制,用來管理必須成批執行的sql操作,保證數據庫不包含不完整的操作結果。

A.事務處理

事務(transaction)

回退(rollback)

提交(commit)

保留點(savepoint)

B.控制事務處理

?

21.使用游標

22.高級sql特性

(22.1)約束

  A.主鍵約束

  B.外鍵約束

    1)外鍵是表中的一列,其值必須列在靈異表的主鍵中。

    2)外鍵是保證引用完整性的及其重要部分。

    3)定義

      alter table orders?

      add constraint foreign key(cust_id)

      references customers(cust_id)

    4)外鍵有助防止意外刪除

    5)級聯刪除

  C.唯一約束

  D.檢查約束

(22.2)索引

索引用來排序數據以加快搜索和排序操作的速度。想象一本書后的索引。

可以在一個或多個列上定義索引,使DBMS保存其內容的一個“排過序”的列表。

A.索引改善查詢select操作性能,降低insert、update、delete操作性能,在執行這些操作時,DBMS必須動態更新索引。

B.索引可能占用大量存儲空間。

C.并非所有數據都適合做索引。取值不多的數據不需要索引。

D.索引用于數據過濾和數據排序。經常排序數據適合索引。

E.索引可以定義多個列。

F.用法:

create index product_name_index

on products(product_name);

G.索引必須唯一命名

H.索引效率歲數據增加而變化,過去創建的某個理想的索引經過幾個月的數據處理后可能變得不再理想。

  最好定期檢查索引,并根據需要調整更新索引。

(22.3)觸發器

觸發器是特殊的存儲過程,他在特定的數據庫活動發生時自動執行。觸發器可以與特定表上的insert、update、delete操作相關聯。

A.觸發器可以在特定操作執行之前或之后執行。

B.用途:

  1)保證數據一致

  2)基于某個表的變動在其他表上執行活動。

    比如,更新或刪除一行時將跟蹤記錄寫入某個日記表。

  3)進行額外的驗證并根據需要回退數據。

  4)計算計算列的值或更新時間戳。

C.寫法

  create trigger customer_state

  on customers for insert,update

  as update customers set....

(22.4)數據庫安全

?

?

?

?

?

 

?

轉載于:https://www.cnblogs.com/CESC4/p/8481894.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250923.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250923.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250923.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微軟認知服務應用秘籍 – 漫畫翻譯篇

概述 微軟認知服務包括了影像、語音、語言、搜索、知識五大領域,通過對這些認知服務的獨立或者組合使用,可以解決很多現實世界中的問題。作為AI小白,我們可以選擇艱難地攀登崇山峻嶺,也可以選擇像牛頓一樣站在巨人的肩膀上。本章節…

01 React初步認知、React元素、渲染、工程化

定義 react:用于構建用戶界面的 JavaScript 庫 (僅負責View層渲染、應在視圖上體現交互邏輯)vue:漸進式JavaScript 框架(MVVM) 使用 引入CDN腳本添加根容器 div #app創建React組件 ReactDOM.render Re…

node --- 在express中配置使用模板引擎(art-template)

下載依賴: npm install --save art-template express-art-template配置: // app.js const express require("express"); const app express(); app.engine("html", require("express-art-template"));使用: 例如處理瀏覽器GET請求 /students…

PAM認證機制

一、PAM簡介 Sun公司1995年開發的一種與認證相關的通用框架機制,PAM只關注如何為服務驗證用戶的API,通過提供一些動態鏈接庫和一套統一的API,將系統提供的服務和該服務的認證方式分開;PAM只是一個框架而已,自身不做認證…

02 JSX學習

使用vite處理jsx vite引入的腳本必須是ESM的 npm init -y yarn add vite package.json 添加vite命令 index.html引入jsxJSX是什么 一種標簽語法,在JS基礎上進行的語法擴展不是字符串、也不是HTML是描述UI呈現與交互的直觀的表現形式JSX被編譯后會生成React元素 &am…

使用FreeCookies 控制瀏覽器cookies及修改http響應內容

FreeCookies 插件安裝 1:您的計算機需要已經安裝Fiddler (如未安裝,請至官網下載安裝 http://docs.telerik.com/fiddler/configure-fiddler/tasks/configurefiddler) 2:進入Fiddler安裝目錄下的Scripts目錄下&#xff…

node --- 使用node連接mysql

1.確保下載了mysql,且mysql處于打開狀態. 2.確保下載了node,并成功安裝:https://nodejs.org/en/ (小黑窗 node -v 查看) 3.安裝node操作mysql的依賴包: # 命令行 npm install --save -mysql# 注:如果沒有package.json 建議先使用 npm init -y 初始化正題 // app.js// 1. 引…

03 渲染元素ReactDOM.render

React與ReactDOM是2個不同的庫,根節點內的所有內容(和DOM更新、渲染相關)由ReactDOM來管理一個React應用只有一個根節點用ReactDOM.render將React元素渲染到根節點 ReactDOM.render 參數1 React元素(React.createElement(類組件/…

javascript --- 異步按順序執行

使用promise可以很優雅的封裝一個異步函數,使其按指定順序執行: // 異步讀取文件操作 const fs require("fs"); function promiseReadFile(url) {return new Promise(function (resolve, reject) {fs.readFile(url, function(err, data) {if(err) {reject(err);} e…

web提高:負載均衡

1、集群 1、為什么建議在阿里云購買負載均衡 非常便宜,又好用,有穩定,有簡單。自己搭建不了負載均衡,因為共有云不支持組播跑不了vrp協議。你不會集群的概念,你還是蒙蒙的。2、為什么使用集群? 1、小規模 …

node --- 一個很好用的包json-server

這個第三方包,可以將json文件暴露出來,用http獲取. (data.json如下) 下載依賴: npm install --g json-server查看是否含有json-server json -sever --version啟動json-server 參考:https://www.npmjs.com/package/json-server

04 組件與Props

一些概念 組件:視圖的片段、內部管理數據集合(state)外部傳入配置結合(props)包含: 1. 視圖標記(React的JSX、Vue的template)需要經過轉換而成為真實的DOM 事件 數據 邏輯&#x…

利用ionic3進行上一行和左一行不動,中間移動的功能

首先在html中的寫法是 <ion-header><ion-navbar><ion-title>歷史數據</ion-title></ion-navbar></ion-header><ion-content ><div style"display:flex;width:625px;"><div class"head">地區</di…

05 state與setState、單向數據流

聲明周期與組件卸載 props配置&#xff1a;使用組件時傳入數據state私有數據&#xff1a;組件內部使用的數據 state的使用注意事項 必須使用setState方法來更改state多個setState會合并調用props和state更新數據要謹慎&#xff08;有可能在異步程序中更新&#xff09;setState…

HDU 3342 Legal or Not(拓撲排序)

描述 ACM-DIY is a large QQ group where many excellent acmers get together. It is so harmonious that just like a big family. Every day,many "holy cows" like HH, hh, AC, ZT, lcc, BF, Qinz and so on chat on-line to exchange their ideas. When someone…

jquery --- 阻止表單默認的提交行為,標準化表單的數據

表單如下: // .html <form id"topics_new_form" method"post" action"/topics/new"><div class"form-group"><label for"exampleInputEmail1">選擇模塊</label><selecet class"form-contr…

javascript --- spa初體驗

首先使用express創建一個簡單的服務器 創建文件夾 be-project # (確保安裝了node,并配置好了環境) 在be-project目錄下(命令行執行) npm init -y npm install --save express body-parse npm install --global nodemon// app.js const express require("express");…

vuex復習筆記

npm install vuex --save 進行安裝 vuex import Vuex from vuex 新建一個vuex文件夾&#xff08;這個不是必須的&#xff09;&#xff0c;并在文件夾下新建store.js文件&#xff0c;文件中引入我們的vue和vuex。 轉載于:https://www.cnblogs.com/jinsuo/p/8508699.html

python學習HTML之CSS(2)

1、邊框的屬性設置 PS&#xff1a;邊框的高度和寬度可以采用百分比&#xff0c;但是高度方向的百分比基本無用&#xff0c;因為基數沒定&#xff0c;參考沒意義&#xff01;&#xff01; 2、內邊距和外邊距 3、在右下角添加一個“回頂部”的標簽。 <div></div>中的…

06 事件處理函數綁定與事件對象

事件處理函數綁定 DOM事件處理 addEventListener or onclick function(){} 純小寫React元素也采用了類似DOM0標準中的事件屬性定義的方法 小駝峰 JSX <button onClick{ this.doSth }></button>直接創建React元素 React.createElement(button,{onClick: { this.…