CREATE table employee CREATE TABLE employee empno INTEGER
CREATE table employee CREATE TABLE employee( empno INTEGER PRIMARY KEY , surname VARCHAR( 15 ) , forenames VARCHAR( 30 ) , dob date, address VARCHAR( 50 ) , telno VARCHAR( 50 ) , depno INTEGER REFERENCES department( depno ) , CHECK ( dob IS NULL OR (dob > ’ 1 /1 / 1950’ AND dob < ’ 31 /12 / 1980’ ) ) ); Д. Гоцева БД-лекции 17
CREATE Table Jobhistory CREATE TABLE jobhistory( empno INTEGER REFERENCES employee( empno ) , position VARCHAR( 30 ) , startdate, enddate, salary DECIMAL( 8, 2 ) , PRIMARY KEY ( empno, position ) ); Д. Гоцева БД-лекции 18
Сравнение SELECT column-list FROM table_list [WHERE condition]; SELECT empno, surname FROM employee WHERE depno = 3; --- Comparison Operators: =, !=, <>, <, <=, >, >= SELECT forenames, surname FROM employee WHERE dob > ’ 2/1/1958’; Д. Гоцева БД-лекции 21
SELECT с BETWEEN SELECT FROM WHERE n n empno, surname, forenames, dob employee dob BETWEEN '1954 -06 -01' AND '1979 -01 -01'; Забележете, че BETWEEN предикат включва граничните стойности. Горното условие е еквивалентно на: WHERE Д. Гоцева dob >= ’ 1954 -06 -01’ AND <=’ 1979 -01 -01’; БД-лекции 23
ORDER и DISTINCT SELECT [DISTINCT] FROM [WHERE [ORDER BY n column_list table_list condition] attribute[ DESC/ASC] [, attribute [DESC, ASC]]. . . ]; Забележете, че ASCending се подразбира SELECT DISTINCT FROM WHERE ORDER BY Д. Гоцева empno jobhistory starddate< ’ 2008 -01 -01’ empno DESC; БД-лекции 25
One-to-Many Relationships (1: М) Д. Гоцева БД-лекции 35
Many-to-Many Relationships (M: N) ( create table course ( courseno integer primary key, cname varchar(20), cdate ); n За зададената таблица course, връзките между служители и курсове могат да бъдат представени в таблица, наречена linker table, която реализира M: N връзки – empno - foreign key references employer – course - foreign key references course Д. Гоцева БД-лекции 36
Many-to-Many Relationships (M: N) (2) ( n ‘linker table’ има вида: create table empcourse ( empno integer references employee (empno), courseno integer references course (courseno), primary key (empno, courseno) ); n n primary key в empcourse е комбинацията (empno, course) и трябва да бъде уникална. linker table се използва за съхранение на информация за връзката. За посочения пример се включва инфо за кой служител кой курс е посетил. Д. Гоцева БД-лекции 37
Many-to-Many Relationships (M: N) (3) ( Д. Гоцева БД-лекции 38
DELETE FROM име_таблица [WHERE условие]; n Редовете от име_таблица, които удовлетворяват условието се изтриват. Примери с Delete: DELETE FROM jobhistory WHERE enddate IS NULL; n -- remote current posts from -- jobhistory DELETE FROM jobhistory; -- Remove all posts from -- jobhistory, leaving an empty -- table DROP jobhistory; -- Remove jobhistory table -- completely Д. Гоцева БД-лекции 57
- Slides: 58