Загрузил Режиссер

Конспект БД

реклама
Клиентское приложение – это приложение, база данных которого
находится на одном устройстве к которому нельзя подключиться
Отношение – это сама таблица
Атрибут – это столбец
Картеж – это строка таблицы
В СУБД можно создавать бд, таблицы, схемы, последовательность,
функцию, процедуру, триггер.
DDL – data definition language
В указанный выше язык входят операторы выполняющиеся с объектами:
Create
Alter
drop
SQL делится на DDL ( указанный выше ) и DML
В DML входят операторы выполняющиеся с данными:
INSERT
UPDATE
DELETE
SELECT
SCHEMA – позволяет отделять объекты от базы данных
CREATE DATABASE название базы данных;
CREATE TABLE название таблицы (атрибуты таблицы);
Любая таблица должна быть создана с первичным ключом!!!
Доменные ограничения – fio varchar ( 50 ) NOT NULL.
Данное поле может быть пустым. ( если поле может быть пустым, то можно
ничего не писать, потому что автоматически стоит значение NULL )
Есть еще доменное ограничение default, если ввести fio varchar(50) default 1 ,
то если в строке не будет указанно ничего под данным атрибутом, то
автоматически будет выводится 1.
Из одной таблицы база данных состоять не может. Поэтому необходимо
создать дочернюю таблицу. ( не торопись писать это тот, кто читает )
--------------------------------------------------------------------Создаем первую таблицу.
CREATE TABLE STUD ( id int, fio varchar(50) NOT NULL, birthday date,
ngroup default 1);
Создаем вторую таблицу.
CREATE TABLE GROUP ( id int, name varchar (10), curator varchar(50));
----------------------------------------------------------------------Дочерняя таблица это та, которая обращается к другой. Другая в таком
случае является родительской.
Первичный ключ дает уникальность каждой записи. Id в таком случае
необходимо сделать уникальным идентификатором.
Если просто написать id int, то есть вероятность, что он может
повториться и его уникальность пропадёт.
Чтобы
назначит
id
первичным ключом необходимо наложить
ограничение:
CONSTRAINT название ограничения PRTMARY KEY (id),
Эта команда относится именно к первой таблице!!! Нужно указать, что
мы работаем именно с той таблицей к которой мы это пишем.
После прописи этой команды мы уже создаем вторую таблицу и к ней
прописываем такую же команду со вторичным ключом.
CONSTRAINT fk_stud_group FOREIGN KEY (ngroup) REFERENCES
GROUP (ngroup);
Это вторичный ключ по которому мы будем связываться между
таблицами. REFERENCES тут – это связь с родительской таблицей т.е. с
GROUP, связь происходит через ngroup.
И теперь как выглядит наш код:
--------------------------------------------------------------------Создаем родительскую таблицу.
CREATE TABLE GROUP ( id int, name varchar (10), curator varchar(50,
ngroup int default 1));
Делаем первичный ключ для родительской таблицы
CONSTRAINT number_group PRTMARY KEY (ngroup)
Создаём дочернюю таблицу.
CREATE TABLE STUD ( id int, fio varchar(50) NOT NULL, birthday date,
ngroup default 1);
Делаем первичный ключ
CONSTRAINT idshka PRTMARY KEY (id)
Делаем вторичный ключ
CONSTRAINT fk_stud_group FOREIGN KEY (ngroup) REFERENCES
GROUP (ngroup)
----------------------------------------------------------------------А что делать, если мы хотим с несколькими таблицами? Допустим мы
хотим добавить таблицу “Родители”. Тогда нам нужно связать таблицу
студентов с таблицей “Родителей”.
Тогда мы просто создаем таблицу родителей и пишем ограничение
вторичного ключа:
CONSTRAINT fk_stud_rod FOREIGN KEY (idp) REFERENCES roditel
(idp);
--------------------------------------------------------------------Создаем родительскую таблицу.
CREATE TABLE GROUP ( id int, name varchar (10), curator varchar(50,
ngroup int default 1));
Делаем первичный ключ для родительской таблицы
CONSTRAINT number_group PRTMARY KEY (ngroup);
Создаем вторую родительскую таблицу
CREATE TABLE roditel ( idp int, fio varchar (10), number_passport
varchar(10));
CONSTRAINT rod PRTMARY KEY (idp);
Создаём дочернюю таблицу.
CREATE TABLE STUD ( id int, fio varchar(50) NOT NULL, birthday date,
ngroup default 1, idp int);
Делаем первичный ключ
CONSTRAINT idshka PRTMARY KEY (id);
Делаем вторичный ключ
CONSTRAINT fk_stud_group FOREIGN KEY (ngroup) REFERENCES
GROUP (ngroup);
Делаем вторичный ключ для таблицы с родителями
CONSTRAINT fk_stud_rod FOREIGN KEY (idp) REFERENCES roditel
(idp)
----------------------------------------------------------------------Таблица может быть как родительской, так и дочерней одновременно,
если к ней обращается другая таблица. Родительских таблиц, как и дочерних,
может быть сколько угодно.
Это было первое задание в Лабораторной работе.
Во второй лабораторной работе у нас по мимо CREATE появляется еще
ALTER и DROP. Они пишутся также по отношениям к объекту.
Если мы хотим удалить таблицу необходимо написать DROP TABLE
STUD;
Если вдруг мы удалим таблицу у которой была связь, то естественно
связь оборвётся и данные пропадут:
CONSTRAIN fk_stud_group FOREIGN KEY (ngroup) REFERENCES
GROUP (ngroup)
Теперь если мы напишем DROP TABLE GROUP, то связь нарушится и
полезут ошибки.
Если мы хотим этого избежать, то при создании ограничения нам нужно
дописать CONSTRAIN fk_stud_group FOREING KEY ( ngroup) REFERENCES
GROUP (ngroup) ON DELETE NO ACTION
Таким образом, если мы после этого напишем DROP TABLE GROUP у
нас вылезет ошибка и мы не сможем её удалить.
Есть еще возможность удалить/изменить все связанное с помощью
CASCADE. Т.е. если мы захотим удалить, или удалить ngroup они изменятся
все, либо все удаляться
Есть еще возможность изменить таблицу с помощью команды ALTER.
Мы можем добавлять новые атрибуты, можем удалять те, что уже существуют,
а также изменять ограничения. В отличии от CASCADE это будет только в
рамках одной таблицы и никак не затронет связи.
Допустим я хочу у таблицы STUD добавить атрибут стипендии. Я пишу:
Add column stipendia int.
Когда я захочу удалить я напишу drop column stipendia.
Если я хочу удалить ограничение, то я прописываю DROP CONSTRAIN
fk_stud_group.
Помимо всего выше приведенного я могу еще модифицировать
атрибуты ( сменить тип данных, изменить доменное ограничение (NULL/NOT
NULL)).
С помощью ALTER TABLE STUD мы именно входим в режим
изменения таблицы. Как допустим выбираем какую-либо базу данных, или
работу с таблицей. Чтобы выйти из изменения таблицы нужно написать в
конце точку с запятой ( ; )
Скачать