39
國國國國國國 國國國國國國 國國國國國 SQL-99: 國國國國 國國國國國國國 (1)

國立聯合大學 資訊管理學系 陳士杰老師 SQL-99: 綱要定義、基本限制與查詢 (1). 國立聯合大學 資訊管理學系 資料庫系統課程 ( 陳士杰 ) ▊

  • View
    277

  • Download
    9

Embed Size (px)

Citation preview

  • Slide 1
  • SQL-99: (1)
  • Slide 2
  • ( ) Outlines Database Languages SQL Data Query Language, DQL ( ) Data Definition Language, DDL ( ) Data Manipulation Language, DML ( ) Data Control Language, DCL ( ) (see Chapter 8, Chapter 9; Ch. 5~Ch. 7)
  • Slide 3
  • ( ) Database Languages SQL (Structured Query Language, ) IBM 1970 SQL SQL (stored procedure) 1999 SQL/99 SQL/3 DB DB (stored procedure) ( SQL/87 SQL/1, SQL/92 SQL/2)
  • Slide 4
  • ( ) SQL (Data Definition Language, DDL) CreateDropAlter ( (Create), (Drop), (Alter)) Table View Schema (Data Manipulation Language, DML) InsertUpdate Delete ( (Insert) (Update) (Delete)) Table Data (Data Query Language, DQL) Select Select (Data Control Language, DCL) GRANT, REVOKE, ALTER PASSWORD (Data Administration Commands) (Transactional Control Commands)
  • Slide 5
  • ( ) SQL (ANSI SQL) SQL ANSI SQL
  • Slide 6
  • ( ) SQL ANSI SQL (Character Strings) CHAR(n) (n ) VARCHAR(n) BIT(n) (n ) BIT VARING(n) MySQL
  • Slide 7
  • ( ) ENUM ( ) 65535 NULL Field1 ENUM('Am','Pm') DEFAULT Am Field2 ENUM( , , ) DEFAULT SET ( ) SET Field1 SET( , , ) Field1 INSERT INTO Field1 VALUES ( , )
  • Slide 8
  • ( ) ANSI SQL (Numeric Strings) INT, INTEGER (4bytes; 0~ 0-4294967295 ) DEC(m,n), DECIMAL(m,n), NUMERIC(m,n) (m n ) SMALLINT (2bytes; 0~65535) FLOAT (4bytes) REAL (4bytes) DOUBLE PRECISION (8bytes)
  • Slide 9
  • ( ) MySQL
  • Slide 10
  • ( ) ANSI SQL / (Date/Time) DATE YYYY-MM-DD TIME HH:MM:SS TIMESTAMP DATE+TIME+ INTERVAL MySQL /
  • Slide 11
  • ( ) (Supplier) (Component) (Project) (Project_supp_Component)
  • Slide 12
  • ( ) Data Definition Language, DDL ( ) - - (1) DDL CREATE, DROP, ALTER (database) (Table) (View)
  • Slide 13
  • ( ) Create Drop Schema CREATE SCHEMA (DATABASE) CREATE SCHEMA (DATABASE): ( ) CREATE SCHEMA ; CREATE DATABASE ; CREATE SCHEMA/DATABASE Jacy_Database; DROP SCHEMA (DATABASE) DROP SCHEMA (DATABASE): ( ) DROP SCHEMA ; DROP DATABASE ; DROP SCHEMA/DATABASE Jacy_Database;
  • Slide 14
  • ( ) MySQL ( ) CREATE SCHEMA CREATE DATABASE ( ) DROP SCHEMA [CASCADE/RESTRICT]; DROP DATABASE [CASCADE/RESTRICT]; SQL
  • Slide 15
  • ( ) CREATE TABLE CREATE TABLE: ( ) CREATE TABLE ( [Null/Not null] [DEFAULT ], PRIMARY KEY( ), UNIQUE( ), FOREIGN KEY( ) REFERENCES [ON DELETE/ON UPDATE] ); !!
  • Slide 16
  • ( ) CREATE TABLE Department (Dname CHAR(10) NOT NULL, Dno INT NOT NULL, Dadd CHAR(20), PRIMARY KEY(Dno) ); CREATE TABLE Project (Pname CHAR(10) NOT NULL, Pno INT NOT NULL, PRIMARY KEY(Pno) );
  • Slide 17
  • ( ) CREATE TABLE Employee_01 ( Ssn CHAR(10) NOT NULL, Emp_id CHAR(10) NOT NULL, Address VARCHAR(50), Dept_id INT, Proj_id INT, Salary NUMERIC(8,1) NOT NULL DEFAULT 18000, Primary Key(Ssn) );
  • Slide 18
  • ( ) CREATE TABLE Employee_02 ( Ssn CHAR(10) NOT NULL, Emp_id CHAR(10) NOT NULL, Address VARCHAR(50), Dept_id INT, Proj_id INT, Salary NUMERIC(8,1) NOT NULL DEFAULT 18000, PRIMARY KEY(Ssn), UNIQUE(Emp_id), FOREIGN KEY(Proj_id) REFERENCES Project(Pno), FOREIGN KEY(Dept_id) REFERENCES Department(Dno) ON Delete CASCADE );
  • Slide 19
  • ( ) ON DELETE ON UPDATE NO ACTION RESTRICT DBMS CASCADE SET NULL SET DEFAULT
  • Slide 20
  • ( )
  • Slide 21
  • Slide 22
  • Slide 23
  • Slide 24
  • MySQL MyISAM MySQL ( ENGINE ) InnoDB (Transaction) (Foreign Key) ( ) MyISAM v.s. InnoDB MyISAM InnoDB
  • Slide 25
  • ( ) MySQL CREATE TABLE ( [ ] [ ], [ ] [ ], PRIMARY KEY( ), UNIQUE( ), FOREIGN KEY( ) REFERENCES, FOREIGN KEY( ) REFERENCES ON DELETE/ON UPDATE, MyISAM )ENGINE = MyISAM/InnoDB; ( MyISAM ) SQL SQL
  • Slide 26
  • ( ) CREATE TABLE Employee_01 ( Ssn CHAR(10) NOT NULL, Emp_id CHAR(10) NOT NULL, Address VARCHAR(50), Dept_id INT not null, Proj_id INT not null, Salary NUMERIC(8,1) NOT NULL DEFAULT 18000, Primary Key(Ssn) );
  • Slide 27
  • ( ) Department, Project, Employee_02 Employee_02 Department Project ( Project, Department) ( Employee_02) MySQL InnoDB (Alter Table)
  • Slide 28
  • ( ) CREATE TABLE Department (Dname CHAR(10) NOT NULL, Dno INT NOT NULL, Dadd CHAR(20), PRIMARY KEY(Dno) ) ENGINE=INNODB; CREATE TABLE Project (Pname CHAR(10) NOT NULL, Pno INT NOT NULL, PRIMARY KEY(Pno) ) ENGINE=INNODB;
  • Slide 29
  • ( ) CREATE TABLE Employee_02 ( Ssn CHAR(10) NOT NULL, Emp_id CHAR(10) NOT NULL, Address VARCHAR(50), Dept_id INT, Proj_id INT, Salary NUMERIC(8,1) NOT NULL DEFAULT 18000, PRIMARY KEY(Ssn), UNIQUE(Emp_id), FOREIGN KEY(Proj_id) REFERENCES Project(Pno), FOREIGN KEY(Dept_id) REFERENCES Department(Dno) ON Delete CASCADE ) ENGINE=INNODB;
  • Slide 30
  • ( ) DROP TABLE DROP TABLE: ( ) DROP TABLE ; DROP TABLE Employee_01;
  • Slide 31
  • ( ) ALTER TABLE ALTER TABLE: ALTER TABLE ADD/DROP/ALTER ALTER TABLE ADD [ ] ALTER TABLE Employee_02 ADD SEX CHAR(1); ALTER TABLE ALTER ALTER TABLE Employee_02 ALTER Salary DROP DEFAULT;
  • Slide 32
  • ( ) ALTER TABLE DROP ALTER TABLE Employee_02 DROP Address; ALTER TABLE ADD PRIMARY KRY ; ALTER TABLE ADD UNIQUE ; ALTER TABLE ADD FOREIGN KRY REFERENCES ( )
  • Slide 33
  • ( ) slide 9
  • Slide 34
  • ( ) Data Manipulation Language, DML ( ) DML Insert, Update, Delete INSERT: DELETE: WHERE UPDATE: WHERE
  • Slide 35
  • ( ) INSERT: INSERT INTO [(attribute1, attribute2,)] VALUES () EMPLOYEE(Ssn, FName, LName, Bdate, Add, Tel, Salary) INSERT INTO EMPLOYEE(Ssn, FName, LName, Salary) VALUES (F111111111, Jacy, Chen, 100); // INSERT INTO EMPLOYEE VALUES (F111111111, Jacy, Chen, 1977-01-01, Taipei, NULL, 100); //
  • Slide 36
  • ( ) DELETE: WHERE DELETE FROM WHERE EMPLOYEE(Ssn, FName, LName, Bdate, Add, Tel, Salary) DELETE FROM EMPLOYEE WHERE BDate < 1975-02-02; DELETE FROM EMPLOYEE WHERE Ssn = A1234567; DELETE FROM EMPLOYEE;
  • Slide 37
  • ( ) UPDATE: WHERE UPDATE SET = WHERE EMPLOYEE(Ssn, FName, LName, Bdate, Add, Tel, Salary) UPDATE EMPLOYEE SET Tel = 12365649, Salary = 200 WHERE Ssn = A9876543;
  • Slide 38
  • ( ) slide 9
  • Slide 39
  • ( ) 1. 1. DB 2. 2. 3. 4. 5. 5.