Мова Add Constraint SQL

14 0 Новини високих технологій

Цей мову, використовуваний для витягання і управління БД у RDMS, місце для зберігання реляційних даних, що мають кілька рядків і стовпців. SQL дозволяє отримувати і обробляти таблиці в RDMS. У SQL можна створювати процедурні програми з ітераціями та умовами. Можна отримати доступ до бази даних, розмістивши команди так само, як в PHP, або за допомогою візуального програмного забезпечення, такого як phpMyAdmin, що працює на сервері чи комп'ютері за допомогою XAMPP, а також багатьох інших локальних серверних програм. Практично всі сучасні системи управління БД базуються на цій мові.

Історичні передумови SQL

Мова Add Constraint SQL
Абревіатура SQL означає "Структурований мова пошуку", який розуміє практично кожна СУБД. Він був розроблений IBM в сімдесяті роки з початковим назвою SEQUEL, а його справжня назва датується початком вісімдесятих років. SQL був сертифікований Міжнародною організацією по категорії ISO. Ось основні кроки в цьому процесі:


  • стандарт ANSI в 1986 році;
  • ISO (SQL1) в 1987 році, переглянутий у 1989 році;
  • ISO (SQL2) в 1992 році;
  • SQL3 створений у 1999 році ANSI і ISO.
  • Стандарт ISO SQL 2006 року використовується для управління XML-файлами, такими як імпорт XML-даних в базу або експорт вмісту XML і constraint SQL. Незважаючи на стандартизацію ISO, фактичне застосування різними редакторами СУБД має відмінності щодо:
  • деталей синтаксису;
  • написання замовлень;
  • точної роботи органів управління;
  • впровадження нових типів даних (зображень, анімації, відео, гіпертекстових посилань і т. д.).
  • Незалежно від використовуваного програмного забезпечення MySQL (або MariaDB), PostgreSQL, Oracle, NoSQL, як і Cassandra — той же синтаксис з незначними відмінностями. Коротше кажучи, існує тільки одна мова SQL, але кожен редактор СУБД реалізує власний діалект. «Словник», який дозволяє перемикатися з одного діалекту на інший, називається ODBC (Open Data Base Connectivity). Він був створений в Microsoft 1993 році для constraint SQL.


    Можливості мови програмування

    Мова Add Constraint SQL
    SQL - найпопулярніший серед комп'ютерних мов, пов'язаних з системами управління БД. Найперспективніші напрями позначають структуровані запити. Предмет кількох міжнародних стандартизаций, перший з яких відноситься до 1986 році і до цих пір розвивається. Реалізація відповідає реляційної алгебри, але нерідко відхиляється від традиційних обчислень. У реалізаціях зазвичай ігноруються відмінності між верхнім і нижнім регістром, за винятком рядків. Ms SQL constraint дозволяє:
  • виконувати операції реляційної алгебри;
  • редагувати примірники;
  • редагувати відносини в БД.
  • Вираз обмежень цілісності

    Це пропозиція, яка обмежує табличну модифікацію, виконану клієнтськими запитами, так що введені дані, відповідають очікуваним результатам. Їх накладають при створенні:
  • Constraint SQL.
  • DEFAULT.
  • NOT NULL.
  • SINGLE.
  • CHECK.
  • SQL визначає значення за замовчуванням, коли поле бази не повідомляється з допомогою пропозиції DEFAULT. Це спрощує формування таблиць і гарантує, що поле непорожня. У реченні DEFAULT, має бути призначене значення.
    Воно може бути одним з наступних типів:
  • цифрова константа;
  • буквено-цифрова константа (рядок);
  • ключове слово КОРИСТУВАЧА (ім'я користувача);
  • ключове слово NULL;
  • ключове слово CURRENT_DATE (дата введення);
  • ключове слово CURRENT_TIME (час введення);
  • ключове слово CURRENT_TIMESTAMP (дата і час введення).
  • Типи даних в базах

    У синтаксисі, наприклад, type_field1 field_type2 і т. д. вказують тип даних, який буде містити відповідне поле. В основному це правило використовується для передачі їх в систему, щоб воно виділяло відповідне простір пам'яті, в залежності від розміру даних. Система не буде виділяти одне і те ж простір для рядка, як для цілого числа. На phpMyAdmin можна бачити список прийнятих типів у розкривному списку при створенні таблиці.

    Тип даних



    тип



    опис



    NUMBER(n,[d])



    Кількість n цифр[d ( необязательно ) после десятичной точки]



    SMALLINT



    16-розрядне ціле число зі знаком



    INTEGER



    32-розрядне ціле число зі знаком



    FLOAT



    Номер плаваючою точки



    DATE



    Формат дати dd /mm /yy



    TIME



    час



    TIMESTAMP



    Дата і час



    CHAR(l)



    Рядок символів фіксованої довжини l (l <16383)



    VARCHAR(n)



    Символьний рядок з n символів максимум (n <16383)

    Тут наведено приклад: CREATE TABLE table_name ( column1 Type_champ1 , column2 Type_champ2 , colonne3 Type_champ3 ).

    Атрибути constraint SQL

    Щоб мати можливість створювати відносини, потрібно знати обмеження цілісності. До атрибуту застосовуються такі обмеження:
  • default val— val значення за замовчуванням для цього атрибута;
  • not null — пусте або невідоме (нульове) заборонено значення для цього параметра;
  • null — для цього атрибуту допустимо порожнє або невідоме (нульове значення (за замовчуванням);
  • unique — все значення цього атрибута повинні бути унікальними;
  • check (te)— тест te повинен бути істинним для цього параметра;
  • pimary key — цей атрибут є первинним ключем (це SQL unique constraint може з'являтися одного разу) і передбачає not null unique;
  • references ta[(at)]— цей параметр має існуюче значення атрибута at, який є обов'язковим unique, таблиці ta, якщо at не вказано, це первинний ключ, ta;
  • references ta[(at)]on delete cascade — аналогічно попередньому обмеження, крім того, якщо ta видаляється, той примірник, який посилається на нього в цій таблиці, автоматично вилучається також.
  • Такі обмеження add constraint SQL застосовуються до одного чи декількох атрибутів або до таблиці:
  • unique (at1 , atN) — все значення в цьому наборі атрибутів повинні бути унікальними;
  • check (te) — тест повинен te бути істинним для цього набору параметрів.
  • Створення відносин

    У SQL ставлення також називається таблицею. Створення стосунки виражається в SQL за допомогою пропозиції create table.
    Мова Add Constraint SQL
    Створена таблиця порожня: вона містить атрибутів (стовпці), визначені при її створенні, але не входження (рядок). Цілком можливо і доречно вказати обмеження цілісності для атрибутів.
    Мова Add Constraint SQL
    І також можна назвати обмеження, щоб легше ідентифікувати його. В іншому випадку він отримує ім'я, автоматично надається СУБД.
    Мова Add Constraint SQL

    Створення таблиці

    Ключове слово NOT NULL дозволяє вказати, що необхідно ввести в поле, тобто СУБД відмовиться вставляти рядки, на яких не зазначено поле, що включає в себе пропозицію NOT NULL. Можна перевірити поле з CHECK () , має логічне умова для значення між круглими дужками. Якщо це значення відрізняється від NULL, СУБД буде виконувати перевірку з використанням логічного умови з операторами SELECT.

    Пропозиція UNIQUE дозволяє перевірити поля, і гарантує значення стовпців різними. Ключове слово CONSTRAINT присвоює ім'я обмеження, таким чином, щоб воно функціонувало, коли зазначена пропозиція не перевірено. Якщо пропозиція CONSTRAINT не зазначено, ім'я буде надано довільно СУБД. Проте малоймовірно, щоб воно було зрозумілим, і навряд чи його можна усвідомити взагалі, коли є помилка цілісності.

    Приклад даних SQL alter table constraint

    Щоб проілюструвати наступні замовлення, розглянемо таблицю «продукт»:

    id (ідентифікатор)



    nom (ім'я)



    cat?gorie (категорія)



    stock (акції)



    prix (ціна)



    1



    комп'ютер



    обробка даних



    5



    950



    2



    клавіатура



    обробка даних



    32



    35



    3



    миша



    обробка даних



    16



    30



    4



    олівець



    поставка



    147



    2

    Оператор add constraint SQL може приєднуватись до кільком умовам у запиті. Зберігаючи ту ж таблицю, що і раніше, щоб фільтрувати лише комп'ютерні продукти, які майже відсутні на складі (менше 20 найменувань), запускають наступний запит:
    SELECT * FROM produitWHERE cat?gorie = 'informatique' AND stock < 20 Цей запит повертає наступні результати:

    id (ідентифікатор)



    nom ім'я



    cat?gorie (категорія)



    stock (акції)



    prix (ціна)



    1



    комп'ютер



    обробка даних



    5



    950



    3



    миша



    обробка даних



    16



    30

    Щоб відфільтрувати дані і мати тільки інформацію про продукти «комп'ютер» або «клавіатура», необхідно виконати наступний пошук: SELECT * FROM produitWHERE nom = 'ordinateur' OR nom = 'clavier' Цей простий запит повертає наступні результати:

    id (ідентифікатор)



    nom (ім'я)



    cat?gorie (категорія)



    stock (акції)



    prix (ціна)



    1



    комп'ютер



    обробка даних



    5



    950



    2



    клавіатура



    обробка даних



    32



    35

    Слід пам'ятати, що оператори можуть бути об'єднані для виконання потужного пошуку. Можна фільтрувати продукти «комп'ютер» із запасом менше 20 а продукти «постачати» з запасом менше 200 з наступним пошуком SQL alter table add constraint: SELECT * FROM produitWHERE ( cat?gorie = 'informatique' AND stock < 20 )OR ( categorie = 'fourniture' AND stock < 200 ) Це повертає наступні 3 результату:

    id (ідентифікатор)



    nom (ім'я)



    cat?gorie (категорія)



    stock (акції)



    prix (ціна)



    1



    комп'ютер



    обробка даних



    5



    950



    2



    миша



    обробка даних



    16



    30



    4



    олівець



    поставка



    147



    2

    Визначення ключів

    Завдяки SQL constraint foreign key, можна визначити ключі, тобто, вказати стовпці, знання яких дозволяє призначати рівно один з них і один рядок. Набір стовпців, які є частиною поточної таблиці, називається первинним ключем і визначається пропозицією PRIMARY KEY, за яким слідує список стовпців, розділених комами, в дужках. Вони більше не приймають значення NULL повинні бути такими, щоб два рядки не може одночасно мати одну і ту ж комбінацію значень для цих стовпців. PRIMARY KEY (colonne1 colonne2 ). Коли список стовпців виконуваної таблиці дозволяє визначити первинний ключ, він використовує пропозицію SQL add constraint foreign key, за яким слідує список стовпців поточної таблиці, розділений комами, в круглих дужках. Потім у дужках слід пропозиція REFERENCES, за ним ім'я зовнішньої таблиці і список відповідних стовпців, розділених комами. FOREIGN KEY (colonne1 colonne2 ) REFERENCES Nom_de_la_table_etrangere(colonne1colonne2)

    Первинні ключі

    Інтереси СУБД за межами зберігання — це організувати це сховище і дозволити встановлювати на ньому певні правила. Таким чином, для кожної з таблиць зазвичай визначається первинний ключ. Він буде однозначно ідентифікувати пошук по рядку при поданні. Тому при оголошенні стовпця в якості ключа СУБД автоматично створює індекс з обмеження. Воно може бути виконане:
    Мова Add Constraint SQL
    Ім'я обмеження управляється СУБД, коли потрібно назвати цей первинний ключ. ПК також може бути створений вдруге через замовлення alter в таблиці. Цей первинний ключ буде абсолютним ідентифікатором для застосування. СУБД може обійтися без нього завдяки rowid, тому необхідність наявності первинного ключа технічно не існує, але не має великого сенсу додатки. Цей первинний ключ також у багатьох випадках встановлює обмеження цілісності, тобто управління певними даними в одній таблиці у порівнянні з іншими показниками, що належать іншим таблиць.
    Мова Add Constraint SQL
    Наприклад, в базі даних управління клієнтами забороняється наявність рахунки-фактури без одного замовлення. Створюють зовнішній ключ у таблиці рахунків, який буде обмежений наявністю ключа.

    Обмеження зовнішнього ключа

    Для ПК обмеження зовнішнього ключа (FK) визначено створенням таблиці, завдяки механізму налаштування ключів і пов'язаним їм індексами, які будуть створені для FK, тому запити до сполук простіше при підключенні. На додаток до обмежень первинного або зовнішнього ключа існують інші обмеження:
    Мова Add Constraint SQL
    Наприклад, обмеження єдиності, відмінне від того, яке відповідає первинному ключу. Потрібно створити унікальний індекс: create unique index num_s?cu on personne. Ще одна можливість обмеження - це лімітація перевірки, яка зазвичай дозволяє вказати діапазон або формат значення. Позитивне значення для споживання - показник вибору з ввічливості (еквівалентно ENUM для деяких інших СУБД) і зберігається у верхньому регістрі:
    Мова Add Constraint SQL
    Таким чином, СУБД дозволяє створювати обмеження цілісності всіх видів, проте, як тільки вони застосовуються, не можливо керувати поняттям активно/неактивне. Неактивний обмеження не впливає на роботу бази (вставка, видалення, ). Однак час, що витрачається на реактивацію напруги, може бути тривалим, залежно від процедур, які необхідно виконати для перевірки цього SQL alter constraint. Але зазвичай буває цікаво відключити обмеження. Обмеження відключається наступним чином: ALTER TABLE ma_table DISABLE CONSTRAINT ma_constraint; І активується: ALTER TABLE ma_table ENABLE CONSTRAINT ma_constraint; Зрозуміло, слід зазначити, що будь-яке (активований) обмеження, застосовується до бази даних, вимагає додаткової обробки при вставках, модифікації або видалення. Ці процеси, як правило, уповільнюють використання бази, тому їх слід застосовувати економно. Команда ALTER TBLE змінює структуру таблиці. Якщо вона використовується поточним запитом, команда ALTER чекає його завершення. Використання команди: Редагування значення стовпця. Встановлені за замовчуванням значення застосовуються до наступних команд INSERT, а не рядками. Перейменування стовпців або таблиць без зміни типу, в цій комманде можна ігнорувати стовпець ключових слів. Мова не дозволяє змінювати обмеження. Замість цього вони повинні видалити обмеження або створити його. Поміняйте довжину стовпчика varchar. Якщо таблиця посилається на збережену процедуру, можна додати або видалити стовпець. Можна видалити збережену процедуру перед виконанням команди ALTER TABLE, а потім відтворити її після редагування таблиці.

    Тригер: гарантія посилальної цілісності

    Мова Add Constraint SQL
    Зовнішні ключі використовуються для визначення стовпців таблиці, яка гарантує достовірність іншої таблиці. Таким чином, є елементи, звані тригерами, щоб гарантувати всі ці обмеження, які позначаються терміном посилальної цілісності (s) і переконуються, що рядок використовується з іншої таблиці, фактично існує. Ці тригери перебувають у стані «Видалити» і «Оновити»:
  • ON DELETE - супроводжується аргументами в фігурних дужках, що дозволяють вказати дію, що виконується в разі видалення рядка.
  • CASCADE - вказує каскадне видалення рядків, чиї ключі відповідають первинним їх усуненням.
  • RESTRICT - вказує на помилку при видаленні значення, відповідного клавіші.
  • SET NULL - поміщає NULL в рядок, якщо значення видаляється.
  • SET DEFAULT - поміщає значення за замовчуванням (яке слід за цим параметром) в рядку, якщо значення, видаляється.
  • У полі «ОНОВЛЕННЯ» йдуть аргументи в фігурних дужках, що дозволяють вказати дію, виконувану при зміні рядки таблиці, складової частини ключа:
  • CASCADE - вказує каскадну модифікацію рядків зовнішньої таблиці, чиї ключі відповідають ключів змінених рядків.
  • RESTRICT - вказує на помилку відповідної клавіші.
  • SET NULL - поміщає NULL в рядок, якщо змінюється значення відповідної клавіші.
  • SET DEFAULT - поміщає значення за замовчуванням, яке слід за цим параметром в рядку, якщо змінюється значення, відповідне клавіші.
  • Затвердження - це вирази, які повинні виконуватися при редагуванні даних, щоб вони могли бути виконані.Таким чином, вони гарантують цілісність даних.
  • Їх синтаксис виглядає наступним чином: CREATE ASSERTION Nom_de_la_contrainte CHECK (expression_conditionnelle) Умова, яка повинна виконуватися, може бути зроблено (і зазвичай) з допомогою пропозиції SELECT.