Внутренний язык любой СУБД для работы с данными состоит из двух частей: DDL – язык определения данных и DML – язык управления данными.
Язык DDL используется для первоначального описания и последующей модификации схемы БД, то есть сущностей, их атрибутов и связей между сущностями. Он оперирует с метаданными БД.
Язык DML – набор операторов для операций манипулирования данными, содержащимися в базе. К операциям манипулирования относятся: вставка, модификация, извлечение данных, удаление.
Языки DML делятся на процедурные и непроцедурные. Язык SQL является первым и единственным стандартным языком работы с БД, в его основе лежат непроцедурные операторы. Широко используется в наше время.
При создании таблицы необходимо определить ее имя, набор атрибутов и домены. Например:
Create table students (name char (20)
subname char (10)
mark smallint
day date).
Имеется целый набор стандартных типов данных: int, smallint, numeric (p - точность, s – дробная часть), float, char (n), varChar(n), date.
При заполнении таблиц можно некоторые атрибуты опускать, тогда при заполнении им присваивается значение null. Пример: insert into students (name, subject, values (‘Иванов’, ‘БД’) <’Иванов’, ‘БД’,null, null)>.
Для таблиц можно определить значение атрибутов по умолчанию. Пример: create table students (name char(20)
subject char(10)
mark smallint default
day date default’now’ ).
<’Иванов’, ‘БД’,3, <11-MARCH-2012>>
Ограничения целостности в таблицах:
1. Ограничение на null-значение. Если есть в таблице атрибуты, которые должны быть известны, они помечаются словами «not null».
2. Ограничение для первичного ключа. Пусть есть таблица, где хранится список отделов, и номер отдела является ключом.
Create table depart (
depno int not null primary key,
name char(20),
address char(30))
3. В таблице все ключи, кроме первичного, называются вторичными, или альтернативными ключами. На них тоже накладывается ограничение уникальности. Пример: пусть задана таблица сотрудников.
Create table empl (
empno int not null primary key,
fname char(20) not null,
lname char(15) not null,
surname char(15) not null,
office char(10),
salary int,
unique (fname, lname, surname))
4. Ограничения внешнего ключа – атрибут или множество атрибутов, которые соответствует определенному первичному ключу другой таблицы.
Create table empl (
empno int not null primary key,
name char(20) not null unique,
office char(20),
depno int not null,
foreign key (depno),
references Dep(depno))
5. Ограничения на значения атрибутов. Есть возможность задания условий для атрибутов. Пример: пусть есть таблица служащих и необходимо, чтобы зарплата была не меньше минимальной.
Create table empl (
empno ….,
salary int check (salary>10000))
Структуру таблиц можно менять командой alter table.
1. Можно добавить новый атрибут. Например, определим для служащего его руководителя:
Alter table empl add manage int
2. Можно удалить атрибут:
alter table empl drop salary
3. Можно добавить ограничение в описании таблицы: сделаем номер руководителя внешним ключом:
alter table empl
add foreign key (manage) references empl(empno)
4. Можно удалить ограничения:
alter table empl
drop conststrant <идентификатор>
5. Можно удалить целую таблицу из БД:
alter table empl
Drop table empl
Удаляя таблицу, необходимо убедиться, что ее атрибуты не являются внешним ключом.
Если для какой-либо таблицы определены ключи, то для поиска по этим ключам автоматически создаются индексы. Можно явно создать индексы для групп атрибутов. Это необходимо в том случае, если по ним часто осуществляется поиск или если по этим атрибутам нужна сортировка.
Создание индекса может быть и вредно, их не надо создавать для атрибутов, по которым редко осуществляется поиск. Если у атрибутов небольшое количество возможных значений, то для них также нецелесообразно создавать индекс.