SQL 語言基礎詳解2

2021-09-21 18:30:48 字數 4065 閱讀 3462

dql 語言

1 編寫基本 select 語句

select 語句的作用是從資料庫中返回資訊。

1.1select 語句作用

1.1.1列選擇(投影操作)

能夠使用 select 語句的列選擇功能選擇表中的列,這些列是我們想要用查詢返回 的。當我們查詢時,可在選擇查詢的表中指定的列。

1.1.2行選擇(選擇操作)

能夠使用 select 語句的行選擇功能選擇表中的行,這些行是我們想要用查詢返回 的。能夠使用不同的標準限制所看見的行。

1.1.3連線(多表操作)

能夠使用 select 語句的連線功能來集合資料,這些資料雖然被儲存在不同的表中, 但是我們可以通過連線查詢到該資料。

1.2select 語句基本結構

select*|fromtable; select 確定哪些列。 from 確定哪張表。

1.2.1基本 select 語句

在最簡單的形式中,select 語句必須包含下面的內容: 乙個 select 子句,指定被顯示的列 乙個 from 子句,指定表,該錶包含 select 子句中的字段列表

1.2.2在語法中

select 是乙個或多個欄位的列表 * 選擇所有的列 distinct 關鍵字表示禁止重複 column|expression 選擇指定的字段或表示式 alias 給所選擇的列不同的標題 fromtable 指定包含列的表

1.3選擇操作(投影操作)

1.3.1選擇所有列

select*fromtable;

1.3.2選擇指定的列

selectcolumnname,columnname fromtable;

1.4sql 語句語法要求

•sql 語句對大小寫不敏感 •sql 語句可以寫成一行或多行 • 關鍵字不能簡寫或分開折行 • 子句通常放在不同的行 • 縮排用於增強可讀性

1.5select 語句中的算術表示式

用算術運算子建立數字和日期資料的表示式。(±*/) 注意:如果對日期進行計算,我們只能對 date 和 timestamp 資料型別使用加和 減操作。

1.5.1運算子的優先順序

• 乘法和除法比加法和減法的優先順序高 • 相同優先順序的運算子從左到右計算 • 圓括號用於強制優先計算,並且使語句更清晰

1.5.2示例

計算 employees 表中的員工全年薪水加 100 以後的薪水是多少? select employee_id , first_name ,salary *12 +100 from employees;

計算 employees 表中的員工薪水加 100 以後的全年薪水是多少? select employee_id,first_name ,(salary+100)*12 from employees;

1.6定義空值

空值是乙個未分配的、未知的,或不適用的值 空值不是 0,也不是空格

1.6.1空值

如果一行中的某個列缺少資料值,該值被置為空值。空值和 0 或者空格不相同。0 是 乙個數字,而空格是乙個字元。任何資料型別的列都可以包含空值。可是,某些約束,如, notnull 和 primarykey,防止在列中使用空。

1.6.2算術表示式中的空值

包含空值的算術表示式計算結果為空。

1.6.3示例

select last_name ,12salarycommission_pct from employees;

1.7定義列別名

列別名: • 改變列標題的名字 • 緊跟在列名後面 – 在列名和別名之間可以有選項 as 關鍵字 • 如果別名中包含有空格、或者特殊字元、或者大小寫敏感,要求用雙引號

在 select 列表中的列名後面指定別名,列名和別名之間用空格分開。預設情況下, 別名標題用大寫字母顯示。如果別名中包含空格或者特殊字元(例如 # 或 &),或者 大小寫敏感,將別名放在雙引號 (「」) 中。

1.7.1示例

查詢 employees 表中的 last_name,commission_pct 並將佣金列名改為 comm。 方式一:select last_name ,commission_pct as comm from employees; 方式二:select last_name name ,commission_pct comm from employees;

計算所有員工的全年薪水,將列名修改」annualsalary」。 方 式 一:select last_name name ,12salary as 「annual salary」 from employees; 方式二: selectlast_namename,12salary"annualsalary"fromemployees;

1.8連字運算子

連字運算子: • 連線列或者字串到其它的列 • 用兩個豎線表示 (||) • 構造乙個字元表示式的合成列

我們能夠用連字運算子 (||) ,進行列與列之間、列與算術表示式之間或者列與常數值 之間的連線,來建立乙個字元表示式。連字運算子兩邊的列被合併成乙個單個的輸出列。

1.8.1示例

將 employees 表中的 last_name 和 job_id 合併到乙個單個的輸出列中,並且指定 列別名 employees。 select last_name || job_id as 「employee」 from employees;

1.9文字字串

文字字串是包含在 select 列表中的乙個字串,乙個數字或者乙個日期 • 日期和字元的文字字串值必須用單引號括起來 • 每個文字字串在每行輸出一次

文字字串不是列名或別名。對每個返回行列印一次。任意格式文字的文字字串能夠 被包含在查詢結果中,並且作為 select 列表中的列處理。日期和字元文字 必須 放在單 但引號 (』』) 中;數字不需要。

1.9.1示例

顯示所有雇員的名字和工作**,使用 isa 鏈結查詢結果。列標題用 employee details。 select last_name || 』 is a 』 || job_id as 「employee details」 from employees;

1.10去除重複行

在 select 語句中用 distinct 關鍵字除去相同的行。為了在結果中除去相同的行, 在 select 子句中的 select 關鍵字後面緊跟 distinct 關鍵字。

1.10.1 示例

在 employees 表中查詢 department_id 並去除重複資料。 select distinct department_id from employees;

1.11基本 select 語句小節練習

1.11.1 在下面的語句中有 4 個編碼錯誤,你能找出他們嗎?

selectemployee_id,last_name salx12annualsalary fromemployees;

答案:1 在 employees 表中沒有 sal 列,應該是 salary。 2 乘法運算子是「*」而不是「x」。 3 如果別名中包含空格,則需要在別名兩側新增雙引號。 4 在 last_name 後少乙個逗號。

1.11.2 顯示 departments 表的結構。選擇表中的所有數

據。答案:顯示表結構: desc departments; 查詢所有資料:select * from departments;

1.11.3 建立乙個查詢,顯示每個雇員的 last name, job code, hiredate, 和 employee 號,employee 號顯示在第一列, 給 hire_date 列指定乙個別名 startdate 。

答案:selectemployee_id,last_name,job_id,hire_date startdatefrom employees;

1.11.4 建立乙個查詢從 employees 表中顯示唯一的工作

**。答案:select distinct job_id from employees;

1.11.5 顯示 last_name,用 job_id 連線,用逗號和空格分開, 用 employeeandtitle 作為列名。

答案:select last_name || ', 』 ||job_id from employees;

SQL語言基礎(2)

from子句指定需要進行資料查詢的表,檢視等資料來源,用逗號分隔。from子句還可以指定資料表或檢視之間的連線型別,型別取決於on子句中指定的連線條件。t sql可以支援在from子句中指定除資料表或檢視外的其他物件構成派生表。例如 select emp.員工編號,emp.員工姓名,sp.部門名稱 ...

SQL語言基礎

1.集合的操作 union 將多個查詢結果相加形成乙個結果集。將第乙個查詢中的所有行與第2個查詢中的所有行相加,並消除其中相同的行形成乙個集合。intersect 處理多個查詢結果的交集。2.新增 刪除字段 alter table user add pwd varchar2 10 alter tab...

SQL語言基礎

sql語言基礎 一 sql語言概述 sql語言 是一種結構化查詢語言,是一種用於關係式資料庫中定義和操縱資料的語言。也可以形象的 理解為使用者和資料庫進行交流的語言。被大多數關係式資料庫,如oracle,mysql資料庫所採用。二 sql語言的模式與物件 1 模式 模式是資料庫物件的集合,是資料庫中...