laboratornye raboty sqlserver result
DESCRIPTION
Laboratornye Raboty Sqlserver ResultTRANSCRIPT
1
-
,
. .
- -
2005
. .
: - . \SYMBOL 150 \f "Times New Roman Cyr" .: , 2005. \SYMBOL 150 \f "Times New Roman Cyr" ??.
ISBN
, -. Microsoft SQL Server. SQL . . , .
:
,
. .
- ,
. .
\SYMBOL 169 \f "Arial Cyr" .., 2005
\SYMBOL 169 \f "Arial Cyr" , 2005.
351400 ( ), . , .
. -, - . -, SQL (Structured Query Language) .
- (, DBMS -). , MicrosoftAccess MicrosoftVisualFoxPro, . - ( ) . () . , , . : C, C++, C#, Java, Basic, Pascal ..
SQL , (query), , . , . (result set) , . SQL. Microsoft SQLServer2000. SQLServer , : Enterprise Manager Query Analyzer. Enterprise Manager . Query Analyzer Transact SQL SQL, Microsoft.
TradeSQL, . . Products . Sales , Purchases .
1 TradeSQL . , .
2 ( DEFAULT, CHECK), -. (VIEW) .
3 SELECT SQL . , , .
4 5 . -, . TradeSQL . ( ) ( ) . , . , Products , . Sales Purchases, .
6 . , (, ), ( ODBC, ).
, , . A . A , .
B TradeSQL. , .
C . . .
1.
1.1. SQL Server
1. SQLServer Enterprise Manager.
2. , Databases .
3. Databases New Database4. General Database Properties Name TradeSQL.
5. Data Files Transaction Log , , . D:\Student\.
6. OK, .
7. TradeSQL .
TradeSQL? , ? ? ()
1. TradeSQL, All Tasks | Generate SQL Script2. Generate SQL Scripts Options. Script Database OK.
3. D:\Student\Lab01\ CreateDb.sql.
4. OK .
1. SQL Query Analyzer.
2. (local) D:\Student\Lab01\CreateDb.sql.
3. , , .
4. . SQL- DROP DATABASE TradeSQL. CREATE DATABASE . sp_dboption . USE .
5. . , (Results Pane).
1.2.
c
1. SQLServer Enterprise Manager.
2. Tables , New Table3. Prod_id, int, NULL . Prod_name, char, 50, NULL .
4. Prod_id. Prod_id, Set Primary Key.
5. Identity () . Columns
6. New Table Products.
c
1. () Products , Open Table | Return all rows
2. Prod_name Enter. . , Prod_id Identity.
3. Data in Table c Transact-SQL1. SQL Query Analyzer.
2. , New query (trl+N) .
3. Transact-SQL
USE TradeSQL
GO
CREATE TABLE dbo.Sales (
Sale_id int IDENTITY (1, 1) NOT NULL PRIMARY KEY ,
Sale_date datetime NOT NULL ,
Prod_id int NOT NULL ,
Quantity numeric (8,0) NOT NULL ,
Price numeric (8,2) NOT NULL
)
GO4. , Parse query (trl+F5) . , , Execute query (F5).
5. SQLServer Enterprise Manager , .
6. SQL Query Analyzer. ,
USE TradeSQL
GO
INSERT dbo.Sales (Sale_date, Prod_id, Quantity, Price)
VALUES ('20030301', 1, 8, 40)
GO
SELECT * FROM dbo.Sales
GO. SQL- INSERT . SELECT .
1.3.
1. SQL Query Analyzer. ,
USE TradeSQL
GO
ALTER TABLE dbo.Products ADD Unt_of_mes char(20)
GO
UPDATE dbo.Products SET Unt_of_mes = N'.'
GO
SELECT * FROM dbo.Products
GO
. ALTER TABLE . UPDATE ; WHERE , .
1. , , Unt_of_mes, 10 ( ):
USE TradeSQL
GO
ALTER TABLE dbo.Products
ALTER COLUMN Unt_of_mes char(10) NOT NULL
GO 1.4.
1. SQLServer Enterprise Manager.
2. () Sales , Design Table.
3. Table and Index Properties ( ).
4. Relationships New.
5. Primary Key Table Products. Prod_id.
6. Foreign Key Table Sales. Prod_id.
7. Close () Properties. Design Table, .
. (Foreign Key) Prod_id Sales, -- Products.
6. SQL Query Analyzer. ,
USE TradeSQL
GO
INSERT dbo.Sales (Sale_date, Prod_id, Quantity, Price)
VALUES ('20030301', 555, 1, 10)
GO ? ? c Transact-SQL1. SQL Query Analyzer. ,
USE TradeSQL
GO
CREATE TABLE dbo.Purchases (
Pur_id int IDENTITY (1, 1) NOT NULL PRIMARY KEY ,
Pur_date datetime NOT NULL ,
Prod_id int NOT NULL ,
Quantity numeric (8,0) NOT NULL ,
Price numeric (8,2) NOT NULL
)
GO
ALTER TABLE dbo.Purchases
ADD CONSTRAINT FK_Purchases_Products
FOREIGN KEY (Prod_id)
REFERENCES dbo.Products (Prod_id)
GO. ALTER TABLE .
2. SQLServer Enterprise Manager , . (, Tables .)
1.5.
1. SQLServer Enterprise Manager.
2. Diagrams , New Database Diagram (Create Database Diagram Wizard).
3. , (Available Tables) Sales. Add>, . Products Purchases.
4. , . TradeSQL, .
5. Save ( ) . Diagram1, OK.
6. . : Diagram1. 1.6.
,
1. SQLServer Enterprise Manager. TradeSQL, All Tasks | Generate SQL Script2. Generate SQL Scripts General ShowAll. Script All Objects Preview.
3. Generate SQL Script Preview. 2 , 3 . 3 , . Close Generate SQL Script Preview.
4. , . Options Table Scripting Options Script PRIMARY keys, FOREIGN keys, defaults, and check constraints.
5. General Preview .
?6. OK Generate SQL Script. D:\Student\Lab01\ CreateTables.sql.
7. OK .
8. SQL Query Analyzer , .
9. D:\Student\Lab01\CreateTables.sql.
10. . , (Results Pane).
2. , ,
1. Query Analyzer.
2. SQL- (local) \\ntserver\SQLServer\Lab02\CreateDb2.sql. , . TradeSQL .
3. , , .
4. .
2.1.
1. Query Analyzer
USE TradeSQL
GO
INSERT dbo.Products (Prod_name)
VALUES ('')
GO2. , INSERT , , NULL ( Identity ()), . .
1. Enterprise Manager.
2. , TradeSQL . Tables . () Products , Design Table.
3. (Unt_of_mes) . Columns Default Value .
4. Design Table, .
5. SQL Query Analyzer. . INSERT .
6.
SELECT * FROM dbo.Products c Transact-SQL1. Query Analyzer. ,
USE TradeSQL
GO
ALTER TABLE dbo.Products
DROP CONSTRAINT DF_Products_Unt_of_mes
GO
ALTER TABLE dbo.Products ADD CONSTRAINT
DF_Products_Unt_of_mes DEFAULT '.' FOR Unt_of_mes
GO
. ALTER TABLE . ALTER TABLE ( - ) .
2.2. (Check)
Check
1. Enterprise Manager. () Sales , Design Table.
2. Table and Index Properties ( ).
3. Check Constraints New. Constraint expression
Price > 0
4. New
Quantity > 0
5. Close () Properties. Design Table, .
Check
1. Query Analyzer. ,
USE TradeSQL
GO
UPDATE dbo.Sales SET Price = 0 WHERE Sale_id = 1
GO2. .
Check c Transact-SQL1. SQL Query Analyzer. ,
USE TradeSQL
GO
ALTER TABLE dbo.Purchases ADD CONSTRAINT
CK_Purchases CHECK ([Price] > 0)
GO
ALTER TABLE dbo.Purchases ADD CONSTRAINT
CK_Purchases_1 CHECK ([Quantity] > 0)
GO Purchases, , Sales Enterprise Manager.
2.3.
1. Enterprise Manager. Views , New View2. Add table ( ) New View3. Sales, Products. Add tables.
4. Sales.Sale_id, Sales.Date_sale, Sales.Prod_id, Products.Prod_name, Sales.Quantity, Sales.Price.
5. Properties ( ). TOP ( Sales ) Properties.
6. Run ( ) Results Pane.
7. New View, SalesWithNames.
8. PurchasesWithNames, (Purchases).
1. SQL Query Analyzer. ,
USE TradeSQL
GO
INSERT INTO PurchasesWithNames
(Pur_date, Prod_id, Quantity, Price)
VALUES ('20030303', 4, 12, 3.55)
GO
SELECT * FROM PurchasesWithNames
GO , SQL, .
2. , , ? ? 2.4.
1. Enterprise Manager. Views , New View2. Add table ( ) New View
3. Sales Add tables.
4. Use Group By ( ) New View Grid Pane Group By.
5. Prod_id Quantity. Grid Pane Sum() Quantity Group By., . Alias Expr1 Qty_tot. Quantity * Price Turnover () , .
6. Run ( ) Results Pane.
7. New View, SalesGroupedByProducts.
8. Products, .
9. (Turnover).
10. PurchasesGroupedByProducts, (Purchases).
11. , SQL Query Analyzer.
12. SalesGroupedByProducts PurchasesGroupedByProducts ? 3. SQL-
1. Query Analyzer.
2. SQL- (local) \\ntserver\SQLServer\Lab03\CreateDb3.sql. , . TradeSQL .
3. , , .
4. .
3.1.
1. Query Analyzer
USE TradeSQL
GO
SELECT Prod_name AS [],
Unt_of_mes AS [ ]
FROM Products
GO2. . Grid , .
1. , . Query Analyzer
USE TradeSQL
GO
SELECT Sale_date AS [ ],
Prod_id,
Quantity AS [],
Price AS [],
Quantity * Price AS []
FROM SalesGO2. . , .
3. , ? , .
3.2.
1. . , , Products. . JOIN ON 2. Query Analyzer. ,
USE TradeSQL
GO
SELECT Sales.Sale_date AS [ ],
Sales.Prod_id,
Products.Prod_name AS [],
Sales.Quantity * Sales.Price AS []
FROM Sales INNER JOIN Products
ON Sales.Prod_id = Products.Prod_id
GO. , Sales Products (JOIN), ON . . , , . (INNER) , INNER .
3. . Query Analyzer
USE TradeSQLGO
SELECT Sales.Sale_date AS [ ],
Sales.Prod_id,
Products.Prod_name AS [],
Sales.Quantity * Sales.Price AS []
FROM Sales, Products
WHERE Sales.Prod_id = Products.Prod_id
GO WHERE. , .
1. SELECT . . FROM. , , SELECT .
2. Query Analyzer. ,
USE TradeSQL
GO
SELECT s.Sale_date AS [ ],
s.Prod_id,
p.Prod_name AS [],
s.Quantity * s.Price AS []
FROM Sales s JOIN Products p
ON s.Prod_id = p.Prod_id
GO
3.3.
1. () , , . : Sum(), Avg(), Min(), Max(), Count() ..
2. , , .
3. Query Analyzer. ,
USE TradeSQL
GO
SELECT Sum(Quantity * Price) AS []
FROM SalesGO. Quantity Price , . .
3.
USE TradeSQL
GO
SELECT Sum(Quantity * Price) AS [],
Sum(Quantity),
Avg(Quantity),
Max(Price),
Min(Price),
Max(Quantity * Price),
Min(Quantity * Price),
Count(*)
FROM Sales
GO4. .
5. Sales ? 6. .
1. . , , . , Sales, . GROUP BY. , , : .
2. SQL Query Analyzer. ,
USE TradeSQL
GO
SELECT Sale_date AS [ ],
Sum(Quantity * Price) AS []
FROM Sales
GROUP BY Sale_date
GO
3. SQL Query Analyzer. ,
USE TradeSQL
GO
SELECT Prod_id,
Max(Quantity * Price) AS [ ]
FROM Sales
GROUP BY Prod_id
ORDER BY [ ] DESCGO , , , .
4. Sales, . .
5. , , .
3.4.
1. SQL Query Analyzer. ,
USE TradeSQL
GO
INSERT Products (Prod_name, Unt_of_mes)
VALUES ('', '')
GO
. Products. Sales, .
2. SQL Query Analyzer. ,
USE TradeSQL
GO
SELECT s.Sale_date AS [ ],
s.Prod_id,
p.Prod_name AS [],
s.Quantity * s.Price AS []
FROM Sales s JOIN Products p
ON s.Prod_id = p.Prod_id
GO3. , Sales . Products, (OUTER JOIN). RIGHT OUTER JOIN, JOIN LEFT OUTER JOIN, .
4. Query Analyzer
USE TradeSQL
GO
SELECT s.Sale_date AS [ ],
s.Prod_id,
p.Prod_name AS [],
s.Quantity * s.Price AS []
FROM Sales s RIGHT OUTER JOIN Products p
ON s.Prod_id = p.Prod_id
GO 3.5. UNION
1. : , . , , Sales. , Products . IN.
2. SQL Query Analyzer. ,
USE TradeSQLGO
SELECT Prod_id, Prod_name
FROM Products
WHERE Prod_id NOT IN
(SELECT DISTINCT Prod_id FROM Sales)
GO. ( ) , . IN , ( Prod_id Products) . NOT IN, , .
3. , , 30 . : . UNION1. , , . , , - ( , ). UNION.
2. SQL Query Analyzer. ,
USE TradeSQL
GO
SELECT a.Pur_date AS Date_wrk
FROM Purchases a
UNION
SELECT b.Sale_date
FROM Sales bGO , , , .
4.
1. Query Analyzer.
2. SQL- (local) \\ntserver\SQLServer\Lab04\CreateDb4.sql. , . TradeSQL .
3. , , . .
4.1
1. SQL Query Analyzer. ,
EXEC sp_helpdb sp_helpdb. . , , .
2. . , sp_helpdb : . . sp_helpdb ; .
3.
EXEC sp_helpdb TradeSQL . .
4. . :
EXEC sp_helpdb @dbname = TradeSQL , .
5. , SQLServer. SQL Query Analyzer Shift+F1.
4.2.
1. Enterprise Manager.
2. , TradeSQL . Stored Procedures . , New Stored Procedure
3. Text Stored Procedure Properties CREATE PROCEDURE dbo.insert_Products
( @Prod_id_ int OUTPUT,
@Prod_name_ char(50),
@Unt_of_mes_ char(10) = '.'
)
AS
INSERT INTO dbo.Products (Prod_name, Unt_of_mes)
VALUES (@Prod_name_, @Unt_of_mes_)
SET @Prod_id_ = @@IDENTITY
GO
. insert_Products Products. : ( @Prod_name_) , , ( @Unt_of_mes_). @Unt_of_mes_ , (.). insert_Products @Prod_id_, Prod_id .
4. Check Syntax .
5. Stored Procedure Properties, OK.
1. SQL Query Analyzer. ,
USE TradeSQL
GO
DECLARE @NewProdId int, @NewProdName char(50)
SET @NewProdName = ''
EXEC insert_Products @NewProdId OUTPUT, @NewProdName
SELECT @NewProdId AS Res EXEC. , (@NewProdId). SELECT Result Pane.
2.
SELECT * FROM Products3. , , insert_Products . 4.3.
c Transact-SQL1. SQL Query Analyzer ,
USE [TradeSQL]
GO
CREATE PROCEDURE dbo.Remains
AS
SELECT Operations.Prod_id,
SUM(Operations.Qnty_tot) AS Remain
FROM (
SELECT Prod_id, -SUM(Quantity) AS Qnty_tot
FROM dbo.Sales
GROUP BY Prod_id
UNION ALL
SELECT Prod_id, SUM(Quantity) AS Qnty_tot
FROM dbo.Purchases
GROUP BY Prod_id
) AS Operations
GROUP BY Operations.Prod_id
GO. Remains , / . SELECT Sales Purchases, ( ) . UNION, Operations. SELECT ( Operations), ( ) , , .
2.
EXEC Remains3. , , RemainsWithNames. , , . (: Products, Operations Prod_id). , datetime . .4.
EXEC RemainsWithNames '20030301'
EXEC RemainsWithNames '20030302'
RemainsWithNames ? 5.
1. Query Analyzer.
2. SQL- (local) \\ntserver\SQLServer\Lab05\CreateDb5.sql. , . TradeSQL .
3. , , .
4. .
5.1.
Remain () Products, . , , , . , . Sales Purchases, .
1. Query Analyzer, : \\ntserver\SQLServer\Lab05\Remain.sql. Products Remain, .
2. .
1. SQL Query Analyzer ,
USE [TradeSQL]
GO
CREATE TRIGGER RemSalesInsert
ON Sales
FOR INSERT
AS
UPDATE p SET p.Remain = p.Remain - i.Quantity
FROM Products p INNER JOIN inserted i
ON p.Prod_id = i.Prod_id
GO. , Sales. (Remain) Products, , Quantity Sales. Inserted, , , ( Sales).
2.
SELECT * FROM Products WHERE Prod_id = 1
INSERT Sales (Sale_date, Prod_id, Quantity, Price)
VALUES ('20030304', 1, 100, 40)
SELECT * FROM Products WHERE Prod_id = 1
, Prod_id = 1 Products 100, INSERT Sales.
1. SQL Query Analyzer ,
USE [TradeSQL]
GO
CREATE TRIGGER RemSalesDelete
ON Sales
FOR DELETE
AS
UPDATE p SET p.Remain = p.Remain + d.Quantity
FROM Products p INNER JOIN deleted d
ON p.Prod_id = d.Prod_id
GO. , Sales. (Remain) Products, , Quantity Sales. Deleted, , , ( Sales).
2.
SELECT * FROM Products WHERE Prod_id = 1
DELETE dbo.Sales
WHERE Sale_date = '20030304'
SELECT * FROM Products WHERE Prod_id = 1
, Prod_id = 1 Products 100, DELETE Sales.
3. SQL Query Analyzer ,
USE [TradeSQL]
GO
CREATE TRIGGER RemSalesUpdate
ON Sales
FOR UPDATE
AS
UPDATE p SET p.Remain = p.Remain - i.Quantity + d.Quantity
FROM Products p
INNER JOIN inserted i ON p.Prod_id = i.Prod_id
INNER JOIN deleted d ON p.Prod_id = d.Prod_id
GO. , Sales. (Remain) Products, , Quantity Sales. Inserted Deleted, Sales, .
4.
SELECT * FROM dbo.Products
UPDATE dbo.Sales SET Quantity = Quantity + 20
WHERE Sale_date = '20030301'
SELECT * FROM dbo.Products
, , 1 , Products 20, UPDATE Sales.
1. SQL Query Analyzer ,
USE [TradeSQL]
GO
CREATE TRIGGER RemPurchases
ON Purchases
FOR INSERT, UPDATE, DELETE
AS
IF EXISTS(SELECT * FROM inserted)
BEGIN
UPDATE p SET p.Remain = p.Remain + i.Quantity
FROM Products p INNER JOIN inserted i
ON p.Prod_id = i.Prod_id
END
IF EXISTS(SELECT * FROM deleted)
BEGIN
UPDATE p SET p.Remain = p.Remain - d.Quantity
FROM Products p INNER JOIN deleted d
ON p.Prod_id = d.Prod_id
END
GO
. , , Purchases. Inserted Deleted , , Products. , Quantity Purchases Sales.
2.
SELECT * FROM Products WHERE Prod_id = 1
/* +100 */
INSERT Purchases (Pur_date, Prod_id, Quantity, Price)
VALUES ('20030305', 1, 100, 28.5)
SELECT * FROM dbo.Products
/* -60 */
UPDATE Purchases SET Quantity = Quantity - 60
WHERE Pur_date = '20030305' AND Prod_id = 1
SELECT * FROM Products WHERE Prod_id = 1
/* -40 */
DELETE Purchases
WHERE Pur_date = '20030305'
SELECT * FROM dbo.Products WHERE Prod_id = 1
, Prod_id = 1 Products , Sales.
6. -
1. Query Analyzer.
2. SQL- (local) \\ntserver\SQLServer\Lab06\CreateDb6.sql. , . TradeSQL .
3. , , .
4. .
6.1. ODBC
, (Data Source Name, DSN). , , .
(ODBC-), , , ODBC (Open Database Connectivity). DSN , ODBC-.
ODBC
1. , , . , ODBC.
2. System DSN ( DSN) Add (), Create New Data Source ( ) SQLServer .
3. New Data Source to SQL Server TradeDS ( Name), (Description) . Server (local). .
4. : With SQL Server authentication, LoginID sa, Password () . .
5. Change the default database to TradeSQL. .
6. . TradeDS. Test Data Source TESTS COMPLETED SUCCESSFULLY!
7. OK, .
8. TradeDS. OK.
Excel1. MS Excel. , , .
2. TradeDS. , . OK.
3. SalesWithNames . .
4. , . .
5. , . .
6. test.dqy. , Microsoft Excel, .
7. , OK. , SalesWithNames TradeDS Excel. , , , Excel .
8. Excel TradeSQL.xls.
9. 2 PurchasesWithNames, 3 - Products.
6.2. MS Visual C++
ODBC , . , ODBC- .
MS Visual C++ MFC, , Windows. MFC ODBC CDatabase CRecordset. CDatabase DSN ; CRecordset SQL .
, MFC1. MS Visual C++ 6.0. File, New. New Projects Win32 Console Application, Project name TradeMFC. OK.
2. ( ) An application that supports MFC ( MFC). Finish, , Application Wizard, OK.
3. Workspace FileView. TradeMFC files, Header Files StdAfx.h . #include MFC, #include / C++.
4. #include afxdb.h MFC,
#include
#include
#include
#include
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include
#endif
#include
#include
(, , , .) StdAfx.h, .
5. FileView Workspace TradeMFC files Source Files TradeMFC.cpp. _tmain. AfxWinInit, MFC, , Application Wizard:
// TODO: code your application's behavior here.
CString strHello;
strHello.LoadString(IDS_HELLO);
cout