Advertisement
Guest User

Untitled

a guest
Dec 11th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 5.59 KB | None | 0 0
  1. --Tâm 1713057--
  2. USE dbTipee
  3. GO
  4. -- Table
  5. CREATE TABLE tblCART(
  6.     id          VARCHAR(50) NOT NULL,
  7.     PRIMARY KEY(id),
  8.     --id nvarchar(9) primary key,
  9.     idclient    VARCHAR(50) NOT NULL,
  10.     --foreign key(idclient) references Client(id)
  11. );
  12. GO
  13. CREATE TABLE tblADD_CART(
  14.     idcart      nvarchar(9) NOT NULL,
  15.     idproduct   VARCHAR(50) NOT NULL,
  16.     idshop      VARCHAR(6) NOT NULL,
  17.     PRIMARY KEY(idcart,idproduct,idshop),
  18.     quantity    INT )
  19. ;
  20. GO
  21. CREATE TABLE tblCATEGORY(
  22.     id              CHAR(3) NOT NULL,
  23.     PRIMARY KEY(id),
  24.     name            nvarchar(30),
  25.     quantity        INT         DEFAULT 0           --- tt dẫn xuất
  26. );
  27. GO
  28. CREATE TABLE tblBELONG_CATEGORY(
  29.     idproduct   VARCHAR(50) NOT NULL,
  30.     idcate      CHAR(3) NOT NULL,
  31.     PRIMARY KEY(idcate,idproduct)
  32. );
  33. GO
  34. /*Insert data*/
  35. INSERT INTO tblCART VALUES ('1',12);
  36.  
  37. INSERT INTO tblADD_CART VALUES ('1','123a',167,5);
  38.  
  39. INSERT INTO tblCATEGORY VALUES ('EL',N'Electronics',1);
  40. INSERT INTO tblCATEGORY VALUES ('FA',N'Fashion',1);
  41. INSERT INTO tblCATEGORY VALUES ('BO',N'Book',1);
  42. INSERT INTO tblCATEGORY VALUES ('FO',N'FOOD',1);
  43. INSERT INTO tblCATEGORY VALUES ('ST',N'Stationery',1);
  44. INSERT INTO tblCATEGORY VALUES ('TO',N'Toy',1);
  45.  
  46. INSERT INTO tblBELONG_CATEGORY VALUES ('123a','DT');
  47. GO
  48.  
  49. ALTER TABLE tblCART
  50.     ADD
  51.         CONSTRAINT      fk_cart_customer        FOREIGN KEY (idclient)
  52.     REFERENCES tblCustomer(id_customer)
  53.     ON DELETE CASCADE
  54.     ON UPDATE CASCADE;
  55. GO
  56. --ALTER TABLE tblADD_CART   idproduct   VARCHAR(50);
  57. GO
  58.  
  59. ALTER TABLE tblADD_CART
  60.     ADD
  61.         CONSTRAINT  fk_cart_addcart     FOREIGN KEY (idcart)
  62.     REFERENCES tblCART(id)
  63.     ON DELETE CASCADE
  64.     ON UPDATE CASCADE,
  65.         CONSTRAINT  fk_pro_addcart      FOREIGN KEY (idproduct)
  66.     REFERENCES tblProduct(id)
  67.     ON DELETE CASCADE
  68.     ON UPDATE CASCADE,
  69.         CONSTRAINT  fk_shop_addcart     FOREIGN KEY (idshop)
  70.     REFERENCES tblShop(id)
  71.     ON DELETE CASCADE
  72.     ON UPDATE CASCADE,
  73.         CONSTRAINT  check_quantity      CHECK(quantity>0)
  74. GO
  75.  
  76. ALTER TABLE tblCATEGORY
  77.     ADD
  78.         CONSTRAINT  check_quantity_cate     CHECK(quantity>=0);
  79. GO
  80.  
  81. ALTER TABLE tblBELONG_CATEGORY
  82.     ADD
  83.     CONSTRAINT  fk_cate FOREIGN KEY (idcate)
  84.     REFERENCES tblCATEGORY(id)
  85.     ON DELETE CASCADE
  86.     ON UPDATE CASCADE,
  87.     CONSTRAINT  fk_cate_pro FOREIGN KEY (idproduct)
  88.     REFERENCES tblProduct(id)
  89.     ON DELETE CASCADE
  90.     ON UPDATE CASCADE;
  91. GO
  92. --- procedure insert + validate + print error
  93. CREATE Proc usp_insert_cate
  94.     @id             CHAR(3),
  95.     @name           nvarchar(30),
  96.     @quantity       INT
  97. AS  BEGIN  
  98. --declare set
  99.             BEGIN try
  100.         INSERT INTO tblCATEGORY(id, name, quantity) VALUES (@id, @name, @quantity)
  101.         print 'Insert product successfully'
  102.         RETURN @@ROWCOUNT
  103.             END try
  104. --- catch
  105.             BEGIN catch
  106.         print 'Error insert category
  107. Category was already exist'
  108.         RETURN 0
  109.             END catch
  110.     END
  111. ;
  112. GO
  113. EXEC usp_insert_cate 'HO','home',3;
  114. EXEC usp_insert_cate 'HO','home',-1;
  115. GO
  116. -- trigger after--
  117. CREATE TRIGGER check_quantity_trigger ON tblADD_CART
  118. FOR INSERT
  119. AS
  120. BEGIN
  121.     DECLARE @quantity INT
  122.     SET @quantity = (SELECT quantity FROM inserted)
  123.     IF (@quantity <=0)
  124.     BEGIN
  125.         print 'error: quantity must have value'
  126.         ROLLBACK
  127.     END
  128. END;
  129. GO
  130. INSERT INTO tblADD_CART VALUES ('1','Toy','3',-1);
  131. ---trigger after affect other table---
  132. CREATE TRIGGER Update_QuanofCate ON tblBELONG_CATEGORY
  133. FOR INSERT
  134. AS
  135. BEGIN
  136.  
  137.     DECLARE @idcate CHAR(3)
  138.  
  139.     SELECT @idcate = Inserted.idcate FROM Inserted
  140.  
  141.     UPDATE tblCATEGORY SET quantity=quantity+1 WHERE id = @idcate
  142.  
  143. END
  144. GO
  145. INSERT INTO tblBELONG_CATEGORY VALUES ('231','HO');
  146. SELECT TOP 10 *
  147.         FROM tblCATEGORY
  148.         ORDER BY quantity ASC;
  149. GO
  150. --Procedure has Query Statement hiểnthị dữ liệu,tham số đầu vào là giá trị trong mệnh đề WHERE và/hoặc Having
  151. --a. 1 câu truy vấn từ 2 bảng trở lên có mệnh đề where, order by---
  152. CREATE prOC usp_Sort_Name_Cate
  153.     AS
  154.     BEGIN
  155.  
  156.     END
  157. GO
  158. CREATE prOC usp_List_Cart       -- Link 4 relation: cart, product, addcart, customer
  159.     @first_name     NVARCHAR(20),
  160.     @last_name      NVARCHAR(20)
  161.     AS
  162.     BEGIN
  163.     DECLARE @id_cus VARCHAR(50)
  164.     SELECT @id_cus = id_customer FROM tblCustomer
  165.     WHERE first_name=@first_name AND last_name=@last_name;
  166.     SELECT idproduct,name AS name_pro,  idshop, quantity
  167.     FROM    (tblADD_CART INNER JOIN tblProduct
  168.     ON  tblADD_CART.idproduct=tblProduct.id) INNER JOIN tblCART
  169.     ON  tblADD_CART.idcart=tblCART.id
  170.     WHERE   tblCART.idclient=@id_cus
  171.     ORDER BY quantity ASC
  172.     --Select id_customer from tblCustomer
  173.  
  174.     END
  175. GO
  176. EXEC    usp_List_Cart 'b','a'
  177. WITH RESULT SETS
  178. (
  179. (
  180. [Product ID] VARCHAR(50),
  181. [Product Name] nvarchar(100),
  182. [Shop ID] VARCHAR(50),
  183. [ORDER Quantity] INT
  184. )
  185. )
  186. GO
  187. --procedure có aggreate function, group by, having, where và order by có liên kết từ 2 bảng trở lên
  188. CREATE PROCEDURE usp_Pro_MulFunction
  189.     -- Add the parameters for the stored procedure here
  190.     @name_pro nvarchar(100)
  191. AS
  192. BEGIN
  193.     -- SET NOCOUNT ON added to prevent extra result sets from
  194.     -- interfering with SELECT statements.
  195.     SET NOCOUNT ON;
  196.     -- Insert statements for procedure here
  197.     SELECT idcate, name
  198.     FROM tblBELONG_CATEGORY INNER JOIN
  199.             tblCATEGORY ON idcate=id
  200.     WHERE idproduct IN (SELECT idproduct
  201.     FROM tblBELONG_CATEGORY
  202.     GROUP BY idproduct
  203.     HAVING COUNT(idcate) > 1)
  204.     AND idproduct IN (SELECT id FROM tblProduct
  205.                         WHERE name=@name_pro)
  206. END
  207. GO
  208. EXEC usp_Pro_MulFunction 'book'
  209. WITH RESULT sets (
  210.     ( [Code Cate] VARCHAR(50) ,
  211.         [Name Cate] VARCHAR(50)
  212.     )
  213. )
  214.  
  215. GO
  216. /* Chứa câu lệnh IF và/hoặc LOOP để tính toán dữ liệu được lưu trữ
  217. b. Chứa câu lệnh truy vấn dữ liệu, lấy dữ liệu từ câu truy vấn để kiểm tra tính toán
  218. c. Có tham số đầu vào và kiểm tra tham số đầu vào
  219. Mỗi thành viên viết 2 câu SELECT để minh họa việc gọi hàm trong câu SELECT */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement