Готови ли сте да започнете да създавате бази данни и таблици с език за структурирани заявки? В тази статия изследваме процеса на ръчно създаване на таблици с командите CREATE DATABASE и CREATE TABLE. Ако сте нов в SQL, може да искате да прегледате някои Основи на SQL първо.
Бизнес изисквания
Преди да седнем на клавиатурата, трябва да се уверим, че добре разбираме изискванията на клиента. Кой е най-добрият начин да получите тази информация? Разговор с клиента, разбира се! След като седнахме с директора по човешки ресурси на XYZ, научихме, че те са компания за продажби на джаджи и се интересуват предимно от проследяване на информация за техния персонал по продажбите.
XYZ Corporation разделя търговската си сила на източни и западни региони, всеки от които е разделен на много територии, обхванати от отделни търговски представителства. Отделът по човешки ресурси би искал да проследи територията, обхваната от всеки служител, както и информацията за заплатите и надзорната структура на всеки служител. За да отговорим на тези изисквания, ние създадохме база данни, състояща се от три таблици, показани в
Диаграма на обект-връзка на тази страница.Избор на платформа за база данни
Решихме да използваме система за управление на база данни (или СУБД), която е изградена върху езика на структурираните заявки (SQL). Следователно, всички наши команди за създаване на база данни и таблици трябва да бъдат написани със стандартен ANSI SQL.
Като допълнителна полза, използването на ANSI-съвместим SQL ще гарантира, че тези команди ще работят на всяка СУБД, която поддържа SQL стандарта, включително Oracle и Microsoft SQL Server. Ако все още не сте избрали платформа за вашата база данни, софтуерните опции за база данни ви превеждат през процеса на избор.
Създаване на база данни
Първата ни стъпка е да създадем самата база данни. Много системи за управление на бази данни предлагат поредица от опции за персонализиране на параметрите на базата данни на тази стъпка, но нашата база данни позволява само простото създаване на база данни. Както при всички наши команди, може да поискате да се консултирате с документацията за вашата СУБД, за да определите дали някакви разширени параметри, поддържани от вашата конкретна система, отговарят на вашите нужди. Нека използваме командата CREATE DATABASE, за да настроим нашата база данни:
СЪЗДАВАНЕ НА БАЗА ДАННИ персонал
Обърнете специално внимание на главни букви, използвани в горния пример. Честа практика сред SQL програмистите е да използват всички главни букви за SQL ключови думи като „CREATE“ и "DATABASE", докато се използват всички малки букви за дефинирани от потребителя имена като базата данни "персонал" име. Тези конвенции осигуряват лесна четливост.
След като проектирахме и създадохме нашата база данни, сме готови да започнем да създаваме трите таблици, използвани за съхраняване на данните за персонала на XYZ Corporation.
Създаване на първата ни маса
Първата ни таблица се състои от лични данни за всеки служител на нашата компания. Трябва да включим името, заплатата, идентификационния номер и мениджъра на всеки служител. Добра практика на проектиране е да разделяте фамилиите и имената в отделни полета, за да опростите търсенето и сортирането на данни в бъдеще. Също така ще следим мениджъра на всеки служител, като вмъкваме препратка към идентификационния номер на служителя на мениджъра във всеки запис на служител. Нека първо разгледаме желаната таблица на служителите.
Атрибутът ReportsTo съхранява идентификатора на мениджъра за всеки служител. От показаните примерни записи можем да установим, че Сю Скампи е мениджър както на Том Кендъл, така и на Джон Смит. В базата данни обаче няма информация за мениджъра на Сю, както е посочено от NULL записа в нейния ред.
Сега можем да използваме SQL за създаване на таблицата в нашата база данни за персонала. Преди да направим това, нека се уверим, че се намираме в правилната база данни, като издадем USE команда:
Персонал на USE;
Друга възможност е „Персоналът на база данни“; команда ще изпълнява същата функция. Сега можем да разгледаме SQL командата, използвана за създаване на таблицата на нашите служители:
СЪЗДАЙТЕ ТАБЛИЦА служители
(staffid INTEGER НЕ Е НУЛНО,
фамилно име VARCHAR (25) NOT NULL,
собствено име VARCHAR (25) NOT NULL,
доклад за INTEGER NULL);
Както при горния пример, обърнете внимание, че конвенцията за програмиране диктува, че използваме всички главни букви за ключови думи SQL и малки букви за колони и таблици с име на потребител. Командата по-горе може да изглежда объркваща в началото, но всъщност има проста структура зад нея. Ето обобщен възглед, който може малко да изчисти нещата:
СЪЗДАЙТЕ ТАБЛИЦА име_на_таблица
(атрибут_наиме опции за тип данни,
...,
опции тип_атрибут_име на данни);
Атрибути и типове данни
В предишния пример името на таблицата е служители и ние включваме четирима атрибути: workerid, lastname, firstname и reportsto. Типът данни посочва типа информация, която искаме да съхраняваме във всяко поле. Идентификаторът на служителя е просто цяло число, така че ще използваме типа данни INTEGER както за полето workerid, така и за полето reportsto. Имената на служителите ще бъдат символни низове с променлива дължина и не очакваме някой служител да има собствено или фамилно име, по-дълго от 25 знака. Затова ще използваме типа VARCHAR (25) за тези полета.
NULL Стойности
Можем да посочим и двете NULL или NOT NULL в полето за опции на оператора CREATE. Това просто казва на базата данни дали за този атрибут са разрешени NULL (или празни) стойности при добавяне на редове към базата данни. В нашия пример отделът по човешки ресурси изисква идентификацията на служителя и пълното име да се съхраняват за всеки служител. Не всеки служител обаче има мениджър (главният изпълнителен директор не докладва на никого!), Така че ние допускаме NULL записи в това поле. Имайте предвид, че NULL е стойността по подразбиране и пропускането на тази опция по подразбиране ще позволи NULL стойности за атрибут.
Изграждане на останалите таблици
Сега да разгледаме таблицата с територии. От бърз поглед на тези данни изглежда, че трябва да съхраним цяло число и два низа с променлива дължина. Както и в предишния ни пример, не очакваме идентификаторът на региона да консумира повече от 25 знака. Някои от нашите територии обаче имат по-дълги имена, така че ще разширим допустимата дължина на този атрибут до 40 знака.
Нека да разгледаме съответния SQL:
СЪЗДАЙТЕ ТАБЛИЦА територии
(територия INTEGER НЕ Е НУЛА,
територия Описание VARCHAR (40) НЕ Е НУЛНО,
регионид VARCHAR (25) НЕ Е НУЛ);
И накрая, ще използваме таблицата EmployeeTerritories, за да съхраним връзките между служители и територии. Подробна информация за всеки служител и територия се съхранява в предишните ни две таблици. Следователно трябва само да съхраним двата целочислени идентификационни номера в тази таблица. Ако трябва да разширим тази информация, можем да използваме JOIN в нашите команди за избор на данни, за да получим информация от множество таблици.
Този метод за съхраняване на данни намалява излишъка в нашата база данни и осигурява оптимално използване на пространството на нашите устройства за съхранение. Ще разгледаме задълбочено командата JOIN в бъдещ урок. Ето SQL кода за внедряване на нашата финална таблица:
СЪЗДАЙТЕ ТЕРИТОРИИ за служители
(staffid INTEGER НЕ Е НУЛНО,
територия ИНТЕГЪР НЕ Е НУЛ);
Механизмът SQL осигурява промяна на структурата на база данни след създаването
Ако днес сте особено проницателен, може би сте забелязали, че „случайно“ пропуснахме едно от изискванията за проектиране, когато внедряваме таблиците на базата данни. Директорът по човешки ресурси на XYZ Corporation поиска базата данни да проследява информацията за заплатите на служителите и ние пренебрегнахме да предоставим това в таблиците на базата данни, които създадохме.
Всичко обаче не е загубено. Можем да използваме командата ALTER TABLE, за да добавим този атрибут към съществуващата ни база данни. Искаме да съхраняваме заплатата като цяло число. Синтаксисът е доста подобен на този на командата CREATE TABLE, ето го:
ALTER TABLE служители
ДОБАВИ заплата INTEGER NULL;
Забележете, че посочихме, че за този атрибут са разрешени NULL стойности. В повечето случаи няма опция при добавяне на колона към съществуваща таблица. Това се дължи на факта, че таблицата вече съдържа редове без запис за този атрибут. Следователно СУБД автоматично вмъква NULL стойност, за да запълни празнотата.