SQL CREATE DATABASE Statement

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

SQL CREATE DATABASE - оператор створення бази даних. Він потрібний для сортування та впорядкування деяких відомостей. Наприклад, є декілька тварин, власник хоче віднести кожне до однієї групи, додати опис. Дані додаються в таблицю, щоб мати можливість виділяти деякі види, сортувати потрібним чином, завантажувати інформацію з існуючих таблиць в нові. Також користувач хоче додати список всіх наявних електричних приладів, для чого створює ще таблицю. Оскільки це не пов'язані ні яким чином групи, для кожної потрібно створити свою базу даних SQL. CREATE DATABASE Animals і CREATE DATABASE Electrical. Кожну можна зробити доступною або закритою для інших користувачів. Якщо містить декілька таблиць, деякі можна зробити видимими, інші - невидимими.


Далі, адміністратор додає таблицю найменувань корми для тварин і додає в Animals. Всі користувачі, які мають доступ до бази Animals, можуть тільки зчитувати інформацію з двох таблиць. І тільки адміністратор має право вносити правки, видаляти або додавати інформацію. При цьому юзери з доступом до Electrical є довірчими особами, мають права адміністратора: видаляють, додають, редагують запис.

Про DDL, DML, DCL

SQL - декларативна мова програмування.
SQL CREATE DATABASE Statement
Застосовується для створення об'єктів даних, модифікації рядків. Являє собою сукупність операторів, інструкцій, обчислюваних функцій. Оператори поділяються на три типи:
  • DDL - визначення;
  • DML - маніпуляція;
  • DCL - здійснення адміністративних операцій, управління правами.
  • Для маніпуляції даними використовуються такі команди: SELECT, INSERT, UPDATE, DELETE. Щоб призначити користувачу або групі деякі дозволу, використовуються оператори GRANT, REVOKE, DENY.


    Для роботи з даними застосовується три основні запиту:
  • CREATE;
  • ALTER;
  • DROP.
  • Create використовується для створення таблиць, індексів. Створення баз SQL - SQL CREATE DATABASE base_name. Alter змінює властивості створеного об'єкта. Наприклад, додає, видаляє або змінює стовпець, управляє обмеженнями цілісності. DROP видаляє раніше існуючий об'єкт.

    CREATE

    CREATE - універсальний оператор, який використовується в багатьох інших СУБД. Він створює об'єкти бази даних. Це можуть бути:
  • таблиця;
  • подання;
  • база даних.
  • Створення таблиці:

    CREATE TABLE table_name

    В даному випадку table_name повинно бути унікальним, щоб не виникало помилок. Поля призначаються всередині круглих дужок () після імені таблиці.

      CREATE TABLE table_name ( arg )  

    Наприклад,

    SQL CREATE DATABASE Statement

    Таблиця під назвою Planets наділена такими полями, як ID і OpeningYear, які приймають лише числові значення. PlanetName - рядок на 10 символів. Radius і SunSeason можуть бути числами з плаваючою точкою. HavingRings є логічної змінної і приймає значення true або false.

    CREATE VIEW створює представляение. Це така віртуальна таблиця, яка містить інформацію, взяту з інших таблиць. При їх зміні в родительных таблицях, у поданні вони теж змінюються. Маніпулювання даними не відрізняється від того, як це відбувається з табличними даними.


    <script type="text/javascript">
    var blockSettings2 = {blockId:"R-A-70350-39",renderTo:"yandex_rtb_R-A-70350-39",async:!0};
    if(document.cookie.indexOf("abmatch=") >= 0) blockSettings2.statId = 70350;
    !function(a,b,c,d,e){a[c]=a[c]||[],a[c].push(function(){Ya.Context.AdvManager.render(blockSettings2)}),e=b.getElementsByTagName("script")[0],d=b.createElement("script"),d.type="text/javascript",d.src="//an.yandex.ru/system/context.js",d.async=!0e.parentNode.insertBefore(d,e)}(this,this.document,"yandexContextAsyncCallbacks");

    Створення бази даних в SQL CREATE DATABASE base_name.

    CREATE DATABASE

    Оператор визначення даних мови SQL Server - CREATE DATABASE. Використовується для створення бази даних. Він є універсальним і призначений для багатьох СУБД. А не тільки SQL. В POSTGRESQL CREATE DATABASE також створює нову базу даних. Повний синтаксис виглядає так:

    SQL CREATE DATABASE Statement

    З допомогою оператора CREATE DATABASE створюється база даних з ім'ям db_name. Ім'я повинно бути унікальним, тому іншої бази даних з такою ж назвою не повинно існувати, інакше виникає помилка виконання команди.

    Можна призначити пароль за допомогою команди SQL CREATE DATABASE User Password. Але є ще варіант.

    За допомогою SQL CREATE DATABASE Character set utf8 призначається кодування.

    Database_name

    При створенні бази даних в MS SQL CREATE DATABASE вказується ім'я. Воно повинно відповідати правилам ідентифікаторів. Ось основні з них.

    1. Починається з символу від A до Z або від a до z.
    2. В імені може використовуватися знак підкреслення, знак"@", знак долара $, решітка #.
    3. Не повинен повторювати зарезервовані слова.
    4. Заборонено використовувати символи, пробіли і спеціальні символи.

    Назва може містити один символ SQL CREATE DATABASE t.

    Ім'я містить не більше 120 символів. Якщо не зазначено, що формується шляхом додавання суфікса до database_name. Таким чином, довжина обмежується 123 символами, щоб формується назва не перевищило встановлені 128 знаків.

    CONTAINMENT

    Застосовується в SQL Server версії 2012. Відповідає за автономність бази даних. Має два значення:

    • NONE;
    • PARTIAL.

    Незалежна база даних вирішує проблему втрати такої інформації, як логін, пароль при пересуванні бази між серверами. У свою чергу автономна база зберігає необхідну для роботи інформацію. Повністю незалежна від налаштувань SQL сервера, не зав'язана на зовнішніх залежностях. За замовчуванням має значення NONE. Це означає, що база не є автономною.


    <script type="text/javascript">
    var blockSettings3 = {blockId:"R-A-70350-44",renderTo:"yandex_rtb_R-A-70350-44",async:!0};
    if(document.cookie.indexOf("abmatch=") >= 0) blockSettings3.statId = 70350;
    !function(a,b,c,d,e){a[c]=a[c]||[],a[c].push(function(){Ya.Context.AdvManager.render(blockSettings3)}),e=b.getElementsByTagName("script")[0],d=b.createElement("script"),d.type="text/javascript",d.src="//an.yandex.ru/system/context.js",d.async=!0e.parentNode.insertBefore(d,e)}(this,this.document,"yandexContextAsyncCallbacks");

    Перед тим як призначити CONTAINMENT = PARTIAL, необхідно дозволити використання незалежних баз на рівні сервера.

    ON і COLLATE

    On вказує, що дискові файли для зберігання розділів визначаються явно. Застосовується виключно у зв'язці зі списком елементів .

    PRIMARY визначає первинний файл. Якщо не вказано, то в якості первинного використовується перший файл списку в інструкції CREATE DATABASE.

    LOG ON вказує, що файли журналів визначаються явно.

    COLLATE collation_name відповідає за сортування бази даних. Якщо не вказано, то параметри сортування задаються за умовчанням для екземпляра SQL Server. Не може вказуватися з пропозиціями FOR ATTACH і FOR ATTACH_REBUILD_LOG. Сортування незалежних баз даних відрізняється.

    WITH options:

    1. відповідає за нетранзакционный доступ, має три значення: OFF (вимкнено), READ_ONLY (тільки читання), FULL (повний доступ). Ім'я каталогу задається з допомогою DIRECTORY_NAME = . Воно повинно бути унікальним, перевіряється при обліку регістра.
    2. DEFAULT_FULLTEXT_LANGUAGE задається, якщо база є частково автономній. Це розширений варіант, тому рекомендується застосовувати тільки досвідченим адміністраторам. З його допомогою визначається мову для повнотекстових індексів. За замовчуванням є мова сервера.
    3. DEFAULT_LANGUAGE визначає мову для створених імен входу. Присвоюється ідентифікатор в діапазоні 0-32.
    4. TRANSFORM_NOISE_WORDS служить для придушення повідомлень-помилок, які виникають із-за того, що пропущені слова сприяє поверненню 0 рядків. За замовчуванням має значення 0 тому стоп-слова не перетворюється, що повертає 0 рядків. Задавши значення 1 слова перетворюються і пропускаються, тому помилки не виникають.
    5. У TWO_DIGIT_YEAR_CUTOFF вказується рік в діапазоні від 1753 до 9999. За замовчуванням часовий проміжок для SQL 1950-2049 тому вписавши значення 30 повернеться 2030 але 50 інтерпретується як 1950.
    6. DB_CHAINING організовує межбазовый доступ, що забезпечує можливість звертатися до об'єктів з іншої бази даних.
    7. З допомогою TRUSTWORTHY встановлюється довіреність примірника бази даних до вмісту. За умовчанням встановлено off, що захищає від вразливостей при приєднанні деякі баз даних.

    Призначається для керування властивостями файлу. Logical_file_name є логічним ім'ям, застосовується при зверненні до файлу. Повинно бути унікальним, відповідати правилам для ідентифікаторів.

    <script async="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js">

    <script> (adsbygoogle = window.adsbygoogle ||[]).push({});
      FILENAME = {'os_file_name' | 'filestream_path'}  

    В даному випадку змінної filename присвоюється ім'я операційної системи або шлях до файлу. Size відповідає за початковий розмір, а maxsize - максимальний.

    Оператори для бази даних

    У новостворену базу необхідно додати деяку інформацію. Приклад SQL CREATE DATABASE:

    SQL CREATE DATABASE Statement

    Тут задіяні найважливіші вирази мови SQL. На першому рядку адміністратор створює базу даних під назвою mydb. Вона призначається основною з допомогою команди USE mydb.

      USE db1; 

    SELECT COUNT(*) FROM mytable; # selects from db1.mytable

    USE db2;

    SELECT COUNT(*) FROM mytable;

    У цьому виразі спочатку db1 стає основною, але потім db2.

    Після цього створюється таблиця mytable з числовим полем PRIMARY KEY і рядком на 20 символів name. Щоб створити таблицю, яка буде містити значення іншої таблиці застосовується зв'язка операторів AS/SELECT/FROM.


    <script type="text/javascript">
    var blockSettings = {blockId:"R-A-70350-45",renderTo:"yandex_rtb_R-A-70350-45",async:!0};
    if(document.cookie.indexOf("abmatch=") >= 0) blockSettings.statId = 70350;
    !function(a,b,c,d,e){a[c]=a[c]||[],a[c].push(function(){Ya.Context.AdvManager.render(blockSettings)}),e=b.getElementsByTagName("script")[0],d=b.createElement("script"),d.type="text/javascript",d.src="//an.yandex.ru/system/context.js",d.async=!0e.parentNode.insertBefore(d,e)}(this,this.document,"yandexContextAsyncCallbacks");
      CREATE TABLE new_table_name AS 

    SELECT column1 column2

    FROM existing_table_name

    WHERE ;

    Тут видно, що створюється таблиця під ім'ям new_table_name, перед тим як вставити дані з інших таблиць повинні бути виділені стовпці командою SELECT. Тут вибирається column1 і column2. Визначається батьківська таблиця, з якої відбувається імпорт інформації.

      FROM existing_table_name  

    Після створення і додавання деяких даних, можна перевірити всі існуючі бази командою SHOW DATABASES.

    Щоб вставити в таблицю нові значення, використовується команда INSERT INTO, після слова INTO розташовується ім'я оброблюваної таблиці. Після оператора можуть знаходитися значення пріоритетів: LOW_PRIORITY, DELAYED, HIGH_PRIORITY або IGNORE.

    Щоб визначити додаються змінні, пишеться команда VALUES, а в круглих дужках зв'язка значень ( 1 Will ), ( 2 Marry ) і ( 3 Dean ). Якщо передбачається додавання одного значення замість ключового слова VALUES застосовується VALUE. Дозволяється використовувати оператор SET, його іноді простіше використовувати, адже не потрібно запам'ятовувати порядок стовпців. Значення призначаються у формі col = expr.

    Потім за допомогою команди SELECT вибираються дані для подальшої маніпуляції їх значеннями. Обираються такі поля, як id, name з таблиці mytable, id присвоюється значення 1. Щоб змінити або оновити існуючі дані, використовується UPDATE, змінної name задається значення Willy.

    Далі, вибираються дані з таблиці і видаляються. Щоб повністю знищити існуючу таблицю, використовуйте DROP DATABASE tablename. Але видаляються тільки ті, для яких відкритий доступ.

    Створення бази даних з файлами і журналом

    SQL CREATE DATABASE Statement

    В даному прикладі створюється база Sales, де перший файл saledat.mdf стає первинним, оскільки не використовується ключове слово PRIMARY. Значення SIZE і MAXSIZE вказані без суфіксів MB або KB, за умовчанням виділяється пам'ять в мегабайтах. SIZE - 10 MB, MAXSIZE - 15 MB.

    Якщо потрібно вказати декілька файлів даних, кожна з них береться в круглі дужки, перераховується через кому. Наприклад, так:

    SQL CREATE DATABASE Statement

    Таким чином, створені три файли з максимальним розміром 200 Мб.

    Групування файлів

    Якщо є кілька файлів і їх потрібно групувати, це реалізується за допомогою оператора FILEGROUP group_name.

    SQL CREATE DATABASE Statement

    В даному випадку є три групи SalesGroup1 SalesGroup2. Вони містять по два файлу, кожен з них має максимальний розмір 50 Мб. Окремо створений файл журналу Sales_log. Два - SPri1_dat і SPri2_dat не відносяться ні до однієї з груп, вони мають розмір 10 Мб, але під їх вміст виділено 50 Мб.

    Створення бази даних, файлових груп

    У поточному прикладі створюється база даних FileStreamDB. У ній визначається файлова група рядків, дві файлові FILESTREAM. Кожна з них містить тільки один файл.

      USE master; 

    GO

    -- Get the SQL Server data path.

    DECLARE @data_path nvarchar(256);

    SET @data_path = (SELECT SUBSTRING(physical_name, 1 CHARINDEX('master.mdf', LOWER(physical_name)) - 1)

    FROM master.sys.master_files

    WHERE database_id = 1 AND file_id = 1);

    -- Execute the CREATE DATABASE statement.

    EXECUTE ('CREATE DATABASE FileStreamDB

    ON PRIMARY

    (

    NAME = FileStreamDB_data

    ,FILENAME = "' + @data_path + 'FileStreamDB_data.mdf"

    ,SIZE = 10MB

    ,MAXSIZE = 50MB

    ,FILEGROWTH = 15%

    ),

    FILEGROUP FileStreamPhotos CONTAINS FILESTREAM DEFAULT

    (

    NAME = FSPhotos

    ,FILENAME = "C:MyFSfolderPhotos"

    -- SIZE and FILEGROWTH should not be specified here.

    -- If they are specified an error will be raised.

    , MAXSIZE = 5000 MB

    ),

    (

    NAME = FSPhotos2

    , FILENAME = "D:MyFSfolderPhotos"

    , MAXSIZE = 10000 MB

    ),

    FILEGROUP FileStreamResumes CONTAINS FILESTREAM

    (

    NAME = FileStreamResumes

    ,FILENAME = "C:MyFSfolderResumes"

    )

    LOG ON

    (

    NAME = FileStream_log

    ,FILENAME = "' + @data_path + 'FileStreamDB_log.ldf"

    ,SIZE = 5MB

    ,MAXSIZE = 25MB

    ,FILEGROWTH = 5MB

    )'

    );

    GO

    Декларується мінлива @data_path - рядок, з виділеним місцем на 256 символів.

      SET @data_path = (SELECT SUBSTRING(physical_name, 1 CHARINDEX('master.mdf', LOWER(physical_name)) - 1)  

    Функція SUBSTRING повертає частину рядка в першому аргументі, інші дві задають довжину значення. Другий аргумент позначає перший символ, третій - останній. В якості останнього параметра використовується вираз CHARINDEX, яке повертає стартову позицію першого аргументу. З його допомогою відбувається пошук рядкового виразу physical_name, перетвореного в нижній регістр у файлі master.mdf. Оператор EXECUTE запускає виконання функції в круглих дужках. Тут створюється змінна FileStreamDB_data, групи FileStreamPhotos і FileStreamResumes. Файлова група FileStreamPhotos містить FILESTREAM data: два файлу FSPhotos і FSPhotos2. Друга група FileStreamResumes містить FILESTREAM FileStreamResumes. Також створено журнал FileStream_log максимальним розміром 25 Мб.