SQL. Язык определения данных




Лабораторная работа № 2

 
 


Общепринятый термин «язык запросов» не совсем точно отражает возможности языка SQL, поскольку слово «запрос» подразумевает лишь выборку. В то время как язык SQL предназначен для манипулирования данными в реляционных базах данных, определения структуры баз данных и для управления правами доступа к данным в многопользовательской среде.

Поэтому в язык SQL в качестве составных частей входят:

· язык манипулирования данными (Data Manipulation Language, DML);

· язык определения данных (Data Definition Language, DDL);

· язык управления данными (Data Control Language, DCL).

Подчеркнем, что это не отдельные языки, а различные команды одного языка. Такое деление проведено только лишь с точки зрения различного функционального назначения этих команд.

Язык определения данных используется для создания и изменения структуры базы данных и ее составных частей - таблиц, индексов, представлений (виртуальных таблиц), а также триггеров и сохраненных процедур. Основными его командами являются:

CREATE DATABASE (создать базу данных)

CREATE TABLE (создать таблицу)

CREATE INDEX (создать индекс)

ALTER DATABASE (модифицировать базу данных)

ALTER TABLE (модифицировать таблицу)

ALTER INDEX (модифицировать индекс)

DROP DATABASE (удалить базу данных)

DROP TABLE (удалить таблицу)

DROP INDEX (удалить индекс)

 

 

Создание таблиц

Создать таблицу для хранения данных можно с помощью команды CREATE TABLE языка SQL. Это одна из команд языка определения данных DDL. Команды DDL являются подмножеством команд SQL и используются для создания, изменения и удаления структур базы данных.

 

Синтаксис:

 

Создание таблицы CREATE TABLE имя_таблицы  
Определение столбцов (ПОЛЕ тип данных, [DEFAULT значение NOT NULL] Значение по Нет Умолчанию отсутствующих
Первичный ключ Primary key (поле, …),  
Определение ограничения Constraint имя ограничения  
Определение внешнего ключа Foreign key (поле, …) references имя таблицы (поле, …) On delete Cascade Set null No action Set default On update Cascade Set null No action Set default
  );  

Пример:

CREATE TABLE groups

(id NUMBER CONSTRAINT groups_pk PRIMARY KEY,

num_gr CHAR(8) not null,

form CHAR(2) not null,

CONSTRAINT groups_uk UNIQUE (num_gr, form),

CHECK (form in(‘Д’,’З’)));

 

Команда создает таблицу GROUPS. Столбцы

id (уникальный идентификатор),

num_gr (номер группы, например, 3091),

form (форма обучения, дневная (Д) или заочная (З)).

 

Пример2:

CREATE TABLE students

(id NUMBER CONSTRAINT stud_pk PRIMARY KEY,

surname CHAR(100) not null,

name CHAR(100) not null,

patron CHAR(100) not null,

gr_id number not null,

CONSTRAINT stud_gr_id_fk FOREIGN KEY (gr_id)REFERENCES groups(id) ON DELETE CASCADE);

 

Команда создает таблицу STUDENTS. Столбцы

id (уникальный идентификатор),

surname – фамилия,

name – имя,

patron – отчество студента,

gr_id – внешний ключ, ссылающийся на первичный ключ таблицы GROUPS.

Каждый студент из таблицы STUDENTS учится в какой-то группе из таблицы GROUPS. При удалении группы, удаляется и информация о всех студентах, в ней обучающихся (это только для примера, необходимости в этом нет, скорее наоборот, группу с обучающимися в ней студентами удалять не следует).

 

Отметим, что таблицы создаются пустыми, а данные в них вносятся с помощью команды Insert.

 

Типы данных SQL

 

Тип данных Описание
CHAR(длина) CHARACTER(длина) Строки символов постоянной длины
VARCHAR(длина) CHAR VARYING(длина) CHARACTER VARYING(длина) Строки символов переменной длины
INTEGER INT Целые числа
SMALLINT Малые целые числа
NUMERIC(точность, степень) DECIMAL(точность, степень) DEC(точность, степень) Десятичные числа
FLOAT(точность) Числа с плавающей запятой
REAL Числа с плавающей запятой низкой точности
DOUBLE PRECISION Числа с плавающей запятой высокой точности
DATE Дата
TIME(точность) Время
TIMESTAMP(точность) Дата и время
INTERVAL Временной интервал

 

Упражнения:

1. Записать инструкцию SQL для создания таблицы Students с полями: student_id (номер студента), surname (фамилия), name (имя), _year (курс), _group (группа), city (город), faculty (факультет), the_head (староста). Значение поля the_head (староста) должно быть идентификатором студента, являющегося старостой группы, в которой учится конкретный студент, для чего следует указать необходимые ограничения. Поле student_id является первичным ключом таблицы students. Значение поля Курс находится в пределах от 1 до 5. По умолчанию полю City присваивается значение Челябинск, значение поля faculty получаем из списка: {дизайн, менеджмент, программное_обеспечение, экономика_и_финансы}. Поля номер студента, фамилия, имя, курс и группа не могут принимать значения Null.

 

2. Записать инструкцию SQL для создания таблицы Subjects (предметы) с полями: subject_id (номер предмета), Subject_name (название предмета), Lecturer (преподаватель), Appointment (должность преподавателя), Semester (семестр), _Hours (часы). Поле subject_id является первичным ключом таблицы. Поле Subject_name не может принимать значения Null. Значение поля Семестр находится в пределах от 1 до 10. По умолчанию полю Hours присваивается значение 0.0, значение поля Appointment получаем из списка: {ассистент, старший преподаватель, доцент, профессор}.

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-10-25 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: