sql 用於訪問和處理資料庫的標準計算機語言
rdbms 關係型資料庫管理系統
ANSI 美國國家標準化組織
SQL 語句對大小寫不敏感。
基礎部分
1.insert into 語句 用於向表格中插入新的行
insert into 表名稱 (列1,列2,.) values (值1,值2,.)
insert into user values("tuanzili","男")
2.update 語句 用於修改表中的數據
update 表名稱 set 列名稱 = 新值 WHERE 列名稱 = 某值
update user set sex='男' , name='tuanzili' where id= '1'
3.delete 語句 刪除表中的行
delete from 表名稱 where 列名稱 = 值
delete from user where name = 'tuanzili'
刪除所有行
delete from user = delete * from user
4.select 語句 查詢語句
select 列名稱, 列名稱 from表名稱
select *from 表名稱
select name,sex from user
5.distinct 語句 去重複值
select distinct 列名稱 from 表名稱
select distinct name from user
6.where 子句 有條件的選取數據
select 列名稱 from 表名稱 where 列 運算符 值
運算符(>,>=,<>,<,<=,=)
between 某個範圍
like 搜索某種模式
select * from user where sex='男'
and & or 運算符 and和 or可在 where子語句中把兩個或多個條件結合起來。
and 連接兩個條件成立則顯示
or 連接的兩個條件一個滿足就顯示
select * from persons where (a='tuanzili' or a='lidengcheng') and b='duzhuqiao'
7.order by 語句 對結果集進行排序(默認是升序asc排序,降序desc)
order by 列名 排序關鍵字
select a,b from t_user order by a desc, b asc
8.top 子句 規定返回的記錄數目,用於很多記錄的大型表,並非所有的資料庫都支持
sql server 語法:select top 數目|百分比 列名 from 表名
select top 5 *from user
mysql 語法:select 列名 from 表名 limit 數量
select * from user limit 5
oracle語法:select 列名 from 表名 where ROWNUM <= 數量
select * from user where ROWNUM <= 5
9.like 操作符 like操作符 用於where子句中搜索列中的指定模式
select 列名 from 表名 where 列名 like 值
select *from user where name like '%z%'
提示:"%"可用於定義通配符(模式中缺少的字母)
10.通配符 搜索資料庫時可以使用sql通配符
% 替代一個或多個字符
_ 僅替代一個字符
[charlist] 字符列中的任何單一字符
[^charlist] = [!charlist] 不在字符列中的任何單一字符
select *from user where name like '[!ltn]'
從user表中選取name不以'l','t','n'開頭的數據
11.in 操作符 in操作符允許我們在where子句中規定多個值
select 列名 from 表名 where 列名 in (value1,value2,.)
select * from user where name in ('tuanzili','lidengcheng')
12.bet ween 操作符 between操作符在where子句中使用,作用是選取介於兩個值之間的數據範圍
值可以是數值、文本、日期
select 列名 from 表名 where 列名 between value1(包含) and value2(不包含)
select *from user where name between 'lidengcheng' and 'tuanzili'
not between 顯示範圍之外的數據
13.alias 以為列名稱和表名稱指定別名
表名的語法: select 列名 from 表名 as 表別名
列名的語法: select 列名 as 列別名 from 表名
select uo.orderId,u.name,u.sex from user as u, user_order
as uo where u.sex='男'
and u.name='tuanzili'
重點:
13.join 用於兩個或多個表中的列的關係,從這些表中查詢數據
join 和key 表通過key聯繫在一起主鍵(Primary Key) 是唯一的
從兩個表中獲取數據
where
select user.name,user.sex,order.money fron user ,
order where user.id=order.userId
inner join
內連接
select user.name,user.sex,order.money from user inner join
order on user.id=order.userId order by user.name
join 如果表中至少一個匹配,則返回行 (內連接)
left join 即使右表沒有匹配,也返回左表的所有行 (左連接)
right join 左表中沒有匹配,也返回右表的所有行 (右連接)
full join 只要其中一個表存在匹配,就返回行 (全連接)
14.inner join 和join 是相同的,在表中存在至少一個匹配時inner join 返回行
返回表2裡面有表1的id的數據
select 列名 from 表1 inner join 表2 on 表1.列 = 表2.列
select user.name,user.sex,order.money from user inner join order on user.id=order.userId
order by user.name
返回表order裡面user_id在user表id相同的數據
15.left join 稱為left outer join從左表(表1)返回所有的行,
即使右表(表2)中沒有匹配的行。開發中經常用到
select 列名 from 表1 left join 表2 on 表1.列 = 表2.列
select user.name,user.sex,order.money from user
left join order on user.id=order.userId order by user.name
16.right join 稱為right outer join從右表(表2)返回所有的行,
即使左表(表1)中沒有匹配的行
select 列名 from 表1 left join 表2 on 表1.列 = 表2.列
select user.name,user.sex,order.money from user
left join order on user.id=order.userId
17.full join 稱為full outer join 只要某個表中存在匹配,就返回行
select 列名 from 表1 full join 表2 on 表1.列 = 表2.列
select user.name,user.sex,order.money from user full
join order on user.id=order.userId
高級部分:
18.union 操作符 用於合併兩個或多個select語句的結果集
union 內部的語句必須擁有相同數量的列,
列也必須擁有相似的數據類型,列的順序必須相同
select 列名 from 表1 union select 相同列名相同數據類型 from 表2
允許重複值使用union all
19.select into 語句 可用於創建表的備份復件
select into 從一個表中選取數據,插入另一個表中
常用於創建表的備份復件或者用於對記錄進行存檔
select 列名 into new表 [IN externaldatabase] from old表
in 子句可用於向另一資料庫中拷貝表
select user.age,user.sex into user in backup_mdb
from user inner join order on user.id=order.userId