Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Insert employees(id,position,department) values




CREATE DATABASE Test


Удалить базу данных можно командой (стоит быть очень осторожным с данной командой):


DROP DATABASE Test


Для того, чтобы переключиться на нашу базу данных, можно выполнить команду:


USE Test


Или же выберите базу данных Test в выпадающем списке в области меню SSMS. При работе мною чаще используется именно этот способ переключения между базами.

Теперь в нашей БД мы можем создать таблицу используя описания в том виде как они есть, используя пробелы и символы кириллицы:


CREATE TABLE [Сотрудники](

[Табельный номер] int,

[ФИО] nvarchar (30),

[Дата рождения] date,

[ E -mail] nvarchar (30),

[Должность] nvarchar (30),

[Отдел] nvarchar (30)

)


В данном случае нам придется заключать имена в квадратные скобки […].

Но в базе данных для большего удобства все наименования объектов лучше задавать на латинице и не использовать в именах пробелы. В MS SQL обычно в данном случае каждое слово начинается с прописной буквы, например, для поля «Табельный номер», мы могли бы задать имя PersonnelNumber. Так же в имени можно использовать цифры, например, PhoneNumber1.

На заметку
В некоторых СУБД более предпочтительным может быть следующий формат наименований «PHONE_NUMBER», например, такой формат часто используется в БД ORACLE. Естественно при задании имя поля желательно чтобы оно не совпадало с ключевыми словами используемые в СУБД.

 

По этой причине можете забыть о синтаксисе с квадратными скобками и удалить таблицу [Сотрудники]:


DROP TABLE [Сотрудники]


Например, таблицу с сотрудниками можно назвать «Employees», а ее полям можно задать следующие наименования:

 

· ID – Табельный номер (Идентификатор сотрудника)

· Name – ФИО

· Birthday – Дата рождения

· Email – E-mail

· Position – Должность

· Department – Отдел


Очень часто для наименования поля идентификатора используется слово ID.

Теперь создадим нашу таблицу:


CREATE TABLE Employees(

ID int,

Name nvarchar (30),

Birthday date,

Email nvarchar (30),

Position nvarchar (30),

Department nvarchar (30)

)


Для того, чтобы задать обязательные для заполнения столбцы, можно использовать опцию NOT NULL.

Для уже существующей таблицы поля можно переопределить при помощи следующих команд:


-- обновление поля ID

ALTER TABLE Employees ALTER COLUMN ID int NOT NULL

 

-- обновление поля Name

ALTER TABLE Employees ALTER COLUMN Name nvarchar (30) NOT NULL

 

На заметку
Общая концепция языка SQL для большинства СУБД остается одинаковой (по крайней мере, об этом я могу судить по тем СУБД, с которыми мне довелось поработать). Отличие DDL в разных СУБД в основном заключаются в типах данных (здесь могут отличаться не только их наименования, но и детали их реализации), так же может немного отличаться и сама специфика реализации языка SQL (т.е. суть команд одна и та же, но могут быть небольшие различия в диалекте, увы, но одного стандарта нет). Владея основами SQL вы легко сможете перейти с одной СУБД на другую, т.к. вам в данном случае нужно будет только разобраться в деталях реализации команд в новой СУБД, т.е. в большинстве случаев достаточно будет просто провести аналогию.

Чтобы не быть голословным, приведу несколько примеров тех же команд для СУБД ORACLE:


-- создание таблицы

CREATE TABLE Employees(

ID int, -- в ORACLE тип int - это эквивалент(обертка) для number(38)

Name nvarchar2 (30), -- nvarchar2 в ORACLE эквивалентен nvarchar в MS SQL

Birthday date,

Email nvarchar2 (30),

Position nvarchar2 (30),

Department nvarchar2 (30)

);

 

-- обновление полей ID и Name (здесь вместо ALTER COLUMN используется MODIFY(…))

ALTER TABLE Employees MODIFY (ID int NOT NULL, Name nvarchar2 (30) NOT NULL);

 

-- добавление PK (в данном случае конструкция выглядит как и в MS SQL, она будет показана ниже)

ALTER TABLE Employees ADD CONSTRAINT PK_Employees PRIMARY KEY (ID);


Для ORACLE есть отличия в плане реализации типа varchar2, его кодировка зависит настроек БД и текст может сохраняться, например, в кодировке UTF-8. Помимо этого длину поля в ORACLE можно задать как в байтах, так и в символах, для этого используются дополнительные опции BYTE и CHAR, которые указываются после длины поля, например:


NAME varchar2(30 BYTE) -- вместимость поля будет равна 30 байтам

NAME varchar2(30 CHAR) -- вместимость поля будет равна 30 символов


Какая опция будет использоваться по умолчанию BYTE или CHAR, в случае простого указания в ORACLE типа varchar2(30), зависит от настроек БД, так же она иногда может задаваться в настройках IDE. В общем порой можно легко запутаться, поэтому в случае ORACLE, если используется тип varchar2 (а это здесь порой оправдано, например, при использовании кодировки UTF-8) я предпочитаю явно прописывать CHAR (т.к. обычно длину строки удобнее считать именно в символах).

 

Но в данном случае если в таблице уже есть какие-нибудь данные, то для успешного выполнения команд необходимо, чтобы во всех строках таблицы поля ID и Name были обязательно заполнены. Продемонстрируем это на примере, вставим в таблицу данные в поля ID, Position и Department, это можно сделать следующим скриптом:


INSERT Employees(ID,Position,Department) VALUES

(1000, N 'Директор', N 'Администрация'),

(1001, N 'Программист', N 'ИТ'),

(1002, N 'Бухгалтер', N 'Бухгалтерия'),

(1003, N 'Старший программист', N 'ИТ')


В данном случае, команда INSERT также выдаст ошибку, т.к. при вставке мы не указали значения обязательного поля Name.
В случае, если бы у нас в первоначальной таблице уже имелись эти данные, то команда «ALTER TABLE Employees ALTER COLUMN ID int NOT NULL» выполнилась бы успешно, а команда «ALTER TABLE Employees ALTER COLUMN Name int NOT NULL» выдала сообщение об ошибке, что в поле Name имеются NULL (не указанные) значения.

Добавим значения для полю Name и снова зальем данные:






Поделиться с друзьями:


Дата добавления: 2016-11-02; Мы поможем в написании ваших работ!; просмотров: 410 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Самообман может довести до саморазрушения. © Неизвестно
==> читать все изречения...

2487 - | 2329 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.