SQL
Создание базы данных CREATE DATABASE ALTER DATABASE DROP DATABASE
Определение структур базы данных (DDL) CREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX, ALTER INDEX, DROP INDEX.
Манипулирование данными (DML) INSERT, UPDATE, DELETE.
Выборка данных (DQL) SELECT
Идентификаторы идентификатор может иметь длину до 128 символов; идентификатор должен начинаться с буквы; идентификатор не может содержать пробелы.
Типы данных Символьный CHAR | VARCHAR Битовый BIT | BIT VARYING Точные числа NUMERIC | DECIMAL | INTEGER | SMALLINT Округленные числа FLOAT | REAL | DOUBLE PRECISION Дата/время DATE | TIME | TIMESTAMP ИнтервалINTERVAL
Истинно целые типы INTEGER SMALLINT NUMERIC (p) «+» или «-» Примеры литералов типов INTEGER и SMALLINT: , 876.
Точные типы, допускающие наличие дробной части Тип NUMERIC. (NUMBER) NUMERIC NUMERIC (p) NUMERIC (p, s) p задает точность значений (количество цифр), s – шкалу (число десят. цифр в дробной части) округление, если s отрицательно Тип DECIMAL. DECIMALDECIMAL (p) DECIMAL (p, s) «+» или «-» «.».
Приближенные числовые типы Тип REAL Тип DOUBLE PRECISION. Точность значений > точности типа REAL. Тип FLOAT. FLOAT FLOAT (p) Примеры литералов приближенных числовых типов: 123, , 123E12, E12. xEy x*(10y).
Типы символьных строк Тип – CHAR фиксированная длина. (CHARACTER) CHAR CHAR (x) длина x Тип VARCHAR– переменная длина. (CHARACTER VARYING, VARCHAR2) VARCHAR VARCHAR (x) длина x Тип CLOB - CHARACTER LARGE OBJECT. CLOB (z)
Операции с символьными строками. || - конкатенация SUBSTRING - функция выделения подстроки SUBSTRING (s, n, m) строку, номер начальной позиции и длину UPPER LOWER CHARACTER_LENGTH, OCTET_LENGTH, BIT_LENGTH POSITION POSITION (s, s1)
Типы битовых строк Тип BIT. BIT BIT (x) Тип BIT VARYING. BIT VARYING BIT VARYING (x) Тип BLOB (BINARY LARGE OBJECT). BLOB (z) B – двоичные X – шестнадцатеричные B , X78FBCD0012FFFFA.
Типы даты и времени Тип DATE. DATE yyyy-mm-dd, где символы y, m и d - десятичные числа. Тип TIME. TIME hh:mm-ss:f...f, где символы h, m, s и f - десятичные числа. Тип TIMESTAMP (DATETIME). TIMESTAMP yyyy-mm-dd hh:mm-ss:f...f, где символы y, m, d, h, m, s и f - десятичные числа.
INTERVAL разность между двумя значениями даты или времени. INTERVAL start (p) [ TO end (q)] «start» и «end» могут задаваться YEAR, MONTH, DAY, HOUR, MINUTE и SECOND. Параметр p задает требуемую точность лидирующего поля интервала (число десятичных цифр). По умолчанию p=2. end = SECOND q - точность долей секунды. INTERVAL YEAR (p) TO MONTH INTERVAL DAY, INTERVAL DAY TO HOUR, INTERVAL DAY (p) TO MINUTE, INTERVAL DAY (p) TO SECOND (q)
Булевский тип Тип BOOLEAN TRUE, FALSE и UNKNOWN трехзначная логика. UNKNOWN - NULL
Трехзначная логика
Объекты базы данных(1): Tables Таблицы базы данных, в которых хранятся собственно данные Views Виртуальные таблицы для отображения данных из таблиц Stored Procedures Хранимые процедуры Triggers Специальные хранимые процедуры, вызываемые при изменении данных в таблице User Defined function Создаваемые пользователем функции Indexes Индексы – дополнительные структуры, призванные повысить производительность работы с данными User Defined Data Types Определяемые пользователем типы данных
Объекты базы данных(2): Constraints Ограничение целостности – объекты для логической целостности данных Users Пользователи, обладающие доступом к базе данных Rules Правила базы данных, позволяющие контролировать логическую целостность данных Roles Роли, позволяющие объединять пользователей в группы Defaults Умолчания или стандартные установки базы данных
Создание БД CREATE DATABASE database_name options options: [ON [PRIMARY] [ [,...n] ] [, [,...n] ] ] [ LOG ON { [,...n] } ] TABLESPACE
Создание БД ::= ([ NAME=логическое_имя_файла,] FILENAME='физическое_имя_файла' [,SIZE=размер_файла ] [,MAXSIZE={max_размер_файла |UNLIMITED } ] [, FILEGROWTH=автом_величина_прироста ] )[,...n]
CREATE DATABASE Archive ON PRIMARY ( NAME=Arch1, FILENAME=c:\user\data\archdat1.mdf, SIZE=100MB, MAXSIZE=200, FILEGROWTH=20), (NAME=Arch2, FILENAME=c:\user\data\archdat2.mdf, SIZE=100MB, MAXSIZE=200, FILEGROWTH=20), (NAME=Arch3, FILENAME=c:\user\data\archdat3.mdf, SIZE=100MB, MAXSIZE=200, FILEGROWTH=20) LOG ON (NAME=Archlog1, FILENAME=c:\user\data\archlog1.ldf, SIZE=100MB, MAXSIZE=200, FILEGROWTH=20), (NAME=Archlog2, FILENAME=c:\user\data\archlog2.ldf, SIZE=100MB, MAXSIZE=200, FILEGROWTH=20)
::= ALTER DATABASE имя_базы_данных { ADD FILE [,...n] [TO FILEGROUP имя_группы_файлов ] | ADD LOG FILE [,...n] | REMOVE FILE логическое_имя_файла | ADD FILEGROUP имя_группы_файлов | REMOVE FILEGROUP имя_группы_файлов | MODIFY FILE | MODIFY FILEGROUP имя_группы_файлов }
Создание таблицы CREATE TABLE table_name { atr1, [atr2,…] }
Создание таблицы CREATE TABLE people { name CHAR(20) UNIQUE, address VARCHAR(35), birthday DATE}
Определение атрибутов таблицы { имя столбца } { тип данных} [ значение по умолчанию] [ список ограничений ]
Значение по умолчанию CREATE TABLE people { name CHAR(20) DEFAULT=NONAME, address VARCHAR(35), birthday DATE}
Задание ограничений NOT NULL | { PRIMARY KEY | UNIQUE } | references | CHECK ( условие )
(1)CREATE TABLE EMP ( (2)EMP_NO EMP_NO PRIMARY KEY, (3)EMP_NAME VARCHAR(20) DEFAULT 'Incognito' NOT NULL, (4)EMP_BDATE DATE DEFAULT NULL CHECK ( VALUE >= DATE ' '), (5)EMP_SAL SALARY, (6)DEPT_NO DEPT_NO DEFAULT NULL REFERENCES DEPT ON DELETE SET NULL, (7)PRO_NO PRO_NO DEFAULT NULL, (8)FOREIGN KEY PRO_NO REFERENCES PRO (PRO_NO) ON DELETE SET NULL, (9)CONSTRAINT PRO_EMP_NO CHECK ((SELECT COUNT (*) FROM EMP E WHERE E.PRO_NO = PRO_NO)
Первичный ключ NOT NULL всегда CREATE TABLE people { name CHAR(20) PRIMARY KEY, address VARCHAR(35), birthday DATE} CREATE TABLE people { name CHAR(20), address VARCHAR(35), birthday DATE, PRIMARY KEY (name, birthday)}
Возможный ключ NULL или NOT NULL– возможный ключ CREATE TABLE people { name CHAR(20) UNIQUE, address VARCHAR(35), birthday DATE} CREATE TABLE people { name CHAR(20), address VARCHAR(35), birthday DATE, UNIQUE (name, birthday)}
Проверка ограничений CREATE TABLE people { name CHAR(20) PRIMARY KEY, address VARCHAR(35), birthday DATE, gender CHAR CHECK (gender IN (F, M), } CHECK с использованием функций: стаж < возраст()
Внешний ключ REFERENCES table (atr1) FOREIGN KEY (atr1, …) REFERENCES table (t_atr1, …) CREATE TABLE phone { name CHAR (20) REFERENCES people (name), type CHAR CHECK (type IN (H, M, W), phone_code numeric(3) DEFAULT=812, phone_number numeric(7)}
Ссылочная целостность – стратегии: Отмена операции INSERT(1), UPDATE(1), DELETE(2), UPDATE(2) Каскадная модификация UPDATE(2) UPDATE(1) DELETE(2) DELETE(1) Присвоить значение NULL Отложенная проверка ограничений – замена несуществующего значения на NULL
SET NULL | CASCADE CREATE TABLE phone { name CHAR (20) REFERENCES people (name) ON DELETE CASCADE ON UPDATE CASCADE, …}
Удаление таблицы DROP TABLE имя_таблицы [RESTRICT | CASCADE] В отличие от DELETE удаляет и данные, и структуру. RESTRICT – запрет на удаление CASCADE