=======================================
T-sql中的條件表達式和邏輯運算符
=======================================————溫故而知新————
常量:表示單個指定數據值的符號。一個常量由一個或多個字母、數字字母組成,字母和datatime需要用引
號括起來,而二進制字符串和數字常量則不需要。
比較運算符:=
>
<
>=
<=
<> 不等於
! 非
———————————————————-
一元運算符:+
-
~ 補數運算符
———————————————————-
表達式: 示例:price>100
name like ‘pita’
grade <> ‘fail’
———————————————————-
通配符: ‘’ 表示一個字符 例如:select meal_code from meal where meal_code like ‘c’
% 表示任意長度字符串:例如:select meal_code from meal where meal_code like ‘co_%’
[] 表示括號中所指定範圍內的一個字符
例如:select * from flight where aircraft_code like ‘9w0[1-2]’
[^] 表示不在括號中所指定範圍內的任意一個字符
例如:select * from flight where aircraft_code like ‘9w0[^1-2]’
邏輯運算符:
AND:AND連接兩個條件,並且僅當兩上條件都爲真時才返回true
OR:OR連接兩個條件,但只要其中任一個爲真就返回true
NOT:當一個語句中使用了多個邏輯運算符時,首先求not的值,然後求and的值,最後再求or的值。
============================================
使用insert 插入數據:
語法如下:insert [into] values
jobs 表中的四個字段,第一個字段存在唯一索引,並且自動增長不必用戶添加
所以只需添加三個字段的值即可
示例:insert into jobs values(‘graphic artist’,25,100)
==============================================
===============================================
使用select into 將一個表中的數據添加到另一個表中:
語法如下:insert SELECT from
例:create table author_details(au_id varchar(11),au_lname varchar(40))
go
insert author_details select authors.au_id,authors.au_lname from authors
還可以將一個表中的數據有選擇性地添加到另一個表
insert into sales(stor_id) select stor_id from stores
INSERT INTO sales(stor_id) SELECT stor_id FROM stores
更新表中的數據:
update set
注意:當update 命令不包含條件時,將更新所有行。
———————————–重點內容
使用聯接信息更新:可以使用來自兩個不同表的數據來更改數據。這可以通過聯接來實現。聯接根據表之
間的邏輯關係檢索來自兩個或多個表的數據。典型的聯接指定表之間的外鍵關係。它通過以下方式
定義查詢中兩個表之間的聯繫方式。
× 指定聯接用到的每一個表的列。典型的聯接指定一個表的外鍵以及在另一個表上的關聯鍵
× 指定用於比較列值的邏輯運算符,如=,<>
表聯接的類型有三種:
× 內聯接: 內聯接中,僅當來自兩個表的行的公共列匹配時,纔會組合相應的記錄並添加到查詢
結果中。
× 外聯接:外聯接中只要行滿足select 語句中任何where或having子句的搜索條件,則返回
from 子句中提及的至少一個表的所有行。
left outer join:左外聯接返回左表中的所有記錄,但返返回右表中的匹配記錄。
right outer join:右外聯接返回右表中的所有記錄,但僅返回左表中的匹配記錄。
因爲外聯接包括不匹配行,可以利用外聯接查找違反外鍵約束的行。爲此,需要先
創建外聯接,然後添加搜索條件,以查找最右邊表的主鍵列是空值的行。例如,下
面的外聯接在 employee 表中查找在 jobs 表中沒有對應行的行:
SELECT employee.emp_id, employee.job_id
FROM employee LEFT OUTER JOIN jobs
ON employee.job_id = jobs.job_id
WHERE (jobs.job_id IS NULL)
外聯接 甚至包括在聯接表中沒有相關行的行的聯接。可以創建外聯接的三個變
化形式來指定所包括的不匹配行:
左向外聯接 包括第一個命名錶(”左”表,出現在 JOIN 子句的最左邊)中的所有行。
不包括右表中的不匹配行。例如,下面的 SQL 語句說明 titles 表和 publishers 表之
間的左向外聯接包括所有的書名,甚至包括那些沒有出版商信息的書名:
SELECT titles.title_id,
titles.title,
publishers.pub_name
FROM titles LEFT OUTER JOIN publishers
ON titles.pub_id
= publishers.pub_id
右向外聯接 包括第二個命名錶(”右”表,出現在 JOIN 子句的最右邊)中的所有行。
不包括左表中的不匹配行。例如,在 titles 和 publishers 表之間的右向外聯接將包
括所有的出版商,甚至包括那些在 titles 表中沒有書名的出版商。所得到的 SQL 可能
象下面這樣:
SELECT titles.title_id,
titles.title,
publishers.pub_name
FROM titles RIGHT OUTER JOIN publishers
ON titles.pub_id = publishers.pub_id
完整外部聯接 包括所有聯接表中的所有行,不論它們是否匹配。例如,titles 表和
publishers 表之間的完整外部聯接顯示所有書名和所有出版商,甚至包括那些在另一個
表中沒有匹配值的書名和出版商。
SELECT titles.title_id,
titles.title,
publishers.pub_name
FROM titles FULL OUTER JOIN publishers
ON titles.pub_id
= publishers.pub_id
× 自聯接:自聯接是一種內聯接,用於查找表中與同一表中其他記錄相關的記錄。自聯接中,表
與自身進行聯接。
示例:tabl_a as table_alias_a join table_b as table_alias_b
on
table_alias_a.=table_alias_b.
=============================================
刪除數據:
刪除表中所有數據:delete from table_name where state=’ca’
如不給出條件將會刪除表中所有數據。
使用truncate table刪除表中的所有數據:truncate table 是用於刪除表中所有行的命令。功能上
它類似於沒有where 子句的delete 語句。但truncate table比delete 執行速度快,而且使用
的系統資源和事務日誌資源更少。
雖然truncate table刪除表中的所有行,但是表的結構、列、約束、索引等不會被改動。
truncate table不能用於有外鍵約束引用的表,這種情況下,需要使用不帶where子句的
delete 語句。