Як відкрити схему даних у SQLЯк відкрити схему даних у SQL

0 Comment

CREATE SCHEMA (Transact-SQL)

Создает схему в текущей базе данных. При помощи транзакции CREATE SCHEMA также можно создавать таблицы и представления в новой схеме и предоставлять разрешения GRANT, DENY или REVOKE на такие объекты.

Синтаксис

-- Syntax for SQL Server and Azure SQL Database CREATE SCHEMA schema_name_clause [ [ . n ] ] ::= < schema_name | AUTHORIZATION owner_name | schema_name AUTHORIZATION owner_name > ::=
-- Syntax for Azure Synapse Analytics and Parallel Data Warehouse CREATE SCHEMA schema_name [ AUTHORIZATION owner_name ] [;] 

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

schema_name
Имя, по которому схема идентифицируется в данной базе данных.

AUTHORIZATION owner_name
Указывает имя участника уровня базы данных, который является владельцем схемы. Этому участнику могут принадлежать и другие схемы, при этом текущая схема может не использоваться по умолчанию.

table_definition
Указывает инструкцию CREATE TABLE, которая создает таблицу внутри схемы. У участника, выполняющего эту инструкцию, должно быть разрешение CREATE TABLE в текущей базе данных.

view_definition
Указывает инструкцию CREATE VIEW, которая создает представление внутри схемы. У участника, выполняющего эту инструкцию, должно быть разрешение CREATE VIEW в текущей базе данных.

grant_statement
Указывает инструкцию GRANT, которая предоставляет разрешения на любой защищаемый объект, за исключением новой схемы.

revoke_statement
Указывает инструкцию REVOKE, которая отменяет разрешения на любой защищаемый объект, за исключением новой схемы.

deny_statement
Указывает инструкцию DENY, которая запрещает разрешения на любой защищаемый объект, за исключением новой схемы.

Замечания

Выражения, которые содержат инструкцию CREATE SCHEMA AUTHORIZATION, но не определяют имя, разрешены только для обратной совместимости. Выражение не вызывает ошибку, но не создает схему.

Инструкция CREATE SCHEMA создает схему, содержащиеся в ней таблицы и представления, а также разрешения GRANT, REVOKE или DENY на любой защищаемый объект в одной инструкции. Эта инструкция должна выполняться как отдельный пакет. При помощи инструкции CREATE SCHEMA объекты создаются внутри создаваемой схемы.

Транзакции CREATE SCHEMA являются атомарными. Если в процессе выполнения инструкции CREATE SCHEMA возникают ошибки, ни один из указанных защищаемых объектов не создается и ни одно разрешение не предоставляется.

Защищаемые объекты, которые необходимо создать при помощи инструкции CREATE SCHEMA, могут быть перечислены в любом порядке, за исключением представлений, ссылающихся на другие представления. В этом случае ссылающееся представление должно быть создано после того представления, на которое оно ссылается.

Таким образом, при помощи инструкции GRANT можно предоставлять разрешения на объект еще до того, как он будет создан, а инструкция CREATE VIEW может появляться раньше инструкций CREATE TABLE, создающих таблицы, на которые ссылается представление. Кроме того, инструкции CREATE TABLE могут декларировать внешние ключи к таблицам, определенным позже в инструкции CREATE SCHEMA.

В инструкциях CREATE SCHEMA поддерживаются DENY и REVOKE. Предложения DENY и REVOKE будут исполняться в той последовательности, в которой они появляются в инструкции CREATE SCHEMA.

Участник, выполняющий инструкцию CREATE SCHEMA, может указать другого участника базы данных в качестве владельца создаваемой схемы. Для этого необходимы дополнительные разрешения, описанные в подразделе “Разрешения” далее в этом разделе.

Новая схема принадлежит одному из следующих участников уровня базы данных: пользователю базы данных, роли базы данных или роли приложения. Объекты, создаваемые в схеме, принадлежат владельцу схемы и имеют значение NULL для principal_id в sys.objects. Владение объектами, содержащимися в схеме, можно передать любому участнику уровня базы данных, однако у владельца схемы всегда остается разрешение CONTROL на объекты в схеме.

Начиная с SQL Server 2005 поведение схем изменилось. В результате программный код, предполагающий, что схемы эквивалентны пользователям базы данных, возможно, не будет более возвращать правильные результаты. Старые представления каталогов, включая sysobjects, не должны использоваться в базах данных, где когда-либо выполнялась любая из следующих инструкций DDL: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. В таких базах данных необходимо использовать новые представления каталога. Новые представления каталога учитывают разделение участников и схем, введенное в SQL Server 2005. Дополнительные сведения о представлениях каталога см. в разделе “Представления каталога” (Transact-SQL).

Неявное создание схемы и пользователя

Идентификатор Microsoft Entra — это новое имя Azure Active Directory (Azure AD). В настоящее время мы обновляем документацию.

В некоторых случаях пользователь может использовать базу данных без учетной записи пользователя базы данных (субъект базы данных в базе данных). Это может случаться в следующих ситуациях:

  • Имя входа имеет привилегии CONTROL SERVER.
  • Пользователь Windows не имеет индивидуальной учетной записи пользователя базы данных (субъект базы данных в базе данных), однако получает доступ в базу данных как член группы Windows, которая имеет учетную запись пользователя базы данных (субъект базы данных для группы Windows).
  • Пользователь Microsoft Entra не имеет отдельную учетную запись пользователя базы данных (субъект базы данных в базе данных), но обращается к базе данных в качестве члена группы Microsoft Entra, которая имеет учетную запись пользователя базы данных (субъект базы данных для группы Microsoft Entra).

Когда пользователь без учетной записи пользователя базы данных создает объект без определения существующей схемы, субъект базы данных и схема по умолчанию будут автоматически созданы в базе данных для этого пользователя. Созданные субъект и схема базы данных будут иметь то же имя, которым пользовался пользователь при подключении к SQL Server (имя входа в систему для проверки подлинности SQL Server или имя пользователя Windows).

Данное поведение необходимо, чтобы позволить пользователям, базирующимся в группах Windows, создавать и обладать объектами. Однако это может привести к неумышленному созданию схем и пользователей. Во избежание неявного создания пользователей и схем каждый раз, при возможности, явно создавайте субъекты базы данных и назначайте схему по умолчанию. Или явно выражайте существующую схему при создании объектов в базе данных, используя двух- или трехчастные имена объектов.

Неявное создание пользователя Microsoft Entra невозможно на База данных SQL. Так как создание пользователя Microsoft Entra из внешнего поставщика должно проверка состояние пользователя в идентификаторе Microsoft Entra, создание пользователя завершится ошибкой 2760: указанное имя схемы “” либо не существует, либо у вас нет разрешения на использование. А затем ошибка 2759: сбой CREATE SCHEMA из-за предыдущих ошибок. Попытки создания или изменения схем приводят к ошибке 15151: не удается найти пользователя, так как он не существует или у вас нет разрешений. За ним также следует ошибка 2759. Чтобы обойти эти ошибки, создайте пользователя Microsoft Entra из внешнего поставщика или измените группу Microsoft Entra, чтобы назначить схему по умолчанию. Затем повторно запустите инструкцию, создав объект.

В конечной точке аналитики SQL и хранилище в Microsoft Fabric имена схем не могут содержать или \ заканчиваться / ими . .

Уведомление об устаревании

Инструкции CREATE SCHEMA, не указывающие имя схемы, поддерживаются в данный момент только для обратной совместимости. Такие инструкции на самом деле не создают схему внутри базы данных, а создают таблицы и представления, а также предоставляют разрешения. Участникам не нужны разрешения CREATE SCHEMA для выполнения этой более ранней формы инструкции CREATE SCHEMA, поскольку схема не создается. Эта функция будет удалена в одном из будущих выпусков SQL Server.

Разрешения

Требует разрешения CREATE SCHEMA в базе данных.

Чтобы создать объект, указанный в инструкции CREATE SCHEMA, у пользователя должно быть соответствующее разрешение CREATE.

Чтобы назначить другого пользователя владельцем создаваемой схемы, у участника должно быть разрешение IMPERSONATE на этого пользователя. Если роль базы данных указана в качестве владельца, то вызывающий объект должен входить в роль или иметь на нее разрешение ALTER.

Для обеспечения обратной совместимости синтаксиса разрешения на CREATE SCHEMA не проверяются, поскольку схема не создается.

Примеры

А. Создание схемы и предоставление разрешений

В следующем примере создается схема Sprockets , принадлежащая Annik , которая содержит таблицу NineProngs . Инструкция предоставляет разрешение SELECT для Mandar и запрещает SELECT для Prasanna . Обратите внимание на то, что Sprockets и NineProngs создаются в одной инструкции.

USE AdventureWorks2022; GO CREATE SCHEMA Sprockets AUTHORIZATION Annik CREATE TABLE NineProngs (source int, cost int, partnumber int) GRANT SELECT ON SCHEMA::Sprockets TO Mandar DENY SELECT ON SCHEMA::Sprockets TO Prasanna; GO 

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

B. Создание схемы и таблицы в схеме

В следующем примере создается схема Sales , а затем таблица Sales.Region .

CREATE SCHEMA Sales; GO CREATE TABLE Sales.Region (Region_id INT NOT NULL, Region_Name CHAR(5) NOT NULL) WITH (DISTRIBUTION = REPLICATE); GO 

C. Задание владельца схемы

В следующем примере создается схема Production , принадлежащая Mary .

CREATE SCHEMA Production AUTHORIZATION [Contoso\Mary]; GO 

Як створити базу даних MySQL

У цій статті ми покажемо, як створити базу даних MySQL, додати таблицю і заповнити даними за допомогою командного рядка. Для прикладу робитимемо список товарів для книгарні.

Зміст

Підключитися до сервера та зайти до MySQL

Спочатку підключіться до сервера по SSH. Зазвичай хостинг-провайдери надсилають логін та пароль для підключення у листі про активацію хостингу. У нас цей лист називається по-різному залежно від типу хостингу: «Ваш віртуальний хостинг готовий до використання», «Це ваш VPS готовий?» або «Виділений сервер замовляли?».

Після підключення до сервера авторизуйтеся як користувач MySQL:

mysql -u ім’я_користувача -p

Якщо підключаєтеся до MySQL вперше, в системі буде тільки один користувач — root . Пароль від root лежить у конфігураційному файлі .my.cnf. Ви можете відкрити його за допомогою команди cat:

У файлі буде стандартний пароль. Він може виявитися неробочим, якщо його змінили вручну та забули оновити у файлі. У цьому випадку спробуйте скинути пароль.

Створити базу даних

Усі команди MySQL повинні закінчуватися крапкою з комою. Цей знак означає закінчення запиту. Без нього MySQL-сервер не зрозуміє, що перед ним команда, тому після натискання клавіші Enter нічого не станеться.

Якщо забули закінчити команду за правилами, вводити її знову не обов’язково. Просто поставте крапку з комою в наступному рядку і знову натисніть клавішу Enter.

Перед тим, як створити нову базу даних, перевірте список усіх бд на MySQL-сервері за допомогою команди SHOW DATABASES:

Результат виглядатиме приблизно так:

Для створення бази даних MySQL використовуйте команду CREATE DATABASE:

CREATE DATABASE назва_бази_даних ;

Для нашого прикладу з книгарнею підійде назва bookstore:

CREATE DATABASE bookstore;

Просто створити базу даних недостатньо. Щоб із нею працювати, потрібно також обрати її окремою командою. Це доведеться робити щоразу після підключення до MySQL.

Створити таблицю

Інформація в базі даних MySQL зберігається в таблицях. Їх потрібно створювати окремо за допомогою CREATE TABLE. Ви вводите однією командою всю структуру таблиці:

CREATE TABLE назва_таблиці (
назва_стовпця ПАРАМЕТР ,
назва_стовпця ПАРАМЕТР ,
назва_стовпця ПАРАМЕТР
);

Параметр — це правило для інформації всередині стовпця. З його допомогою можна зробити поле обов’язковим для заповнення, дозволити використовувати в стовпці лише цифри або навпаки лише літери.

Ось невеликий список параметрів, що часто використовуються:

  • AUTO_INCREMENT — автоматично нумерувати кожен новий запис. Можна зробити окремий стовпець із нумерацією рядків у таблиці;
  • CHAR — можна використовувати лише символи;
  • INT — можна використовувати лише цілі числа;
  • NOT NULL — поле не повинно бути порожнім;
  • PRIMARY KEY — у кожному рядку мають бути лише унікальні значення.

Зазвичай параметри перераховують один за одним прямо в рядку зі стовпцем, як у прикладі вище. Але є один виняток параметр PRIMARY KEY. Коли він є у команді більше одного разу, MySQL-сервер показує помилку.

Тому, якщо в таблиці унікальні значення повинні бути в декількох стовпцях, запишіть PRIMARY KEY окремим рядком і додайте назви стовпців у дужках:

PRIMARY KEY ( назва_стовпця , назва_стовпця , назва_стовпця )

Тепер давайте створимо першу таблицю з назвою books та чотирма стовпцями: номер запису, назва книги, автор і ціна. Команда для створення такої таблиці буде виглядати так:

CREATE TABLE books( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, title CHAR(100) NOT NULL, author CHAR(40) NOT NULL, price INT NOT NULL );

Створити запис у таблиці

Таблицю створили, залишається заповнити її інформацією. Це роблять за допомогою команди INSERT. Ви вводите однією командою значення одразу для всього рядка:

INSERT INTO назва_таблиці ( назва_стовпця1 , назва_стовпця2 , назва_стовпця3 ) VALUES (“ значення1 “, “ значення2 “, “ значення3 “);

Зауважте, що значення, які ви хочете помістити в стовпці, потрібно брати в лапки , а назви таблиць та стовпців — ні.

Стовпець id не вказуємо, тому що в ньому будуть лише цифри, які MySQL додасть автоматично завдяки параметру AUTO_INCREMENT.

Підставимо значення для першого рядка:

INSERT INTO books (title,author,price) VALUES("Green Mile","Stephen King","17");

Потім додамо ще один рядок:

INSERT INTO books (title,author,price) VALUES("The Casal Vacancy", "J.K.Rowling", "23");

І подивимося, як тепер виглядає таблиця:

Відредагувати запис

Якщо ви випадково ввели значення з помилкою, використовуйте команду UPDATE, щоб відредагувати конкретне поле:

UPDATE назва_таблиці SET назва_стовпця = “ нове_значення ” WHERE назва_стовпця = “ значення “;

Після SET вкажіть назву стовпця, де хочете змінити значення. А після WHERE — назву якогось іншого стовпця з цього рядка. Це потрібно, щоб допомогти MySQL серверу зрозуміти, куди саме вписувати нове значення.

Підставимо реальні значення, щоб виправити помилку в слові Casal у назві другої книги:

UPDATE books SET title = "The Casual Vacancy" WHERE ;

А потім знову переглянемо таблицю і переконаємося, що помилки більше немає:

Видалити рядок, таблицю та базу даних

Видалення MySQL не вимагає додаткового підтвердження. Все видаляється з першого разу, і скасувати це не можна, тому використовуйте команди акуратно.

Якщо якийсь рядок у таблиці більше не потрібний, видаліть його за допомогою команди DELETE FROM:

DELETE FROM назва_таблиці WHERE назва_стовпця = “ значення_стовпця “;

Допустимо, книги “The Casual Vacancy” насправді немає у продажу. Видалимо рядок із нею.

Якщо хочете очистити всі рядки відразу, але зберегти структуру таблиці, використовуйте TRUNCATE:

TRUNCATE TABLE назва_таблиці ;

Щоб повністю видалити таблицю, скористайтеся командою DROP:

Схожа команда видалить базу даних MySQL:

DROP DATABASE назва_бази_даних ;

Вийти з MySQL

Наприкінці роботи відключіться від MySQL-сервера: