假期SQL练习

建立表

CREATE TABLE Customers
        
      (ID   CHAR(9) PRIMARY KEY,     
             
  FIRST_NAME CHAR(15),
               MI CHAR(1),        
     
          LAST_NAME   CHAR(15),
     
               STREET   CHAR(20),
               CITY  CHAR(15),
              ST CHAR(2),
              ZIP CHAR(5)
); 
  
  
insert into Customers values('100','Michael','A','Corleone','123 Pine','New York','NY','10006');
insert into Customers values('101','Fredo','V','Corleone','19 Main','New York','NY','10007');
insert into Customers values('103','Francis','X','Corleone','17 Main','New York','NY','10005');
insert into Customers values('106','Kay','K','Adams','109 Maple','Newark','NJ','12345');
insert into Customers values('107','Francis','F','Coppola','123 Sunset','Hollywood','CA','23456');
insert into Customers values('108','Mariol','S','Puzo','124 Vine','Hollywood','CA','23456');

CREATE TABLE Inventory  
        
      (Item_Number   CHAR(9) PRIMARY KEY,     
             
  Name CHAR(20) UNIQUE,        
     
          Description   CHAR(10),
     
               Qty  SMALLINT,
  
               Cost  FLOAT
); 
  
  
insert into Inventory values('1001','Corn Flakes','Cereal',178,1.95);
insert into Inventory values('1002','Rice Krispies','Cereal',97,1.87);
insert into Inventory values('1003','Shredded Wheat','Cereal',103,2.05);
insert into Inventory values('1004','Oatmeal','Cereal',15,0.98);
insert into Inventory values('1005','Chocolate Chip','Cookies',217,1.26);
insert into Inventory values('1006','Fig Bar','Cookies',162,1.57);
insert into Inventory values('1007','Sugar Cookies','Cookies',276,1.03);
insert into Inventory values('1008','Cola','Soda',144,0.61);
insert into Inventory values('1009','Lemon','Soda',96,0.57);
insert into Inventory values('1010','Orange','Soda',84,0.71);

CREATE TABLE Ordered_Item
        
      (ID   CHAR(9) PRIMARY KEY,     
             
  Order_Number CHAR(2),
               Item_Number CHAR(9) ,        
               Qty  SMALLINT,
  
               ); 
  
insert into Ordered_Item values('5000','2','1001',2);
insert into Ordered_Item values('5001','2','1004',1);
insert into Ordered_Item values('5002','2','1005',4);
insert into Ordered_Item values('5003','2','1010',6);
insert into Ordered_Item values('5004','3','1006',4);
insert into Ordered_Item values('5005','3','1009',2);
insert into Ordered_Item values('5006','4','1002',5);
insert into Ordered_Item values('5007','4','1003',2);
insert into Ordered_Item values('5008','5','1006',3);
insert into Ordered_Item values('5009','5','1007',1);
insert into Ordered_Item values('5010','5','1008',2);

CREATE TABLE Orders  
        
      (Order_Number   CHAR(1) PRIMARY KEY,     
             
  Customer_ID CHAR(3),
               Order_Date CHAR(10) ,        
               Ship_Date CHAR(10)
 
               ); 
insert into Orders values('2','101','12/8/01','12/10/01');
insert into Orders values('3','103','12/9/01','12/11/01');
insert into Orders values('4','104','12/9/01','12/11/01');
insert into Orders values('5','120','12/12/01','12/14/01');
insert into Orders values('6','106','12/10/01','12/12/01');
insert into Orders values('7','121','12/14/01','12/16/01');

Customer表

Inventory表

Ordered_Item表

Orders表

更改表

将FAX号这一列添加到Customers表中

ALTER TABLE CUSTOMERS ADD FAX VARCHAR(20)

改变列宽  将FAX列的大小改成30

ALTER TABLE CUSTOMERS ALTER COLUMN FAX VARCHAR(30)

完全取消FAX列   FAX列消失

ALTER TABLE CUSTOMERS DROP COLUMN FAX

取消表    CUSTOMERS表会被删除

DROP TABLE CUSTOMERS

创建,更改和取消视图

创建一个视图

CREATE VIEW VIEWCORLEONES AS
SELECT *
FROM Customers
WHERE LAST_NAME='Corleone'

对 VIEWCORLEONES 视图做查询

SELECT *
FROM VIEWCORLEONES
WHERE MI='A'

转换视图

更改之前建立好的视图

ALTER VIEW ViewCorleones AS
SELECT FIRST_NAME,LAST_NAME
FROM Customers
WHERE LAST_NAME='Corleone'

更新视图

UPDATE VIEWCORLEONES
SET STREET='19 Main'
WHERE FIRST_NAME='vito'

INSERT语句

INSERT INTO Customers
(ID,FIRST_NAME,MI,LAST_NAME,STREET,CITY,ST,ZIP) VALUES
('123','Brant','G','Kobe','131 Maple','Los Angeles','LA','12345');

使用INSERT...SELECT

INSERT INTO Names
SELECT FIRST_NAME,LAST_NAME
FROM Customers

在INSERT...SELECT中使用WHERE子句

INSERT INTO Names
SELECT FIRST_NAME,LAST_NAME
FROM Customers
WHERE LAST_NAME='Corleone'

UPDATE语句

UPDATE Customers
SET STREET='55 Broadway',ZIP='10006'
WHERE FIRST_NAME='Michael' and LAST_NAME='Corleone'

UPDATE中使用经过计算的值

UPDATE Inventory
SET Qty=Qty+24
WHERE Name='Corn Flakes'

使用触发器验证UPDATE更有效

创建一个触发器,功能是 自动备份或取消视图将账户表中的某项成本增加15%的操作

CREATE TRIGGER FifteenPctRule ON inventory FOR INSERT,UPDATE AS
DECLARE @NewCost money
DECLARE @OldCOst money
SELECT @NewCost =Cost FROM inserted
SELECT @OldCOst= Cost FROM deleted
IF @NewCost>(@OldCOst*3.15)
ROLLBACK TRANSACTION;

使用LIKE和NOT LIKE运算符

在Customer表中查找姓氏以“C”开头的全部记录

SELECT *
FROM Customers
WHERE LAST_NAME LIKE 'C%'

查找姓氏第二个字母为“O”的全部记录

SELECT *
FROM Customers
WHERE LAST_NAME LIKE '_o%'

在Customer表中查找姓氏不以“C”开头的全部记录

SELECT *
FROM Customers
WHERE LAST_NAME  NOT LIKE 'C%'

使用连接符

使用连接运算符(+或||)将一个字符串连接在另一个字符串后。

将名字连接在姓氏之后,之前用都好进行分离

SELECT Last_Name+','+First_Name
AS Name
FROM Customers

逻辑运算符

AND运算符

在Customer表中查找居住在New York,姓氏为Corleone的所有记录

SELECT *
FROM Customers
WHERE LAST_NAME='Corleone' and CITY='New York'

OR运算符

在Customer表中查找居住在New York或New Jersey的所有记录

SELECT *
FROM Customers
WHERE  ST='NJ'OR CITY='New York'

NOT运算符

在Customer表中查找不居住在New York或New Jersey 姓氏为Corleone 的所有顾客

SELECT *
FROM Customers
WHERE Last_Name='Corleone' and NOT(ST='NJ'OR CITY='New York')

算数运算符

查找库存中低于Qty低于24的产品

SELECT *
FROM Inventory
WHERE Qty<24

如果在成本上增加60%计算售价,列出售价低于100.00的项

SELECT Name,Description,Cost,Cost*1.6 AS Retail
FROM Inventory
WHERE Cost*1.6<100

IN运算符

找到New York State或New Jersey的联系人

SELECT *
FROM Customers
WHERE ST IN('NY','NJ')

使用Item_Number从Inventory表中选择产品

SELECT *
FROM Inventory
WHERE Item_Number IN(1001,1003,1004)

BETWEEN运算符

查询价格在1.9~3之前的项

SELECT *
FROM Inventory
WHERE Cost BETWEEN 1.9 AND 3

TOP运算符

TOP运算符指定只输出查询结果集中的前n行,或者前n%行。使用PERCENT时,n必须是0~100之间的整数

SELECT TOP 25 PERCENT *
FROM Inventory

对查询结果排序

SELECT First_Name,Last_Name,City,ST
FROM Customers
WHERE LAST_NAME='Corleone'
ORDER BY FIRST_NAME

将所有的Corleones按名字得升序进行排列

SELECT *
FROM Customers
WHERE LAST_NAME='Corleone'
ORDER BY FIRST_NAME DESC

Last_Name按升序排列,然后First_Name按降序排列

SELECT FIRST_NAME,MI,LAST_NAME,STREET,CITY,ST,ZIP
FROM Customers
ORDER BY LAST_NAME, FIRST_NAME DESC

 

猜你喜欢

转载自blog.csdn.net/qq_41398448/article/details/81159142
今日推荐