Thứ Ba, 2 tháng 6, 2015

ASM3

CREATE DATABASE ASM3

GO
USE ASM3

GO
CREATE TABLE CusInfo
(
Makh varchar(10),
Tenkh nvarchar(50),
CMND varchar(10),
diachi nvarchar(100),
CONSTRAINT kt_Makh PRIMARY KEY (Makh)
)
GO
CREATE TABLE Register
(
Makh varchar(10),
Phonenum varchar(10),
Loaithuebao nvarchar(50),
Ngaydk datetime,
CONSTRAINT kp_Makh FOREIGN KEY (Makh) REFERENCES CusInfo(Makh)
)
GO
/*3. Viết các câu lệnh để thêm dữ liệu vào các bảng
Chèn thêm dữ liệu tương tự như đề bài*/
INSERT INTO CusInfo VALUES ('T001',N'Nguyễn Nguyệt Nga','123456789',N'Hà Nội')
INSERT INTO CusInfo VALUES ('T002',N'Đinh Nhật Đức','123456710',N'Hải Phòng')
GO
INSERT INTO Register VALUES ('T001','093456789',N'Trả cước','12/12/2012')
INSERT INTO Register VALUES ('T001','097654555',N'Trả cước','12/12/2012')
INSERT INTO Register VALUES ('T001','097654321',N'Trả cước','06/03/2015')
INSERT INTO Register VALUES ('T002','097647854',N'Trả cước','06/03/2015')
GO
/*4. Viết các câu lênh truy vấn để
a) Hiển thị toàn bộ thông tin của các khách hàng của công ty.
b) Hiển thị toàn bộ thông tin của các số thuê bao của công ty.*/
SELECT *FROM CusInfo

GO
SELECT *FROM Register

GO
/*5. Viết các câu lệnh truy vấn để lấy
a) Hiển thị toàn bộ thông tin của thuê bao có số: 0123456789*/
SELECT *FROM CusInfo a INNER JOIN Register b ON a.Makh=b.Makh
WHERE Phonenum LIKE '123456789'
GO
--b) Hiển thị thông tin về khách hàng có số CMTND: 123456789
SELECT a.*FROM CusInfo a INNER JOIN Register b ON a.Makh=b.Makh
WHERE CMND LIKE '123456789'
GO
--c) Hiển thị các số thuê bao của khách hàng có số CMTND:123456789
SELECT b.Phonenum FROM CusInfo a INNER JOIN Register b ON a.Makh=b.Makh
WHERE CMND LIKE '123456789'
GO
--d) Liệt kê các thuê bao đăng ký vào ngày 12/12/09
SELECT b.Phonenum FROM CusInfo a INNER JOIN Register b ON a.Makh=b.Makh
WHERE Ngaydk = '12/12/2012'
GO
--e) Liệt kê các thuê bao có địa chỉ tại Hà Nội
SELECT b.Phonenum FROM CusInfo a INNER JOIN Register b ON a.Makh=b.Makh
WHERE diachi = N'Hà Nội'
GO
/*6. Viết các câu lệnh truy vấn để lấy
a) Tổng số khách hàng của công ty.*/
SELECT COUNT(a.Tenkh) AS TongSoKhacHangCuaCongTy FROM CusInfo a

GO
--b) Tổng số thuê bao của công ty.
SELECT COUNT(a.Phonenum) AS TongPhonenumCuaCongTy FROM Register a

GO
--c) Tổng số thuê bào đăng ký ngày 12/12/09.
SELECT COUNT(a.Phonenum) AS TongPhonenumCuaCongTy FROM Register a
WHERE Ngaydk = '12/12/2012'
GO
--d) Hiển thị toàn bộ thông tin về khách hàng và thuê bao của tất cả các số thuê bao.
SELECT *FROM CusInfo a INNER JOIN Register b ON a.Makh=b.Makh

GO
/*7. Thay đổi những thay đổi sau trên cơ sở dữ liệu
a) Viết câu lệnh để thay đổi trường ngày đăng ký là not null.*/
ALTER TABLE Register
ALTER COLUMN Ngaydk datetime NOT NULL
GO
--b) Viết câu lệnh để thay đổi trường ngày đăng ký là trước hoặc bằng ngày hiện tại.
ALTER TABLE Register
ADD CONSTRAINT rp_Ngaydk CHECK (Ngaydk >= getdate())
GO
--c) Viết câu lệnh để thay đổi số điện thoại phải bắt đầu 09
ALTER TABLE Register
ADD CONSTRAINT rp_Phonenum CHECK (Phonenum LIKE '09%')
GO
--d) Viết câu lệnh để thêm trường số điểm thưởng cho mỗi số thuê bao.
ALTER TABLE Register
ADD SoDiemThuong int
GO
/*8. Thực hiện các yêu cầu sau
a) Đặt chỉ mục (Index) cho cột Tên khách hàng của bảng chứa thông tin khách hàng*/
CREATE CLUSTERED INDEX IX_TenKhachHang ON CusInfo(Tenkh)

GO
/*b) Viết các View sau:
◦ View_KhachHang: Hiển thị các thông tin Mã khách hàng, Tên khách hàng, địa chỉ*/
CREATE VIEW View_KhachHang AS SELECT Makh,Tenkh,diachi FROM CusInfo

GO
SELECT *FROM View_KhachHang

GO
--◦ View_KhachHang_ThueBao: Hiển thị thông tin Mã khách hàng, Tên khách hàng, Số thuê bao
CREATE VIEW View_KhachHang_ThueBao AS SELECT a.Makh,a.Tenkh,b.Phonenum
FROM CusInfo a INNER JOIN Register b ON a.Makh=b.Makh
GO
SELECT *FROM View_KhachHang_ThueBao

GO
/*c) Viết các Store Procedure sau:
◦ SP_TimKH_ThueBao: Hiển thị thông tin của khách hàng với số thuê bao nhập vào*/
CREATE PROCEDURE SP_TimKH_ThueBao AS SELECT a.*
FROM CusInfo a INNER JOIN Register b ON a.Makh=b.Makh
WHERE Phonenum LIKE '097654555'
GO
EXECUTE SP_TimKH_ThueBao

GO
--◦ SP_TimTB_KhachHang: Liệt kê các số điện thoại của khách hàng theo tên truyền vào
CREATE PROCEDURE SP_TimTB_KhachHang AS SELECT b.Phonenum
FROM CusInfo a INNER JOIN Register b ON a.Makh=b.Makh
WHERE a.Tenkh LIKE N'Nguyễn Nguyệt Nga'
GO
EXECUTE SP_TimTB_KhachHang

GO
--◦ SP_ThemTB: Thêm mới một thuê bao cho khách hàng
CREATE PROCEDURE SP_ThemTB AS INSERT INTO Register VALUES ('T002','097647899',N'Trả cước','06/03/2015',99)

GO
EXECUTE SP_ThemTB

GO
--◦ SP_HuyTB_MaKH: Xóa bỏ thuê bao của khách hàng theo Mã khách hàng
CREATE PROCEDURE SP_HuyTB_MaKH AS DELETE FROM Register WHERE Makh = 'T002'

GO
EXECUTE SP_HuyTB_MaKH

GO

ASM2

CREATE DATABASE ASM2

GO
USE ASM2

GO
CREATE TABLE Production
(
 Masohang varchar(10),
 TenSP varchar(50),
 Diachi varchar(50),
 Phone char(10),
 CONSTRAINT kt_Masohang PRIMARY KEY (Masohang)
)
GO
CREATE TABLE List
(
 STT int,
 Masohang varchar(10),
 MaSP varchar(10),
 Tenhang nvarchar(100),
 Mota nvarchar(50),
 Donvi nvarchar(10),
 Gia money,
 Soluongdangco int,
 CONSTRAINT kt_Masohangsanpham PRIMARY KEY (MaSP),
 CONSTRAINT kp_Masohang FOREIGN KEY (Masohang) REFERENCES Production(Masohang)
)
GO
SELECT *FROM Production
/*3. Viết các câu lệnh để thêm dữ liệu vào các bảng
Cho vào hai dữ liệu tưng tự như bảng đề bài trên*/
INSERT INTO Production VALUES ('123','Asus','USA','983232')
INSERT INTO Production VALUES ('124','DELL','Germany','983210')
INSERT INTO Production VALUES ('125','HP','USA','0983211')
GO
INSERT INTO List VALUES (1,'123','T001',N'Máy tính T450',N'Máy nhập cũ',N'Chiếc',1000,10)
INSERT INTO List VALUES (2,'123','T002',N'Điện thoại Nokia 5670',N'Điện thoại đang hot',N'Chiếc',200,200)
INSERT INTO List VALUES (3,'123','T003',N'Máy in samsung 450',N'Máy in đang loại bình',N'Chiếc',100,10)
INSERT INTO List VALUES (3,'124','T004',N'Màn hình DELL',N'Loại đời mới',N'Chiếc',2000,10)
INSERT INTO List VALUES (3,'124','T005',N'Loa JBL',N'Khuếch đại âm thanh',N'Chiếc',200,100)
INSERT INTO List VALUES (6,'125','T006',N'Probook HP',N'Máy tính VIP',N'Chiếc',1200,0)
GO
/*4. Viết các câu lênh truy vấn để
a) Hiển thị tất cả các hãng sản xuất.*/
SELECT TenSP FROM Production
--b) Hiển thị tất cả các sản phẩm.
SELECT Tenhang FROM List
/*5. Viết các câu lệnh truy vấn để
a) Liệt kê danh sách hãng theo thứ thự ngược với alphabet của tên.*/
SELECT TenSP FROM Production ORDER BY (TenSP)
--b) Liệt kê danh sách sản phẩm của cửa hàng theo thứ thự giá giảm dần.
SELECT STT,Tenhang FROM List ORDER BY (STT) DESC
--c) Hiển thị thông tin của hãng Asus.
SELECT *FROM Production WHERE TenSP LIKE 'Asus'
--d) Liệt kê danh sách sản phẩm còn ít hơn 11 chiếc trong kho
SELECT Tenhang FROM List WHERE Soluongdangco < 11
--e) Liệt kê danh sách sản phẩm của hãng Asus
SELECT b.Tenhang FROM Production a INNER JOIN List b ON a.Masohang=b.Masohang
WHERE a.TenSP LIKE 'Asus'
/*6. Viết các câu lệnh truy vấn để lấy
a) Số hãng sản phẩm mà cửa hàng có.*/
SELECT COUNT(TenSP) AS SoHangCuaHangCo FROM Production
--b) Số mặt hàng mà cửa hàng bán.
SELECT COUNT(Tenhang) AS SoHangCuaHangBan FROM List
--c) Tổng số loại sản phẩm của mỗi hãng có trong cửa hàng.
SELECT a.TenSP,COUNT(b.Tenhang) AS TongSoSPMoiHang FROM Production a INNER JOIN List b
ON a.Masohang=b.Masohang
GROUP BY a.TenSP
--d) Tổng số đầu sản phẩm của toàn cửa hàng
SELECT COUNT(Tenhang) AS TongSPToanCuaHang FROM List
/*7. Thay đổi những thay đổi sau trên cơ sở dữ liệu
a) Viết câu lệnh để thay đổi trường giá tiền của từng mặt hàng là dương(>0).
c) Viết các câu lệnh để xác định các khóa ngoại và khóa chính của các bảng.*/
ALTER TABLE List
ADD CONSTRAINT rp_gia CHECK (Gia>0)
GO
--b) Viết câu lệnh để thay đổi số điện thoại phải bắt đầu bằng 0.
ALTER TABLE Production
ADD CONSTRAINT rp_Phone CHECK (Phone LIKE '0%')
GO
/*8. Thực hiện các yêu cầu sau
a) Thiết lập chỉ mục (Index) cho các cột sau: Tên hàng và Mô tả hàng để tăng hiệu suất truy vấn
dữ liệu từ 2 cột này*/
CREATE CLUSTERED INDEX IX_TenSP ON List(Tenhang)

GO
CREATE CLUSTERED INDEX IX_Mota ON List(Mota)

GO
/*b) Viết các View sau:
◦ View_SanPham: với các cột Mã sản phẩm, Tên sản phẩm, Giá bán*/
CREATE VIEW View_SanPham AS SELECT MaSP,Tenhang,Gia FROM List

GO
--◦ View_SanPham_Hang: với các cột Mã SP, Tên sản phẩm, Hãng sản xuất
CREATE VIEW View_SanPham_Hang AS SELECT a.MaSP,a.Tenhang,b.TenSP
FROM List a INNER JOIN Production b ON a.Masohang=b.Masohang
GO
/*c) Viết các Store Procedure sau:
◦ SP_SanPham_TenSP: Liệt kê các sản phẩm với tên hãng truyền vào store*/
CREATE PROCEDURE SP_SanPham_TenSP AS
SELECT a.Tenhang,b.TenSP FROM List a INNER JOIN Production b ON a.Masohang=b.Masohang
GO
EXECUTE SP_SanPham_TenSP

GO
--◦ SP_SanPham_Gia: Liệt kê các sản phẩm có giá bán lớn hơn hoặc bằng giá bán truyền vào
CREATE PROCEDURE SP_SanPham_Gia AS
SELECT Tenhang,Gia FROM List
WHERE Gia
GO
--◦ SP_SanPham_HetHang: Liệt kê các sản phẩm đã hết hàng (số lượng = 0)
CREATE PROCEDURE SP_SanPham_HetHang AS
SELECT Tenhang,Soluongdangco FROM List
WHERE Soluongdangco = 0
GO
EXECUTE SP_SanPham_HetHang

GO
/*d) Viết Trigger sau:
◦ TG_Xoa_Hang: Ngăn không cho xóa hãng*/
CREATE TRiGGER TG_Xoa_Hang
ON Production
FOR DELETE
AS
 IF update(Masohang)
 PRINT N'Khong Duoc Xoa';
 ROLLBACK TRANSACTION;
GO
--◦ TG_Xoa_SanPham: Chỉ cho phép xóa các sản phẩm đã hết hàng (số lượng = 0)
CREATE TRIGGER TG_Xoa_SanPham
ON List
FOR DELETE
AS
 BEGIN
  IF EXISTS(SELECT *FROM List WHERE Soluongdangco =0)
  BEGIN
   PRINT N'Không được xóa sản phẩm vẫn còn hàng';
   ROLLBACK TRANSACTION;
  END
 END
GO

ASM1

CREATE DATABASE asm1

GO
USE asm1

GO
CREATE TABLE ddh(
msdh varchar(10),
mskh varchar(10),
ndh nvarchar(50),
diachi nvarchar(100),
phonenum varchar(12),
ngaydat datetime,
CONSTRAINT kt_msdh PRIMARY KEY (msdh)
)
GO
CREATE TABLE olist
(
Masosp varchar(10),
TenHang nvarchar(50),
CONSTRAINT kt_mssp PRIMARY KEY (Masosp)
)
GO
CREATE TABLE list
(
STT varchar(3),
msdh varchar(10),
Masosp varchar(10),
tenhang nvarchar(50),
mota nvarchar(50),
donvi nvarchar(10),
dongia money,
soluong money,
ThanhTien money,
CONSTRAINT kp_msdh FOREIGN KEY (msdh) REFERENCES ddh(msdh),
CONSTRAINT kp_mssp FOREIGN KEY (Masosp) REFERENCES olist(Masosp)
)
INSERT INTO ddh VALUES('123','G001',N'Nguyễn Văn An',N'111 Nguyễn Trãi,Thanh Xuân,Hà Nội','987654321','2011-08-09')
INSERT INTO ddh VALUES('234','G002',N'Trần Văn Bê',N'342 Khương Đình, Thanh Xuân, Hà Nội','0169679843','2009-10-24')
INSERT INTO ddh VALUES('345','G003',N'Đinh Minh Cê',N'175 Đông Các, Đống Đa, Hà Nội','0164276345','2009-05-29')
GO
INSERT INTO olist VALUES ('MT001',N'Máy Tính T450')
INSERT INTO olist VALUES ('MT002',N'Điện Thoại Nokia5670')
INSERT INTO olist VALUES ('MT003',N'Máy In Samsung 450')
GO
INSERT INTO list VALUES ('1','123','MT001',N'Máy Tính T450',N'Máy mới nhập',N'Chiếc','1000','1','1000')
INSERT INTO list VALUES ('2','123','MT002',N'Điện Thoại Nokia5670',N'Điện thoại đang hot',N'Chiếc','200','2','400')
INSERT INTO list VALUES ('3','123','MT003',N'Máy In Samsung 450',N'Máy in đang ế',N'Chiếc','100','1','100')
GO
--4. Viết các câu lênh truy vấn để
--a> hiển thị danh sách khách hàng mua sản phẩm
SELECT msdh,ndh FROM ddh
--b> hiển thị danh sách sản phẩm
SELECT tenhang FROM olist
--c> hiển thị danh sách đơn hàng
SELECT * FROM ddh
--*5. Viết các câu lệnh truy vấn để
--a> hiển thị tên người mua theo alphabet
SELECT ndh FROM ddh
ORDER BY ndh
--b> hiển thị giá sản phẩm theo thứ tự giảm dần
SELECT tenhang,dongia FROM list
ORDER BY dongia DESC
--c> hiển thị sản phẩm mà khách Nguyễn Văn An đã mua
SELECT tenhang FROM ddh a INNER JOIN list b ON a.msdh=b.msdh
WHERE ndh LIKE N'Nguyễn Văn An'
GO
--*6. Viết các câu lệnh truy vấn để
--a> Số khách hàng đã mua ở cửa hàng
SELECT COUNT (a.ndh) AS tongkh
FROM ddh AS a
--b> Số mặt hàng mà cửa hàng bán
SELECT COUNT (a.tenhang) AS tonghangdaban
FROM olist AS a
--c> Tổng số tiền của từng đơn hàng
SELECT a.msdh,SUM(b.thanhtien) as TongTien
FROM ddh AS a INNER JOIN list AS b ON a.msdh=b.msdh
GROUP BY a.msdh
GO
/*7. Thay đổi những thông tin sau từ cơ sở dữ liệu
a) Viết câu lệnh để thay đổi trường giá tiền của từng mặt hàng là dương(>0).*/
ALTER TABLE list
ADD CONSTRAINT rp_gia CHECK (Gia>0)
GO
--b) Viết câu lệnh để thay đổi ngày đặt hàng của khách hàng phải nhỏ hơn ngày hiện tại.
ALTER TABLE ddh
ADD CONSTRAINT rp_ngaydathang CHECK (ngaydat < getdate())
GO
--c) Viết câu lệnh để thêm trường ngày xuất hiện trên thị trường của sản phẩm.
ALTER TABLE list
ADD Ngayramat datetime
GO
SELECT *FROM olist
GO
/*8. Thực hiện các yêu cầu sau
a) Đặt chỉ mục (index) cho cột Tên hàng và Người đặt hàng để tăng tốc độ truy vấn dữ liệu trên
các cột này.*/
CREATE CLUSTERED INDEX IX_TenHang ON list(tenhang)

GO
CREATE CLUSTERED INDEX IX_DonDatHang ON ddh(ndh)

GO
/*b) Xây dựng các view sau đây:
◦ View_KhachHang với các cột: Tên khách hàng, Địa chỉ, Điện thoại
◦ View_SanPham với các cột: Tên sản phẩm, Giá bán
◦ View_KhachHang_SanPham với các cột: Tên khách hàng, Số điện thoại, Tên sản
phẩm, Số lượng, Ngày mua*/
CREATE VIEW View_KhachHang AS SELECT ndh,diachi,phonenum
FROM ddh
GO
SELECT *FROM View_KhachHang

GO
CREATE VIEW View_SanPham AS SELECT tenhang,dongia
FROM list
GO
SELECT *FROM View_SanPham

GO
CREATE VIEW View_KhachHang_SanPham AS SELECT a.ndh,a.phonenum,b.tenhang,b.soluong,a.ngaydat
FROM ddh AS a INNER JOIN list AS b ON a.msdh=b.msdh
GO
SELECT *FROM View_KhachHang_SanPham

GO
/*c) Viết các Store Procedure (Thủ tục lưu trữ) sau:
◦ SP_TimKH_MaKH: Tìm khách hàng theo mã khách hàng
◦ SP_TimKH_MaHD: Tìm thông tin khách hàng theo mã hóa đơn
◦ SP_SanPham_MaKH: Liệt kê các sản phẩm được mua bởi khách hàng có mã được
truyền vào Store.*/
CREATE PROCEDURE SP_TimKH_MaKH AS
SELECT ndh,diachi,phonenum FROM ddh
WHERE msdh LIKE 'TB001'
GO
EXECUTE SP_TimKH_MaKH

GO
CREATE PROCEDURE SP_TimKH_MaHD AS
SELECT ndh,diachi,phonenum FROM ddh
WHERE msdh LIKE '001'
GO
EXECUTE SP_TimKH_MaHD

GO

Thứ Hai, 18 tháng 5, 2015

Lab 6

CREATE DATABASE Lab6 GO USE Lab6 GO DROP DATABASE Lab6 CREATE TABLE Toys ( ProductCode varchar(5), Name varchar(30), Category varchar(30), Manufacturer varchar(40), AgeRange varchar(15), UnitPrice money, Netweight int, QtyOnHand int, constraint kt_ProductCode primary key (ProductCode) ) /* 1. Tạo bảng Toys với cấu trúc giống như trên. Thêm dữ liệu (15 bản ghi) vào bảng với giá trị của trường QtyOnHand ít nhất là 20 cho mỗi sản phẩm đồ chơi.*/ INSERT INTO Toys VALUES ('DC001','Olalala','Do choi','Marvel','3-10 tuoi',50000,50,50) INSERT INTO Toys VALUES ('DC002','Audition','Lap giap','Tap doan LOGO','8-13 tuoi',150000,3000,20) INSERT INTO Toys VALUES ('DC003','CrossFire','Dieu khien','Tap doan Xe DK','10-15 tuoi',90000,2000,30) INSERT INTO Toys VALUES ('DC004','Pikachu','Dieu Khien','Tap doan may bay DK','10-15 tuoi',250000,3000,30) INSERT INTO Toys VALUES ('DC005','Logo toa nha','Lap giap','Tap doan logo','8-13 tuoi',150000,300,20) INSERT INTO Toys VALUES ('DC006','Olalala 2','Bo game','Marvel','3-11 tuoi',350000,500,150) INSERT INTO Toys VALUES ('DC007','Olalala 3','Bo game','Marvel','4-12 tuoi',450000,60,250) INSERT INTO Toys VALUES ('DC008','Olalala 4','Bo game','Marvel','5-13 tuoi',550000,100,350) INSERT INTO Toys VALUES ('DC009','Olalala 5','Bo game','Marvel','6-14 tuoi',650000,5000,450) INSERT INTO Toys VALUES ('DC010','Olalala 6','Bo game','Marvel','7-15 tuoi',150000,900,550) INSERT INTO Toys VALUES ('DC011','Olalala 7','Bo game','Marvel','8-15 tuoi',250000,200,650) INSERT INTO Toys VALUES ('DC012','Olalala 8','Bo game','Marvel','9-15 tuoi',350000,300,150) INSERT INTO Toys VALUES ('DC013','Olalala 9','Bo game','Marvel','10-15 tuoi',450000,400,250) INSERT INTO Toys VALUES ('DC014','Olalala10','Bo game','Marvel','11-16 tuoi',550000,600,350) INSERT INTO Toys VALUES ('DC015',Olalala 11','Bo game','Marvel','12-17 tuoi',250000,90,450) SELECT * FROM Toys /*2. Viết câu lệnh tạo Thủ tục lưu trữ có tên là HeavyToys cho phép liệt kê tất cả các loại đồ chơi có trọng lượng lớn hơn 500g.*/ CREATE PROCEDURE HeavyToys AS SELECT ProductCode,Name,Category FROM Toys WHERE Netweight > 500 /*3. Viết câu lệnh tạo Thủ tục lưu trữ có tên là PriceIncreasecho phép tăng giá của tất cả các loại đồ chơi lên thêm 10 đơn vị giá.*/ CREATE PROCEDURE PriceIncreasecho AS SELECT ProductCode,Name,UnitPrice+10 AS SauKhiTangGia FROM Toys /*4. Viết câu lệnh tạo Thủ tục lưu trữ có tên là QtyOnHand làm giảm số lượng đồ chơi còn trong của hàng mỗi thứ 5 đơn vị.*/ CREATE PROCEDURE QtyOnHand AS SELECT ProductCode,Name,QtyOnHand-5 AS SauKhiGiamSoLuong FROM Toys --5. Thực thi 3 thủ tục lưu trữ trên. EXECUTE HeavyToys EXECUTE PriceIncreasecho EXECUTE QtyOnHand /*1. Ta đã có 3 thủ tục lưu trữ tên là HeavyToys,PriceIncrease, QtyOnHand. Viết các câu lệnh xem định nghĩa củacác thủ tục trên dùng 3 cách sau: - Thủ tục lưu trữ hệ thống sp_helptext - Khung nhìn hệ thống sys.sql_modules - Hàm OBJECT_DEFINITION()*/ sp_helptext HeavyToys sp_helptext PriceIncreasecho sp_helptext QtyOnHand SELECT OBJECT_DEFINITION (OBJECT_ID(N'HeavyToys')) AS [ThucHienLenh]; SELECT OBJECT_DEFINITION (OBJECT_ID(N'PriceIncreasecho')) AS [ThucHienLenh]; SELECT OBJECT_DEFINITION (OBJECT_ID(N'QtyOnHand')) AS [ThucHienLenh]; --2. Viết câu lệnh hiển thị các đối tượng phụ thuộc của mỗi thủ tục lưu trữ trên EXECUTE sp_depends HeavyToys EXECUTE sp_depends PriceIncreasecho EXECUTE sp_depends QtyOnHand GO /*3. Chỉnh sửa thủ tục PriceIncreasevà QtyOnHandthêm câu lệnh cho phép hiển thị giá trị mới đã được cập nhật của các trường (UnitPrice,QtyOnHand).*/ ALTER PROCEDURE PriceIncreasecho AS UPDATE Toys SET UnitPrice=UnitPrice+5000 GO SELECT *FROM Toys GO ALTER PROCEDURE QtyOnHand AS UPDATE Toys SET QtyOnHand=QtyOnHand-5 GO SELECT *FROM Toys GO /*4. Viết câu lệnh tạo thủ tục lưu trữ có tên là SpecificPriceIncrease thực hiện cộng thêm tổng số sản phẩm (giá trị trường QtyOnHand)vào giá của sản phẩm đồ chơi tương ứng.*/ CREATE PROCEDURE SpecificPriceIncrease AS UPDATE Toys SET UnitPrice=UnitPrice+QtyOnHand GO SELECT *FROM Toys GO /*5. Chỉnh sửa thủ tục lưu trữ SpecificPriceIncrease cho thêm tính năng trả lại tổng số các bản ghi được cập nhật.*/ ALTER PROCEDURE SpecificPriceIncrease @number int OUTPUT AS UPDATE Toys SET UnitPrice=UnitPrice+QtyOnHand SELECT ProductCode,Name,UnitPrice as Price,QtyOnHand FROM Toys WHERE QtyOnHand>0 SELECT @number = @@Rowcount GO DECLARE @num int EXECUTE SpecificPriceIncrease @num OUTPUT PRINT @num --6. Chỉnh sửa thủ tục lưu trữ SpecificPriceIncrease cho phép gọi thủ tục HeavyToysbên trong nó ALTER PROCEDURE SpecificPriceIncrease @number int OUTPUT AS UPDATE Toys SET UnitPrice=UnitPrice+QtyOnHand SELECT ProductCode,Name,UnitPrice as Price,QtyOnHand FROM Toys WHERE QtyOnHand>0 SELECT @number = @@Rowcount execute HeavyToys --8. Xóa bỏ tất cả các thủ tục lưu trữ đã được tạo ra DROP PROCEDURE HeavyToys DROP PROCEDURE PriceIncreasecho DROP PROCEDURE QtyOnHand

Chủ Nhật, 3 tháng 5, 2015

Task 1 (3 kiểu ngôn ngữ Transact SQL)

I. Ngôn ngữ SQL và các Transact SQL.
-Structured Query Language(SQL) hay còn gọi là ngôn ngữ truy cập vấn đáp mang tính cấu trúc.
-Là một dạng ngôn ngữ  phổ biến để tạo, sửa, và lấy dữ liệu từ một hệ quản trị cơ sở dữ liệu quan hệ.
-Ngôn ngữ này phát triển vượt xa so với mục đích ban đầu là để phục vụ các hệ quản trị cơ sở dữ liệu đối tượng-quan hệ.
-Transaction (giao dịch) trong SQL được dùng để đảm bảo tính toàn vẹn dữ liệu khi xảy ra cập nhật (cập nhật xin được hiểu theo nghĩa rộng là các hành động sửa đổi dữ liệu, như INSERT, UPDATE, DELETE…).
-Khi một transaction bao gồm nhiều lệnh cập nhật, nó đảm bảo tất cả các cập nhật đều được thực hiện thành công, hoặc trong trường hợp một lệnh gặp sự cố toàn bộ transaction bị hủy bỏ. Khi đó dữ liệu trở về trạng thái như trước khi xảy ra transaction. Nói cách khác transaction ngăn chặn tình huống dữ liệu được cập nhật nửa chừng, trong đó một phần được cập nhật còn một phần bị bỏ qua.

*> Ví dụ về câu lệnh Lấy dữ liệu :
       SELECT * FROM employlee
-SELECT : câu lệnh lấy dữ liệu.
-* : Phạm vi lấy là toàn bộ dữ liệu.
-FROM: Vị trí mà câu lệnh SELECT lấy dữ liệu.
-employlee: Tên bảng

Khi đã có cơ sở dữ liệu mẫu (Database) ta có danh sách các câu lệnh trực tiếp, và chúng ta chỉ việc test ngay trên cơ sở đó.

II.Biến trong SQL.
- Biến là một đối tượng để lưu trữ một giá trị dữ liệu. Dữ liệu có thể được truyền đến câu lệnh SQL bằng cách sử dụng tên biến. Tên biến cục bộ phải khai báo bắt đầu ký hiệu @.
- Biến trong SQL có hai loại: Biến cục bộbiến toàn cục.

+ Biến cục bộ: Dùng để lưu giá trị tạm thời do người dùng tạo nên.
*Khai báo biến cục bộ
DECLARE
{
@local_variable[AS]data_type
}

Trong đó:   - @local_variable[AS]data_type: Tên biến, bắt buộc bắt đầu bằng ký hiệu @.
                   - data_type: Kiểu dữ liệu biến nhận được.
Chú ý: Ta dùng câu lệnh SET hoặc SELECT để gán giá trị cho biến.

Biến toàn cục: Biến có sẵn và do hệ thống tiếp quản, tồn tại theo hệ thống. Tên biến toàn cục phải khai báo bắt đầu bằng hai ký hiệu @.
III. Hàm trong SQL.
-Là tập hợp một đoạn code nào đấy có tác dụng thực hiện một chức năng bất kỳ được định sẵn.
-Transact SQL có các loại hàm sau:
*Hàm tập hợp:
SUM(col_name) : Hàm tính tổng, trả về tổng giá trị của col_name.
*Hàm chuyển đổi dữ liệu: Dùng để biến kiểu dữ liệu này sang kiểu dữ liệu khác.
CONVERT(datatype[(length)],expression[,style])
*Hàm ngày tháng:
GETDATE() : Lấy ra ngày, giờ hiện tại của hệ thống.
DATEPART() : lấy ra một giá trị (ngày hoặc giờ) của hệ thống.
*Hàm toán học: Thực hiện phép tính trên trường dữ liệu hệ thống.
ABS(num_expr) : Trả về giá trị tuyệt đối.
*Hàm hệ thống: Trả về dữ liệu hệ thống hay là thông tin cấu hình của sever
USER_NAME([user_id']) : tên người dùng.
*Hàm xếp hạng: Tạo ra một dãy số, danh sách tuần tự cho việc sắp xếp.
ROW_NUMBER() : Hàm đánh số hàng, bắt đầu, bằng 1 với hàng đầu tiên và 2,3 với các hàng tiếp theo.
DENSE_RANK() : Trả về giá trị xếp hạng giữa các hàng mà không có khoảng cách giữ các hạng.
 VI. Câu lệnh trong thao tác dữ liệu.
- Có 4 câu lệnh: SELECT, INSERT, UPDATE, DELETE.
-SELECT: Lấy dữ liệu ra.
Cú pháp:
SELECT <column_name(s)> FROM <Table_name>
Trong đó: - <column_name(s)> : là tên của cột hoặc danh sách cột cần lấy dữ liệu.
                - <Table_name> : tên của bảng dữ liệu. 
-INSERT: Chèn dữ liệu.
Cú pháp:
INSERT INTO <Table_name>
VALUES <value>
Trong đó: - <Table_name> : tên bảng mà dữ liệu được chèn vào.
                - <value>: là các giá trị được chèn vào các cột trường tương ứng trong bảng.

                - INTO là từ khóa được sử dụng.
-UPDATE:Cập nhập dữ liệu.
Cú pháp: 
UPDATE <Table_name>
SET <Column_Name = Value>
[WHERE <Search condition>]
Trong đó: - <Table_name> là tên bảng mà dữ liệu trong đó được thay đổi.
                - <Column_Name> là tên cột dữ liệu thay đổi.
                - <Search condition> là điều kiện thỏa mãn mà các dữ liệu thay đổi.
                - Value là giá trị giữ liệu thay đổi.

-DELETE: Xóa dữ liệu.
Cú pháp:
DELETE FROM <Table_name>
[WHERE <Search condition>]
Trong đó: - <Table_name> là tên bảng có dữ liệu cần xóa

                - <Search condition> chỉ định điều kiện. Nếu không có mệnh đè này, tất cả các bản ghi trong bảng sẽ bị xóa.


Chủ Nhật, 12 tháng 4, 2015

10 Hàm của JQuery

I.Hàm .add()

-Hàm dùng để thêm những giá trị, thẻ hợp lệ và được định dạng sẵn.


-Ví dụ:



<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>add demo</title>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Hello</p>
<span id="a">I'm Quan</span>
<script>
$( "p" ).add( document.getElementById( "a" ) ).css( "background", "yellow" );
</script>
</body>
</html>
-Trình duyệt : I'm Quan 
II.Hàm .after() 
-Hàm dùng để chèn nội dung, tham số hợp lệ sau mỗi phần tử của một tổ hợp các phần tử hợp lệ.
-Ví dụ: 

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title> after demo</title>
<style>
p {
background: yellow;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Xin chào: </p>
<script>
$( "p" ).after( document.createTextNode( "Quân" ) );
</script>
</body>
</html>
-Trình duyệt: Xin chào : Quân
III.Hàm .before()
-Hàm tương tự như after() nhưng chèn vào đằng trước
-Ví dụ :
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>before demo</title>
<style>
p {
background: yellow;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p> muốn làm quen với bạn...</p>
<script>
$( "p" ).before( "<b>Tôi</b>" );
</script>
</body>
</html>
-Trình duyệt : Tôi muốn làm quen với bạn...
IV.Hàm .clone() -Hàm tạo ra một bản sao-Ví dụ: 
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>clone demo</title>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<b>Chào</b><p>, bạn khỏe chứ?</p>
<script>
$( "b" ).clone().prependTo( "p" );
</script>
</body>
</html>
-Trình duyệt: Chào Chào, bạn khỏe chứ? V.Hàm .bind() -Hàm gài hiệu ứng xử lý vào phẩn tử được chọn-Ví dụ:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>bind demo</title>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Click or double click here.</p>
<span></span>
<script>
$( "p" ).bind( "click", function() {
alert( $( this ).text("Hahaha") );
});
});
</script>
</body>
</html> VI.Hàm .empty() -Xóa mọi phần tử trên trình duyệt khi click hoặc thực hiện một dạng xử lý nào đấy.-Ví dụ: 
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>empty demo</title>
<style>
p {
background: yellow;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>
Hello, <span>Person</span> <em>and person</em>.
</p>
<button>Call empty() on above paragraph</button>
<script>
$( "button" ).click(function() {
$( "p" ).empty();
});
</script>
</body>

</html> VII.Hàm .eq() -Giảm số lượng nhóm phần tử được chọn về con số một.-Ví dụ:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>eq demo</title>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<script>
$( "body" ).find( "div" ).eq( 2 ).addClass( "blue" );
</script>
</body>
</html> VIII.Hàm .error() -Làm một phần tử đã được định dạng trở nên mất định dạng ===>Lỗi hiện thị-Ví dụ:
$( "img" )
.error(function() {
$( this ).hide();
})
.attr( "src", "missing.png" ); IX.Hàm .first() -Giảm số phần tử được định dạng sẵn còn một và là phần tử đứng đầu tiên.-Ví dụ:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>first demo</title>
<style>
.highlight{
background-color: yellow
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>
<span>Look:</span>
<span>This is some text in a paragraph.</span>
<span>This is a note about it.</span>
</p>
<script>
$( "p span" ).first().addClass( "highlight" );
</script>
</body>
</html> X.Hàm .hide() -Ẩn hết mọi nội dung được định dạng-Ví dụ:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>hide demo</title>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
<p>Hello</p>
<a href="#">Click to hide me too</a>
<p>Here is another paragraph</p>
<script>
$( "p" ).hide();
$( "a" ).click(function( event ) {
event.preventDefault();
$( this ).hide();
});
</script>
</body>
</html>