Tải bản đầy đủ (.ppt) (42 trang)

Nhập liệu và chỉnh sửa dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (307.08 KB, 42 trang )








Ch nh s a d li u b ng các l nh INSERT, UPDATE, ỉ ử ữ ệ ằ ệ
DELETE, và TRUNCATE TABLE.

Th c thi Viewự
 !"
#

Vi c b o trì 1 database liên quan đ n vi c b sung ệ ả ế ệ ổ
thông tin m i, s a l i d li u không chính xác và xóa ớ ử ạ ữ ệ
đi d li u cũ.ữ ệ

Nhóm l nh ệ Data Manipulation Language (DML) c a T–ủ
SQL đ c dùng đ b o trì d li u, bao g m 3 l nh ượ ể ả ữ ệ ồ ệ
sau:






$%&'()**+,
-

L nh dùng đ thêm các hàng vào 1 b ng hay view.ệ ể ả



Cú pháp:
INSERT [INTO]
table_name| view_name[(column_list)]
VALUES (values_list)|select_statement
| DEFAULT VALUES
./
0

Giá tr có th đ c phát t đ ng cho các c t sau:ị ể ượ ự ộ ộ

  

        

   

     

Khi dùng giá tr DEFAULT :ị

      !        
 

            "   

     #          

            $$
+1

2

Hãy xem c u trúc c a b ng ấ ủ ả Sales:
Create table Sales
(
ItemCode char(6) not null,
ItemName char(40) null,
QtySold int not null,
SaleDate datetime not null default getdate()
)
+1
3

INSERT Sales
VALUES ('I005', 'Printer', 100, '05/12/01')

INSERT Sales (ItemCode, ItemName, QtySold, SaleDate)
VALUES ('I005', 'Printer', 100, '05/12/01')

INSERT Sales (ItemName, ItemCode, QtySold, SaleDate)
VALUES ('Printer', 'I005', 100, '05/12/01')

INSERT Sales
VALUES ('I005', NULL, 100, '05/12/01')

INSERT Sales
VALUES ('I005', 'Printer', 100, Default)

Các l nh trên có cho cùng k t qu khôngệ ế ả ??
+1

4

CREATE TABLE T1
( column_1 int IDENTITY,
column_2 varchar(30))

INSERT T1 VALUES ('Row #1')

INSERT T1 (column_2) VALUES ('Row #2')

CREATE TABLE T1
( column_1 int identity,
column_2 varchar(30)
DEFAULT ('column default'),
column_3 timestamp,
column_4 int NULL)

INSERT INTO T1 DEFAULT VALUES
%&'()**&'$'.)
5

Truy v n con SELECT trong l nh INSERT đ c dùng ấ ệ ượ
đ thêm giá tr vào b ng t 1 hay nhi u b ng/view ể ị ả ừ ề ả
khác.

M t hay nhi u hàng đ c thêm vào cùng 1 lúc.ộ ề ượ

Ví d :ụ
USE pubs
INSERT INTO MyBooks

SELECT title_id, title, type FROM titles
WHERE type = 'mod_cook'
$678)'
9

L nh update dùng đ thay đ i giá tr hi n có trong ệ ể ổ ị ệ
1 b ngả .

Cú pháp:
UPDATE table_name| view_name
SET
column_name = expression | DEFAULT |
NULL
| @variable_name = expression
| @variable_name = column = expression
[FROM table_name]
[WHERE search_conditions]
$678)'


Expression: giá tr đu c tr v t bi u th c s thay ị ợ ả ề ừ ể ứ ẽ
th giá tr hi n có trong c t ế ị ệ ộ column_name hay bi n ế
@variable
Ví d : ụ
declare @newprice as money
update dbo.Products
set @newprice = UnitPrice= UnitPrice*1.1
where ProductID= 14
print str(@newprice,8,2)
$678)'



Ví d : đ c p nh t nh ng phi u bán hàng m i nh t t ụ ể ậ ậ ữ ế ớ ấ ừ
b ng ả sales vào b ngả titles
UPDATE titles
SET ytd_sales = titles.ytd_sales + sales.qty
FROM titles, sales
WHERE titles.title_id = sales.title_id
AND sales.ord_date = (SELECT
MAX(sales.ord_date) FROM sales)

L nh có th c hi n đúng yêu c u không???ệ ự ệ ầ
678)',,
#

M t l nh UPDATE không bao gi c p nh t cùng 1 dòng ộ ệ ờ ậ ậ
t i l n th haiớ ầ ứ
UPDATE titles
SET ytd_sales = ytd_sales +(SELECT SUM(qty)
FROM sales
WHERE sales.title_id = titles.title_id
AND sales.ord_date IN (SELECT
MAX(ord_date) FROM sales))
FROM titles, sales
$'$')'
-

L nh DELETE dùng đ xoá các hàng ra kh i 1 b ng.ệ ể ỏ ả

Cú pháp:

DELETE [FROM] table_name|view_name
[FROM table_source]
WHERE search_conditions

Ví d : Xóa các ng viên đã tham d kỳ thi đ u vào h n ụ ứ ự ầ ơ
hai năm tr c trong c s d li u HeadHunt?ướ ơ ở ữ ệ
$'$')'
0
Use Headhunt
DELETE FROM ExternalCandidate
WHERE dTestDate < dateadd(yy,-2,getdate())

Ví d 2:ụ
USE pubs
DELETE titleauthor FROM titleauthor
INNER JOIN titles
ON titleauthor.title_id = titles.title_id
WHERE titles.title LIKE '%computers%'

Xoá các hàng trong b ng titleauthor d a vào các tiêu ả ự
đ sách trong b ng title có tên v i t computersề ả ớ ừ
$)(6.8)')8$'
2

Dùng đ xoá t t c các hàng kh i 1 b ng mà không ghi nh t ký ể ấ ả ỏ ả ậ
l i. ạ

L nh TRUNCATE TABLE và l nh DELETE TABLE không có ệ ệ
m nh đ WHERE t ng t nhau nh ng l nh TRUNCATE ệ ề ươ ự ư ệ
TABLE th c hi n nhanh h n.ự ệ ơ


Không th dùng l nh TRUNCATE TABLE cho các b ng đ c ể ệ ả ượ
tham chi u nh ng có th dùng thay th b ng l nh DELETE vì ế ư ể ế ằ ệ
l nh TRUNCATE TABLE không ghi nh t ký, nó không kích h at ệ ậ ọ
đ c triggerượ

Cú pháp:
TRUNCATE TABLE
[[database.]owner.]table_name
:;<;=+,>
3

View là 1 b ng o (ả ả virtual table) cho phép truy xu t vào ấ
1 t p con các c t t 1 hay nhi u b ngậ ộ ừ ề ả

View b o đ m ả ả đ c ượ tính b o m t cho d li u nh ả ậ ữ ệ ờ
vào vi c h n ch truy xu t (ệ ạ ế ấ restricting access), ch ỉ
cho phép hi n th :ể ị
%&   '   
%&   '    
% &     '     
%(  ! &)"& ! & )"    
' 
%*   !&'  !+    
:;<;=+,>
4

Khi 1 view đã đ c đ nh nghĩa, thì nó có th đ c ượ ị ể ượ
dùng nh b t kỳ b ng nào khác trong c s d li u.ư ấ ả ơ ở ữ ệ


M c dù view t ng t nh b ng, nh ng nó không ặ ươ ự ư ả ư
đ c l u tr th c s trong c s d li u. Nó ch suy ượ ư ữ ự ự ơ ở ữ ệ ỉ
d n các giá tr t nh ng b ng d li u g c.ẫ ị ừ ữ ả ữ ệ ố
$.('8)'+%'?
5

CREATE VIEW
[ < database_name >.] [ < owner > . ] view_name
[ ( column [ , n ] ) ]
[ WITH SCHEMABINDING]
AS
select_statement
[ WITH CHECK OPTION ]

Column: là tên c t đ c dùng trong view. Ch nên đ t ộ ượ ỉ ặ
tên c t cho view khi:ộ

  "  &'    ,-!.       
"&  ,!./ 

01"   2  

N u không đ t tên cho c t c a view thì nó s có cùng ế ặ ộ ủ ẽ
tên v i các c t trong m nh đ SELECTớ ộ ệ ề .
$.('8)'+%'?
9

[ WITH CHECK OPTION ]: b t bu c t t c các l nh ắ ộ ấ ả ệ
ch nh s a d li u liên quan đ n view đ u ph i tuân ỉ ử ữ ệ ế ề ả
theo đi u ki n l c trong m nh đ select. Khi 1 hàng b ề ệ ọ ệ ề ị

s a đ i thông qua view, tuỳ ch n WITH CHECK OPTION ử ổ ọ
này b o đ m là d li u v n còn nhìn th y đ c thông ả ả ữ ệ ẫ ấ ượ
qua view sau khi vi c s a đ i này đ c th c hi n.ệ ử ổ ượ ự ệ
$.('8)'+%'?


Ví dụ:

3)  ! 4 ! '   &'       
     56789/999+   

   5: 781/999/;"    
 ) 4< ; "5 "     

N u m nh đ ế ệ ề WITH CHECK OPTION đ c dùng khi ượ
đ nh nghĩa view, thì các hàng s không th b ch nh ị ẽ ể ị ỉ
s a theo cách mà làm cho chúng b bi n m t kh i ử ị ế ấ ỏ
view. B t kỳ l nh s a đ i nào mà gây ra v n đ này s ấ ệ ử ổ ấ ề ẽ
b lo i tr và hi n th thông báo l i. ị ạ ừ ể ị ỗ
+1

CREATE VIEW CAonly
AS SELECT au_lname, au_fname, city, state
FROM authors
WHERE state = 'CA' WITH CHECK OPTION
UPDATE CAOnly
Set state = ‘KS’ WHERE state =‘CA’ and au_fname ='Ann'
L nh update này có th c hi n đ c không?ệ ự ệ ượ
)@AB&.C'8%%D


Dùng đ gán view vào l c đ . Khi đó, m nh đ select ể ượ ồ ệ ề
b t bu c ph i dùng tên 2 thành ph n (owner.object) cho ắ ộ ả ầ
các b ng, hàm c a ng i dùng.ả ủ ườ

View và table tham gia vào view có m nh đ schema ệ ề
binding không th xóa (drop) đ c n u view không b ể ượ ế ị
xóa hay đ c thay đ i đ không còn schema binding ượ ổ ể
n a. L nh ALTER TABLE dùng cho các b ng có tham gia ữ ệ ả
vào view có schema binding cũng s b l i n u các l nh ẽ ị ỗ ế ệ
này có nh h ng đ n vi c đ nh nghĩa view ả ưở ế ệ ị
#
+1=,E"

T o view có schemabindingạ
CREATE VIEW test_schemabinding
WITH SCHEMABINDING
AS
SELECT CompanyName, Address, City
FROM dbo.Customers

Xóa c t CompanyName b báo l i vì nó có liên quan đ n ộ ị ỗ ế
đ nh nghĩa viewị
ALTER TABLE Customers
DROP COLUMN CompanyName
-
Sửa đổi, xoá và đặt tên lại
view
0

S a đ i Viewử ổ

=$>3?)@A,!@.B
=*@
A?CC0DEDB

Xoá View
>DE3?)@

Đ t l i tên Viewặ ạ
@!@)/)@)

×