1. 程式人生 > >SQL學習筆記(基礎部分)

SQL學習筆記(基礎部分)

SQL學習筆記

基礎部分

SQL語法

資料庫語言對大小寫不敏感,用分號分隔每條資料庫語言

SQL通用資料型別

SQL開發,在建立SQL表時要確定每個列要儲存的資料型別,每一列都需要一個列名和確定的資料型別
常見資料型別自行查詢
一些重要的SQL命令

  • select
  • update
  • delete
  • insert into
  • create database
  • alter database
  • create table
  • alter table
  • drop table
  • create index
  • drop index

SQL語句

  • select語句
select column_name,column_name from
table_name;
select * from table_name;

選取結果被儲存在一個結果表中,稱為結果集

  • select distinct語句
    一個列中可能包含重複值,select distinct用於返回唯一不同值
select distinct column_name,column_name from table_name;
  • SQL Where字句
    用於提取滿足制定標準的記錄
select column_name,column_name 
from table_name
where column_name operator value;

在where子句中可以使用=,<>,<,>,>=,<=,between,like#搜尋某種模式,in#指定針對某個列的多個可能值

  • and & or語句
    and和or結合使用(使用圓括號來組成複雜的表示式)
select * from custormers 
where country = 'Germany'
and (city = 'Berlin' or City = 'Beijing')
  • SQL order by關鍵字
    用於對結果集按照一個列或多個列進行排序,預設按升序排序,若要用降序,可以使用desc關鍵字
select column_name,column_name
from table_name
order by column_name,column_name ASC|DESC
  • SQL insert into語句
    用於向表中插入新記錄
insert into table_name
values(value1,value2,value3,...)
insert into table_name(column1,column2,column3,...)
values(value1,value2,value3,...)
#會形成新行,但只在指定列插入資料,custormid列會自動更新
  • SQL update語句
    用於更新表中的資料
update table_name
set column1=value1,column2=value2,...
where some_column=some_value
#通過where來限制更新行,缺失where語句會對整列都進行修改
  • SQL DELETE語句
    用於刪除表中的記錄
delete from table_name
where some_column = some_value
delete from table_name;
or
delete * from table_name;
#刪除表中所有資料
  • SQL select top,limit,rownum
    用於規定要返回的記錄的數目
#SQL Server / MS Access 語法
SELECT TOP number|percent column_name(s)
FROM table_name;
#MySQL 和 Oracle 中的 SQL SELECT TOP 是等價的
MySQL 語法
select column_name(s)
from table name
limit number;
#Oracle語法
select column_name(s)
from table_name
where rownum <= number;
  • SQL like 操作符
    用於在where子句中搜索列中的指定模式
select column_name(s)
from table_name
where column_name like pattern;
  • SQL 萬用字元
    萬用字元可用於代替字串中的任何其他字元,在SQL中與SQL like操作符一起使用
萬用字元 描述
% 替代一個字元
_ centered
[charlist] 字元列中的任何單一字元
[^charlist] or [!charlist] 不在字元列中的任何單一字元
# %運用
SELECT * FROM Customers
WHERE City LIKE '%es%';

#_運用
SELECT * FROM Customers
WHERE City LIKE '_erlin';

# SQL[charlist]運用 選取以a、b、c開頭的所有
SELECT * FROM Customers
WHERE City LIKE '[a-c]%';

#選取 City 不以 "b"、"s" 或 "p" 開始的所有客戶
SELECT * FROM Customers
WHERE City LIKE '[!bsp]%';
  • SQL in操作符
    允許在where字句中規定多個值
select column_name(s)
from table_name
where colunmn_name in (value1,value2,...);

select column_name(s)
from table_name
where column_name in(select column from table_w3c where ...);
  • SQL between操作符
select column_name(s)
from table_name
where colunmn_name between value1 and value2;
SELECT * FROM Products
WHERE (Price BETWEEN 10 AND 20)
AND CategoryID NOT IN (1,2,3);
  • SQL join連線
    SQL JOIN 子句用於把來自兩個或多個表的行結合起來,基於這些表之間的共同欄位。
select table1_name.column_name(s),table2_name.column_name(s)
from table1_name
inner join table2_name
on table1_name.column = table2_name.column #基於表之間的共同欄位相連線
  • INNER JOIN:如果表中有至少一個匹配,則返回行
  • LEFT JOIN:即使右表中沒有匹配,也從左表返回所有的行
  • RIGHT JOIN:即使左表中沒有匹配,也從右表返回所有的行
  • FULL outer JOIN:只要其中一個表中存在匹配,則返回行
  • SQL union
    合併兩個或多個select語句的結果
    UNION 內部的每個 SELECT 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每個 SELECT 語句中的列的順序必須相同
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;
#預設選取不同值,如果要允許重複值,使用union all
  • SQL select into
    將一個表中的資料複製到另一箇中
SELECT *
INTO newtable [IN externaldb]   #外部資料庫
FROM table1;
  • SQL insert into select
INSERT INTO Customers (CustomerName, Country)
SELECT SupplierName, Country FROM Suppliers
WHERE Country='Germany'; 

兩者的區別在於select into複製後建立一個新表,而insert select into複製後新增到一個已有的表格中