answer.indd

Similar documents
1 SQL Server SQL Oracle SQL SQL* Plus PL/SQL 2 SQL Server SQL Server SQL Oracle SQL SQL*Plus SQL Server GUI 1-1 osql 1-1 Transact- SQL SELECTFROM 058

,, create table drop table alter table

Exam : J Title : Querying Microsoft SQL Server 2012 Version : DEMO 1 / 10

橡実践Oracle Objects for OLE

1,.,,,., RDBM, SQL. OSS,, SQL,,.

橡j_Oracle_whitepaper.PDF

領域サイズの見積方法

1 ex01.sql ex01.sql ; user_id from (select user_id ;) user_id * select select (3+4)*7, SIN(PI()/2) ; (1) select < > from < > ; :, * user_id user_name

Microsoft PowerPoint - db03-5.ppt

日本オラクル株式会社

: ORDER BY

PowerPoint -O80_REP.PDF

3 Powered by mod_perl, Apache & MySQL use Item; my $item = Item->new( id => 1, name => ' ', price => 1200,

TopLink È... 3 TopLink...5 TopLink åø... 6 TopLink å Workbench O/R ~... 8 Workbench À ~... 8 Foundation Library å... 8 TopL

BC4J...4 BC4J Association JSP BC4J JSP OC4J

ストラドプロシージャの呼び出し方

橡ExCtrlPDF.PDF

SQLite データベース IS04 組み込み 1

ii II Web Web HTML CSS PHP MySQL Web Web CSS JavaScript Web SQL Web

Oracleの領域管理~トラブル防止のテクニック~

PGECons技術ドキュメントテンプレート Ver.3

Oracle Rdb: SQL Update

ODBC を使って MS SQL の ISE 2.1 を設定する

Postgres Plus Advanced Server 9.3パーティションテーブルの特徴と性能検証レポート

XML Consortium & XML Consortium 1 XML Consortium XML Consortium 2

関数サンプル1


Wiki Wiki Wiki...

PostgreSQL カンファレンス 2013 証券取引バックオフィスにおける Oracle から PostgreSQL への マイグレーション SBI ジャパンネクスト証券株式会社 イアン バーウィック

SQL (2) データベース論 Ⅰ 第 7 回 URL 作成者末次文雄 C

Caché SQL に関するよくある質問

Microsoft Word - 430_15_Developing_Stored_Procedure.doc

PowerPoint Presentation

Windowsユーザーの為のOracle Database セキュリティ入門

第 2 章 問合せの基本操作 この章では データベースから情報を検索する際に使用する SELECT コマンド および SELECT コマンドと 同時に使用する句について説明します 1. 問合せとは 2. 基本的な問合せ 3. 列の別名 4. 重複行を一意にする 5. 検索行の絞込み 6. 文字パター

test

第 1 章 条件分岐 この章では 条件に応じて処理を分岐する方法について説明します 1. CASE 式で複雑な条件分岐を実現 2. 関数を使用した条件分岐 3. MERGE 文による条件に応じた DML の実行

2 Java 35 Java Java HTML/CSS/JavaScript Java Java JSP MySQL Java 9:00 17:30 12:00 13: 項目 日数 時間 習得目標スキル Java 2 15 Web Java Java J

KWCR3.0 instration

How to Use the PowerPoint Template

untitled

Introduction Purpose This training course demonstrates the use of the High-performance Embedded Workshop (HEW), a key tool for developing software for

基本サンプル

K227 Java 2

プレポスト【問題】

PowerPoint プレゼンテーション

Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt

Microsoft PowerPoint pptx

Oracle Lite Tutorial

Oracle9i

PowerPoint プレゼンテーション

FileMaker ODBC and JDBC Guide

基本サンプル

~~~~~~~~~~~~~~~~~~ wait Call CPU time 1, latch: library cache 7, latch: library cache lock 4, job scheduler co

FileMaker 16 ODBC と JDBC ガイド

CAC

Oracle Lite Tutorial

ODBC Driver for 4D Server

PostgreSQL 9.3パーティションの効果検証

ハイウォーターマークを知る

関数サンプル2

Microsoft認定資格問題集(70-483_demo)

※サンプルアプリケーションを固めたファイル(orcasample

Oracle Web Conferencing Oracle Collaboration Suite 2 (9.0.4) Creation Date: May 14, 2003 Last Update: Jan 21, 2005 Version: 1.21

Oracle Lite Tutorial

MySQL5.0データベース ログファイルおよびステータスの収集

Microsoft Word - sample_adv-programming.docx

Microsoft Word - Lab5d-DB2組み込みSQL.doc

Advantage CA-Easytrieve Plus

関数サンプル2

PowerRDBconnector説明書(SQLServer編)

Microsoft Word - Live Meeting Help.docx

Microsoft Word - Win-Outlook.docx

Transcription:

1 1 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 supplier(supplier_no, city) supplier_article(supplier_no, article) 2

3 1.9 1.10 3 3.1 3.2 3.3 3

4 3.4 1801 16 3 1 'test' 3.5 4 4.1 4.2 4.3 SET DATEFORMAT ymd; 4.4 SELECT DB_ID('test'); 4.5 SELECT @@VERSION, @@LANGUAGE; 4.6 01000101 11011011 00000110 4

5 4.7 4.8 4.9 5 5.1 CREATE DATABASE test_db ON (NAME = test_db_dat, FILENAME = 'C: tmp test_db.mdf', SIZE = 5, MAXSIZE = UNLIMITED, FILEGROWTH = 8%) LOG ON (NAME = test_db_log, FILENAME = 'C: tmp test_db_log.ldf', SIZE = 2, MAXSIZE = 10, FILEGROWTH = 500KB ); 5.2 ALTER DATABASE test_db ADD LOG FILE ( NAME = test_db_log2, FILENAME = 'C: tmp test_db_log2.ldf', SIZE = 2, MAXSIZE = UNLIMITED, FILEGROWTH = 2 ); 5.3 ALTER DATABASE test_db MODIFY FILE ( NAME = test_db_dat, SIZE = 10MB ); 5

5 5.4 CREATE TABLE customers( customerid CHAR(5) NOT NULL, companyname VARCHAR(40) NOT NULL, contactname CHAR(30) NULL, address VARCHAR(60) NULL, city CHAR(15) NULL, phone CHAR(24) NULL, fax CHAR(24) NULL ); CREATE TABLE orders( orderid INT NOT NULL, customerid CHAR(5) NOT NULL, orderdate DATE NULL, shippeddate DATE NULL, freight MONEY NULL, shipname VARCHAR(40) NULL, shipaddress VARCHAR(60) NULL, quantity INT NULL ); 5.5 ALTER TABLE orders ADD shipregion INT NULL; 5.6 ALTER TABLE orders ALTER COLUMN shipregion CHAR(8) NULL; 5.7 ALTER TABLE orders DROP COLUMN shipregion; 5.8 5.9 DROP TABLE orders; DROP TABLE customers; CREATE TABLE customers( customerid CHAR(5) NOT NULL, companyname VARCHAR(40) NOT NULL, contactname CHAR(30) NULL, address VARCHAR(60) NULL, city CHAR(15) NULL, 6

5 ); phone CHAR(24) NULL, fax CHAR(24) NULL, CONSTRAINT PK_customers PRIMARY KEY(customerid) CREATE TABLE orders( orderid INT NOT NULL, customerid CHAR(5) NOT NULL, orderdate DATETIME NULL, shippeddate DATETIME NULL, freight MONEY NULL, shipname VARCHAR(40) NULL, shipaddress VARCHAR(60) NULL, quantity INT NULL, CONSTRAINT PK_orders PRIMARY KEY(orderid), CONSTRAINT FK_orders FOREIGN KEY(customerid) REFERENCES customers(customerid) ); 5.10 5.11 ALTER TABLE orders ADD CONSTRAINT DF_orders_orderdate DEFAULT GETDATE() FOR orderdate; 5.12 ALTER TABLE orders ADD CONSTRAINT CK_orders_quantity CHECK (quantity BETWEEN 1 AND 30); 5.13 sp_helpconstraint orders; 5.14 ALTER TABLE customers DROP CONSTRAINT PK_customers; 5.15 sp_rename 'customers.city', town; 7

6 6 6.1 SELECT emp_no, project_no, job, enter_date ; 6.2 SELECT emp_no WHERE job = 'Clerk'; 6.3 SELECT emp_no WHERE project_no = 'p2' AND emp_no < 20000; SELECT emp_no WHERE project_no = 'p2' AND emp_no BETWEEN 0 AND 19999; 6.4 SELECT emp_no WHERE enter_date NOT BETWEEN '2007-01-01' AND '2007-12-31'; SELECT emp_no WHERE YEAR(enter_date) <> '2007'; 6.5 SELECT emp_no WHERE project_no = 'p1' AND (job = 'Manager' OR job = 'Analyst'); 6.6 SELECT enter_date WHERE project_no = 'p2' AND job IS NULL; 8

6 6.7 SELECT emp_no, emp_lname WHERE emp_fname LIKE '%t%t%'; 6.8 SELECT emp_no, emp_fname WHERE emp_lname LIKE '_[ao]%es'; 6.9 SELECT emp_no WHERE dept_no IN (SELECT dept_no FROM department WHERE location = 'Seattle'); 6.10 SELECT emp_lname, emp_fname WHERE emp_no IN (SELECT emp_no WHERE CONVERT(DATE, enter_date, 111) = '2007-1-4'); 6.11 SELECT location, COUNT(dept_name) FROM department GROUP BY location; 6.12 6.13 6.14 9

6 6.15 SELECT MAX(emp_no) ; 6.16 SELECT job GROUP BY job HAVING COUNT(job) > 2; 6.17 SELECT DISTINCT emp_no WHERE (job = 'Clerk' OR emp_no IN (SELECT emp_no WHERE dept_no = 'd3')); 6.18 SELECT project_name FROM project WHERE project_no IN (SELECT project_no WHERE job = 'Clerk'); 6.19 6.20 6.21 SELECT project.*, emp_no, job, enter_date FROM project JOIN works_on ON project.project_no = works_on.project_no; SELECT * FROM project CROSS JOIN works_on; 10

6 6.22 6.23 SELECT emp_no, job JOIN project ON works_on.project_no = project.project_no WHERE project_name = 'Gemini'; 6.24 SELECT emp_fname, emp_lname JOIN department ON employee.dept_no = department.dept_no WHERE (dept_name = 'Research' OR dept_name = 'Accounting'); 6.25 SELECT enter_date JOIN employee ON works_on.emp_no = employee.emp_no WHERE job = 'Clerk' AND dept_no = 'd1'; 6.26 SELECT project_name FROM project WHERE project_no IN (SELECT project_no WHERE job = 'Clerk' GROUP BY project_no HAVING COUNT(project_no) > 1); 6.27 SELECT emp_fname, emp_lname JOIN works_on ON employee.emp_no = works_on.emp_no JOIN project ON works_on.project_no = project.project_no WHERE project_name = 'Mercury' AND job = 'Manager'; 6.28 SELECT emp_fname, emp_lname WHERE emp_no IN (SELECT a.emp_no a, works_on b WHERE b.enter_date = a.enter_date AND a.emp_no!= b.emp_no); 11

7 6.29 SELECT emp_no JOIN department ON employee.dept_no = department.dept_no WHERE dept_name = 'Marketing'; SELECT emp_no WHERE dept_no = (SELECT dept_no FROM department WHERE dept_name = 'Marketing'); 7 7.1 INSERT INTO employee VALUES(11111, 'Julia', 'Long', NULL); 7.2 CREATE TABLE emp_d1_d2( emp_no INT NOT NULL, emp_fname CHAR(20) NOT NULL, emp_lname CHAR(20) NOT NULL, dept_no CHAR(4) NULL ); INSERT INTO emp_d1_d2 SELECT emp_no, emp_fname, emp_lname, dept_no WHERE dept_no IN ('d1', 'd2'); SELECT emp_no, emp_fname, emp_lname, dept_no INTO emp_d1_d2 WHERE dept_no IN ('d1', 'd2'); 7.3 CREATE TABLE employee_three( emp_no INT NOT NULL, emp_fname CHAR(20) NOT NULL, emp_lname CHAR(20) NOT NULL, dept_no CHAR(4) NULL ); 12

7 INSERT INTO employee_three(emp_no, emp_fname, emp_lname, dept_no) SELECT emp_no, emp_fname, emp_lname, dept_no WHERE emp_no IN (SELECT emp_no WHERE enter_date BETWEEN '2007-1-1' AND '2007-12-31'); 7.4 UPDATE works_on SET job = 'Clerk' WHERE job = 'Manager' AND project_no = 'p1'; 7.5 UPDATE project SET budget = NULL; 7.6 UPDATE works_on SET job = 'Manager' WHERE emp_no = 28559; 7.7 UPDATE project SET budget = budget / 10 + budget WHERE project_no IN (SELECT project_no WHERE job = 'Manager' AND emp_no = 10102); 7.8 UPDATE department SET dept_name = 'Sales' WHERE dept_no = (SELECT dept_no WHERE emp_lname = 'James'); 7.9 UPDATE works_on SET enter_date = '2007-12-12' WHERE project_no = 'p1' AND emp_no IN (SELECT emp_no JOIN department ON employee.dept_no = department.dept_no WHERE dept_name = 'Sales'); 13

8 7.10 DELETE FROM department WHERE location = 'Seattle'; 7.11 DELETE WHERE project_no = 'p3'; DELETE FROM project WHERE project_no = 'p3'; 7.12 DELETE WHERE emp_no IN (SELECT emp_no WHERE dept_no IN (SELECT dept_no FROM department WHERE location = 'Dallas')); 8 8.1 DECLARE @i INT; DECLARE @first_name CHAR(20); DECLARE @last_name CHAR(20); DECLARE @department CHAR(4); SET @i = 1; SET @first_name = 'Jane'; SET @last_name = 'Smith'; SET @department = 'd1'; WHILE @i < 3001 BEGIN INSERT INTO employee VALUES(@i, @first_name, @last_name, @department) SET @i = @i + 1; END; 8.2 DECLARE @i INT; DECLARE @emp_no INT; SET @i = 0; SET @emp_no = (CONVERT(INT, (RAND()*10000))); WHILE @i < 3000 14

9 BEGIN WHILE (SELECT COUNT(*) WHERE emp_no = @emp_no) > 0 BEGIN SET @emp_no = (CONVERT(INT, (RAND() * 100000))); END INSERT INTO employee VALUES(@emp_no, 'Jane', 'Smith', 'd1'); SET @i = @i + 1; END; 9 9.1 USE sample; SELECT physical_name FROM sys.database_files; 9.2 SELECT OBJECTPROPERTY(OBJECT_ID('employee'), 'TableHasClustIndex'); 9.3 SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE TABLE_NAME = 'employee'; 9.4 USE sample; SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_type = 'BASE TABLE'; 9.5 USE sample; SELECT column_name, data_type, ordinal_position FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 'employee'; 9.6 CREATE INDEX i_enterdate ON works_on(enter_date) WITH FILLFACTOR = 60; 15

10 10 10.1 CREATE INDEX i_enterdate ON works_on(enter_date) WITH FILLFACTOR = 60; 10.2 CREATE UNIQUE INDEX i_lfname ON employee(emp_lname, emp_fname); 10.3 10.4 10.5 CREATE INDEX i_employee_lname ON employee (emp_lname); CREATE INDEX i_emp_name ON employee (emp_lname, emp_fname); CREATE INDEX i_workson_empno ON works_on (emp_no); CREATE INDEX i_employee_empno ON employee (emp_no); CREATE INDEX i_department_deptno ON department (dept_no); CREATE INDEX i_employee_deptno ON employee (dept_no); CREATE INDEX i_department_deptname ON department (dept_name); 16

11 11 11.1 CREATE VIEW v_11_1 AS SELECT * WHERE dept_no = 'd1'; 11.2 CREATE VIEW v_11_2 AS SELECT project_no, project_name FROM project; 11.3 CREATE VIEW v_11_3 AS SELECT emp_lname, emp_fname JOIN works_on ON works_on.emp_no = employee.emp_no WHERE enter_date BETWEEN '2007-6-1' AND '2007-12-31'; 11.4 CREATE VIEW v_11_4(first, last) AS SELECT emp_lname, emp_fname FROM v_11_3; 11.5 SELECT * FROM v_11_1 WHERE emp_lname LIKE 'M%'; 11.6 CREATE VIEW v_11_6 AS SELECT project.* FROM project JOIN works_on ON project.project_no = works_on.project_no JOIN employee ON employee.emp_no = works_on.emp_no WHERE emp_lname = 'Smith'; 11.7 ALTER VIEW v_11_1 AS SELECT * WHERE dept_no IN('d1', 'd2'); 17

11 11.8 DROP VIEW v_11_3; 11.9 INSERT INTO v_11_2 VALUES('p5', 'Moon'); 11.10 CREATE VIEW v_11_10 AS SELECT emp_no, emp_fname, emp_lname, dept_no WHERE emp_no < 10000 WITH CHECK OPTION; INSERT INTO v_11_10 VALUES(22123, 'David', 'Kohn', 'd3'); 11.11 CREATE VIEW v_11_11 AS SELECT emp_no, emp_fname, emp_lname, dept_no WHERE emp_no < 10000; INSERT INTO v_11_11 VALUES(22123, 'David', 'Kohn', 'd3'); 11.12 CREATE VIEW v_11_12 AS SELECT emp_no, project_no, job, enter_date WHERE enter_date BETWEEN '2007-1-1' AND '2008-12-31' WITH CHECK OPTION; UPDATE v_11_12 SET enter_date = '2006-6-1' WHERE emp_no = 29346 AND project_no = 'p1'; 11.13 CREATE VIEW v_11_13 AS SELECT emp_no, project_no, job, enter_date WHERE enter_date BETWEEN '2007-1-1' AND '2008-12-31'; 18

12 UPDATE v_11_13 SET enter_date = '2006-6-1' WHERE emp_no = 29346 AND project_no = 'p1'; 12 12.1 12.2 12.3 CREATE LOGIN ann WITH PASSWORD = 'a1b2c3d4e?5'; CREATE LOGIN burt WITH PASSWORD = '+d4e3f2g1h0'; CREATE LOGIN chuck WITH PASSWORD = 'f102-gh285'; SELECT name FROM sys.sql_logins; 12.4 USE sample; CREATE USER s_ann FOR LOGIN ann; CREATE USER s_burt FOR LOGIN burt; CREATE USER s_chuck FOR LOGIN chuck; 1 2.5 USE sample; CREATE ROLE managers; EXEC sp_addrolemember 'managers', 's_ann'; EXEC sp_addrolemember 'managers', 's_burt'; EXEC sp_addrolemember 'managers', 's_chuck'; EXEC sp_helpuser 'managers'; 12.6 USE sample; GRANT CREATE TABLE TO s_burt; GRANT CREATE PROCEDURE TO s_ann; 19

12 12.7 USE sample; GRANT UPDATE ON employee(emp_lname, emp_fname) TO s_chuck; 12.8 USE sample; GO CREATE VIEW readnames AS SELECT emp_lname, emp_fname ; GO GRANT SELECT ON readnames TO s_burt, s_ann; 12.9 USE sample; GRANT INSERT ON project TO managers; 12.10 USE sample; REVOKE SELECT ON readnames FROM s_burt; 12.11 USE sample; DENY INSERT ON project TO s_ann; 12.12 12.13 USE sample; GO EXEC sp_helpuser s_ann; 20

13 13 13.1 13.2 13.3 13.4 13.5 13.6 13.7 13.8 21

14 13.9 13.10 13.11 13.12 13.13 13.14 14 14.1 USE sample; GO CREATE TRIGGER tr_refint_deptemp1 ON department FOR DELETE, UPDATE AS IF (SELECT COUNT(*) JOIN deleted ON employee.dept_no = deleted.dept_no) > 0 BEGIN 22

14 ROLLBACK TRANSACTION PRINT 'Transaction failed!' END ELSE PRINT 'Transaction succeeded'; GO CREATE TRIGGER tr_refint_deptemp2 ON employee FOR INSERT, UPDATE AS IF (SELECT department.dept_no FROM department JOIN inserted ON department.dept_no = inserted.dept_no) IS NULL BEGIN ROLLBACK TRANSACTION PRINT 'Transaction failed!' END ELSE PRINT 'Transaction succeeded'; 14.2 1 using System; using System.Data.SqlClient; using System.Transactions; using Microsoft.SqlServer.Server; public class StoredProcedures { public static void Refint_WorksOn2() { SqlTriggerContext context = SqlContext.TriggerContext; SqlConnection conn = new SqlConnection("context connection = true"); conn.open(); SqlCommand cmd = conn.createcommand(); cmd.commandtext = @"SELECT COUNT(*) JOIN deleted ON works_on.emp_no = deleted.emp_no"; SqlPipe pipe = SqlContext.Pipe; using (TransactionScope transscope = new TransactionScope()) { if(convert.toint32(cmd.executescalar()) > 0) { pipe.send("no deletion/modification of the row"); transscope.dispose(); } else { pipe.send("the row deleted/modified"); transscope.complete(); } } } } 23

16 2 csc /target:library exercise14_2.cs /reference:"c: Program Files Microsoft SQL Server MSSQL10.MSSQLSERVER MSSQL Binn sqlaccess.dll" 3 CREATE ASSEMBLY example14_4 FROM 'C: Program Microsoft SQL Server assemblies exercise14_2.dll' WITH PERMISSION_SET = SAFE; GO CREATE TRIGGER refint_workson2 ON employee AFTER DELETE, UPDATE AS EXTERNAL NAME example14_4.storedprocedures.refint_workson2; 15 15.1 15.2 ALTER DATABASE model MODIFY FILE ( NAME = modeldev, MAXSIZE = 4MB); 16 16.1 16.2 24

17 16.3 17 17.1 17.2 17.3 17.4 17.5 17.6 25

18 17.7 18 18.1 18.2 18.3 18.4 18.5 26

21 19 19.1 19.2 19.3 19.4 21 21.1 21.2 27

22 22 22.1 22.2 22.3 22.4 22.5 22.6 28

24 24 24.1 SELECT dept_name, AVG(emp_cnt) OVER(PARTITION BY dept_name) AS emp_cnt_avg FROM project_dept WHERE dept_name = 'Accounting'; SELECT dept_name, AVG(emp_cnt) AS emp_cnt_avg FROM project_dept WHERE dept_name = 'Accounting' GROUP BY dept_name; 24.2 SELECT dept_name, budget FROM (SELECT dept_name, MAX(budget) OVER (PARTITION BY YEAR(date_month)) max_budget_dept, budget FROM project_dept) part_deptname WHERE budget = max_budget_dept; 24.3 SELECT dept_name, budget, SUM(emp_cnt) AS sum_of_empcnt FROM project_dept GROUP BY CUBE (dept_name, budget); 24.4 SELECT dept_name, emp_cnt FROM (SELECT dept_name, emp_cnt, RANK() OVER(ORDER BY emp_cnt desc) AS rank FROM project_dept) part_dept WHERE rank <= 3; 24.5 SELECT TOP(3) dept_name, emp_cnt FROM project_dept ORDER BY emp_cnt DESC; 29