SQL CREATE DATABASE Statement
Далі, адміністратор додає таблицю найменувань корми для тварин і додає в Animals. Всі користувачі, які мають доступ до бази Animals, можуть тільки зчитувати інформацію з двох таблиць. І тільки адміністратор має право вносити правки, видаляти або додавати інформацію. При цьому юзери з доступом до Electrical є довірчими особами, мають права адміністратора: видаляють, додають, редагують запис.
Про DDL, DML, DCL
SQL - декларативна мова програмування. Застосовується для створення об'єктів даних, модифікації рядків. Являє собою сукупність операторів, інструкцій, обчислюваних функцій. Оператори поділяються на три типи: 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 )
Наприклад,
Таблиця під назвою Planets наділена такими полями, як ID і OpeningYear, які приймають лише числові значення. PlanetName - рядок на 10 символів. Radius і SunSeason можуть бути числами з плаваючою точкою. HavingRings є логічної змінної і приймає значення true або false.
CREATE VIEW створює представляение. Це така віртуальна таблиця, яка містить інформацію, взяту з інших таблиць. При їх зміні в родительных таблицях, у поданні вони теж змінюються. Маніпулювання даними не відрізняється від того, як це відбувається з табличними даними.
<script type="text/jаvascript">
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/jаvascript",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 також створює нову базу даних. Повний синтаксис виглядає так:
З допомогою оператора CREATE DATABASE створюється база даних з ім'ям db_name. Ім'я повинно бути унікальним, тому іншої бази даних з такою ж назвою не повинно існувати, інакше виникає помилка виконання команди.
Можна призначити пароль за допомогою команди SQL CREATE DATABASE User Password. Але є ще варіант.
За допомогою SQL CREATE DATABASE Character set utf8 призначається кодування.
Database_name
При створенні бази даних в MS SQL CREATE DATABASE вказується ім'я. Воно повинно відповідати правилам ідентифікаторів. Ось основні з них.
- Починається з символу від A до Z або від a до z.
- В імені може використовуватися знак підкреслення, знак"@", знак долара $, решітка #.
- Не повинен повторювати зарезервовані слова.
- Заборонено використовувати символи, пробіли і спеціальні символи.
Назва може містити один символ SQL CREATE DATABASE t.
Ім'я містить не більше 120 символів. Якщо не зазначено, що формується шляхом додавання суфікса до database_name. Таким чином, довжина обмежується 123 символами, щоб формується назва не перевищило встановлені 128 знаків.
CONTAINMENT
Застосовується в SQL Server версії 2012. Відповідає за автономність бази даних. Має два значення:
- NONE;
- PARTIAL.
Незалежна база даних вирішує проблему втрати такої інформації, як логін, пароль при пересуванні бази між серверами. У свою чергу автономна база зберігає необхідну для роботи інформацію. Повністю незалежна від налаштувань SQL сервера, не зав'язана на зовнішніх залежностях. За замовчуванням має значення NONE. Це означає, що база не є автономною.
<script type="text/jаvascript">
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/jаvascript",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:
- відповідає за нетранзакционный доступ, має три значення: OFF (вимкнено), READ_ONLY (тільки читання), FULL (повний доступ). Ім'я каталогу задається з допомогою DIRECTORY_NAME = . Воно повинно бути унікальним, перевіряється при обліку регістра.
- DEFAULT_FULLTEXT_LANGUAGE задається, якщо база є частково автономній. Це розширений варіант, тому рекомендується застосовувати тільки досвідченим адміністраторам. З його допомогою визначається мову для повнотекстових індексів. За замовчуванням є мова сервера.
- DEFAULT_LANGUAGE визначає мову для створених імен входу. Присвоюється ідентифікатор в діапазоні 0-32.
- TRANSFORM_NOISE_WORDS служить для придушення повідомлень-помилок, які виникають із-за того, що пропущені слова сприяє поверненню 0 рядків. За замовчуванням має значення 0 тому стоп-слова не перетворюється, що повертає 0 рядків. Задавши значення 1 слова перетворюються і пропускаються, тому помилки не виникають.
- У TWO_DIGIT_YEAR_CUTOFF вказується рік в діапазоні від 1753 до 9999. За замовчуванням часовий проміжок для SQL 1950-2049 тому вписавши значення 30 повернеться 2030 але 50 інтерпретується як 1950.
- DB_CHAINING організовує межбазовый доступ, що забезпечує можливість звертатися до об'єктів з іншої бази даних.
- З допомогою TRUSTWORTHY встановлюється довіреність примірника бази даних до вмісту. За умовчанням встановлено off, що захищає від вразливостей при приєднанні деякі баз даних.
Призначається для керування властивостями файлу. Logical_file_name є логічним ім'ям, застосовується при зверненні до файлу. Повинно бути унікальним, відповідати правилам для ідентифікаторів.
<script> (adsbygoogle = window.adsbygoogle ||[]).push({});
FILENAME = {'os_file_name' | 'filestream_path'}
В даному випадку змінної filename присвоюється ім'я операційної системи або шлях до файлу. Size відповідає за початковий розмір, а maxsize - максимальний.
Оператори для бази даних
У новостворену базу необхідно додати деяку інформацію. Приклад SQL CREATE DATABASE:
Тут задіяні найважливіші вирази мови 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/jаvascript">
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/jаvascript",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. Але видаляються тільки ті, для яких відкритий доступ.
Створення бази даних з файлами і журналом
В даному прикладі створюється база Sales, де перший файл saledat.mdf стає первинним, оскільки не використовується ключове слово PRIMARY. Значення SIZE і MAXSIZE вказані без суфіксів MB або KB, за умовчанням виділяється пам'ять в мегабайтах. SIZE - 10 MB, MAXSIZE - 15 MB.
Якщо потрібно вказати декілька файлів даних, кожна з них береться в круглі дужки, перераховується через кому. Наприклад, так:
Таким чином, створені три файли з максимальним розміром 200 Мб.
Групування файлів
Якщо є кілька файлів і їх потрібно групувати, це реалізується за допомогою оператора FILEGROUP group_name.
В даному випадку є три групи 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 dаta: два файлу FSPhotos і FSPhotos2. Друга група FileStreamResumes містить FILESTREAM FileStreamResumes. Також створено журнал FileStream_log максимальним розміром 25 Мб.