Создание базы данных в Microsoft SQL Server – инструкция для новичков | Info-Comp.ru
Приветствую всех на сайте Info-Comp.ru! В этой статье я подробно, специально для начинающих программистов, расскажу о том, как создать базу данных в Microsoft SQL Server, а также о том, что Вы должны знать, перед тем как создавать базу данных.
Сегодняшний материал, как я уже сказал, ориентирован на начинающих программистов, которые хотят научиться работать с Microsoft SQL Server. Поэтому я и буду исходить из того, что Вам нужно создать базу данных для обучения, т.е. основной посыл этой статьи направлен на то, чтобы тот, кто хочет создать базу данных в Microsoft SQL Server, после прочтения статьи четко знал, что ему для этого нужно сделать.
Заметка! Профессиональный онлайн-курс по T-SQL для начинающих.
Что нужно, для того чтобы создать базу данных в Microsoft SQL Server?
В данном разделе я представлю своего рода этапы создания базы данных в Microsoft SQL Server, т.
- У Вас должна быть установлена СУБД Microsoft SQL Server. Для обучения идеально подходит бесплатная редакция Microsoft SQL Server Express. Если Вы еще не установили SQL сервер, то вот подробная видео-инструкция, там я показываю, как установить Microsoft SQL Server 2017 в редакции Express;
- У Вас должна быть установлена среда SQL Server Management Studio (SSMS). SSMS – это основной инструмент, с помощью которого осуществляется разработка баз данных в Microsoft SQL Server. Эта среда бесплатная, если ее у Вас нет, то в вышеупомянутой видео-инструкции я также показываю и установку этой среды;
- Спроектировать базу данных. Перед тем как переходить к созданию базы данных, Вы должны ее спроектировать, т.е. определить все сущности, которые Вы будете хранить, определить характеристики, которыми они будут обладать, а также определить все правила и ограничения, применяемые к данным, в процессе их добавления, хранения и изменения. Иными словами, Вы должны определиться со структурой БД, какие таблицы она будет содержать, какие отношения будут между таблицами, какие столбцы будет содержать каждая из таблиц. В нашем случае, т.е. при обучении, этот этап будет скорей формальным, так как правильно спроектировать БД начинающий не сможет. Но начинающий должен знать, что переходить к созданию базы данных без предварительного проектирования нельзя, так как реализовать БД, не имея четкого представления, как эта БД должна выглядеть в конечном итоге, скорей всего не получится;
- Создать пустую базу данных. В среде SQL Server Management Studio создать базу данных можно двумя способами: первый — с помощью графического интерфейса, второй — с помощью языка T-SQL;
- Создать таблицы в базе данных. К этому этапу у Вас уже будет база данных, но она будет пустая, так как в ней еще нет никаких таблиц. На этом этапе Вам нужно будет создать таблицы и соответствующие ограничения;
- Наполнить БД данными. В базе данных уже есть таблицы, но они пусты, поэтому сейчас уже можно переходить к добавлению данных в таблицы;
- Создать другие объекты базы данных. У Вас уже есть и база данных, и таблицы, и данные, поэтому можно разрабатывать другие объекты БД, такие как: представления, функции, процедуры, триггеры, с помощью которых реализуется бизнес-правила и логика приложения.
Вот это общий план создания базы данных, который Вы должны знать, перед тем как начинать свое знакомство с Microsoft SQL Server и языком T-SQL.
В этой статье мы рассмотрим этап 4, это создание пустой базы данных, будут рассмотрены оба способа создания базы данных: и с помощью графического интерфейса, и с помощью языка T-SQL. Первые три этапа Вы должны уже сделать, т.е. у Вас уже есть установленный SQL Server и среда Management Studio, и примерная структура базы данных, которую Вы хотите реализовать, как я уже сказал, на этапе обучения этот пункт можно пропустить, а в следующих материалах я покажу, как создавать таблицы в Microsoft SQL Server пусть с простой, но с более-менее реальной структурой.
Создание базы данных в SQL Server Management Studio
Первое, что Вам нужно сделать, это запустить среду SQL Server Management Studio и подключиться к SQL серверу.
Затем в обозревателе объектов щелкнуть по контейнеру «Базы данных» правой кнопкой мыши и выбрать пункт «Создать базу данных».
В результате откроется окно «Создание базы данных». Здесь обязательно нужно заполнить только поле «Имя базы данных», остальные параметры настраиваются по необходимости. После того, как Вы ввели имя БД, нажимайте «ОК».
Если БД с таким именем на сервере еще нет, то она будет создана, в обозревателе объектов она сразу отобразится.
Как видите, база данных создана, и в этом нет ничего сложного.
Создание базы данных на T-SQL (CREATE DATABASE)
Процесс создания базы данных на языке T-SQL, наверное, еще проще, так как для того чтобы создать БД с настройками по умолчанию (
Сначала открываем редактор SQL запросов, для этого щелкаем на кнопку «Создать запрос» на панели инструментов.
Затем вводим следующую инструкцию, и запускаем ее на выполнение, кнопка «Выполнить».
CREATE DATABASE TestDB;
Где CREATE – это команда языка T-SQL для создания объектов на SQL сервере, командой DATABASE мы указываем, что хотим создать базу данных, а TestDB — это имя новой базы данных.
Конечно же, на данном этапе многие не знают ни Microsoft SQL Server, ни языка T-SQL, многие, наверное, как раз и создают базу данных для того, чтобы начать знакомиться с этой СУБД и начать изучать язык SQL. Поэтому чтобы Вам легче было это делать, советую почитать книгу « SQL код» – это самоучитель по языку SQL для начинающих программистов, которую написал я, и в которой я подробно, и в то же время простым языком, рассказываю о языке SQL.
С помощью инструкции CREATE DATABASE можно задать абсолютно все параметры, которые отображались у нас в графическом интерфейсе SSMS. Например, если бы мы заменили вышеуказанную инструкцию следующей, то у нас база данных создалась бы в каталоге DataBases на диске D.
--Создание БД TestDB CREATE DATABASE TestDB ON PRIMARY --Первичный файл ( NAME = N'TestDB', --Логическое имя файла БД FILENAME = N'D:\DataBases\TestDB.mdf' --Имя и местоположение файла БД ) LOG ON --Явно указываем файлы журналов ( NAME = N'TestDB_log', --Логическое имя файла журнала FILENAME = N'D:\DataBases\TestDB_log.ldf' --Имя и местоположение файла журнала ) GO
Удаление базы данных в Microsoft SQL Server
В случае необходимости можно удалить базу данных. В реальности, конечно же, такое редко будет требоваться, но в процессе обучения, может быть, и часто. Это можно сделать также, как с помощью графического интерфейса, так и с помощью языка T-SQL.
В случае с графическим интерфейсом необходимо в обозревателе объектов щелкнуть правой кнопкой мыши по нужной базе данных и выбрать пункт «Удалить».
Примечание! Удалить базу данных возможно, только если к ней нет никаких подключений, т.е. в ней никто не работает, даже Ваш собственный контекст подключения в SSMS должен быть настроен на другую БД (например, с помощью команды USE). Поэтому предварительно перед удалением необходимо попросить всех завершить сеансы работы с БД, или в случае с тестовыми базами данных принудительно закрыть все соединения.
В окне «Удаление объекта» нажимаем «ОК». Для принудительного закрытия существующих подключений к БД можете поставить галочку «Закрыть существующие соединения».
В случае с T-SQL, для удаления базы данных достаточно написать следующую инструкцию (в БД также никто не должен работать).
DROP DATABASE TestDB;
Где DROP DATABASE — это инструкция для удаления базы данных, TestDB – имя базы данных. Иными словами, командой DROP объекты на SQL сервере удаляются.
Заметка! Для комплексного изучения языка T-SQL рекомендую посмотреть мои видеокурсы по T-SQL, в которых используется последовательная методика обучения и рассматриваются все конструкции языка SQL и T-SQL.
Видео-урок по созданию базы данных в Microsoft SQL Server
На этом наш сегодняшний урок закончен, надеюсь, материал был Вам интересен и полезен, в следующем материале я расскажу про то, как создавать таблицы в Microsoft SQL Server, удачи Вам, пока!
Create (SQL) — это… Что такое Create (SQL)?
- Правильный заголовок этой статьи — CREATE. Он показан некорректно из-за технических ограничений.
CREATE — DDL оператор языка SQL, используемый для создания объектов базы данных. Различные СУБД работают с различными объектами.
Стандарт SQL-92
Стандарт SQL-92 определяет команду CREATE
в вариантах:
CREATE ASSERTION
[1] — создание утвержденияCREATE CHARACTER SET
[2] — создание набора символовCREATE COLLATION
— создание правила сортировки для набора символовCREATE DOMAIN
— создание домена (пользовательского типа данных столбца).CREATE SCHEMA
— создание схемы (именованной группы объектов)CREATE TABLE
— создание таблицы базы данныхCREATE TRANSLATION
— создание правила преобразования (трансляции) из одного набора символов в другой (используется в оператореTRANSLATE
)CREATE VIEW
— создание представления данных
Наиболее общие команды (поддерживаются большинством СУБД): CREATE TABLE
и CREATE VIEW
Примеры
Таблица — Table
[3]CREATE TABLE Student ( Code INTEGER NOT NULL, Name CHAR (30) NOT NULL , Address CHAR (50), Mark DECIMAL );
Представление — VIEW
[4]CREATE VIEW London_view AS SELECT * FROM Salespeople WHERE city = ‘London’;
Счётчик — SEQUENCE (SQL-99, DB2, Oracle, PostgreSQL, Firebird), GENERATOR (Interbase/Firebird)
Oracle:
CREATE SEQUENCE PEAK_NO INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE NOCACHE ORDER;
PostgreSQL:
CREATE SEQUENCE PEAK_NO INCREMENT BY 1 MINVALUE 1000 NO MAXVALUE CACHE 1 NO CYCLE;
Пользователь — User
[5]CREATE USER alfredo IDENTIFIED BY alfredos_secret;
Схема — SCHEMA
Схема (SCHEMA)[6] — является одним из основных объектов базы данных. Она привязывается только к одному пользователю (USER) и является логическим набором объектов базы данных. Схема создается при создании пользователем первого объекта, и все последующие объекты созданные этим пользователем становятся частью этой схемы.
Оператор CREATE SCHEMA применяется тогда, когда требуется гарантировать успешное создание всех объектов и назначение привилегий за одну операцию.
Утверждение — Assertion (SQL 92)
Синоним — SYNONYM
Подключение к базе данных — Database Connection
Пакет — PACKAGE (Oracle)
Тело пакета — PACKAGE BODY (Oracle)
Процедура — PROCEDURE
Тригер — TRIGGER
Тип — TYPE
Тело типа — TYPE BODY
Примечания
Оператор CREATE в SQL — CodeTown.ru
Доброго времени суток! В этой статье мы изучим основы создания баз данных и таблиц в phpMyAdmin с помощью оператора CREATE языка SQL.
Создание базы данных
Для начала открываем phpMyAdmin, нажимаем вкладку SQL — откроется окно команд и приготовимся писать наши запросы. Самое первое, что вам следует изучить, это оператор CREATE DATABASE. Он понадобится для создания базы данных.
1. Создать базу данных с именем STORE. [Дополнительно] При создании проверять наличие базы с таким именем.
Все достаточно просто, создадим базу данных следующим запросом:
CREATE DATABASE STORE;
Далее приведем запрос, который проверит, существует ли база данных с таким именем при создании:
#проверка на существование CREATE DATABASE IF NOT EXISTS STORE;
Вы можете выполнить эти запросы и убедиться, что создается 1 база данных. Также вы уже можете заметить, что комментарии в SQL ставятся с помощью символа хэш (#).
Еще один важный момент заключается в кодировке: лучше всего создавать базу данных с кодировкой utf-8, тогда у вас будут правильно отображаться кириллические символы. Вот окончательный вариант создания базы данных:
CREATE DATABASE STORE CHARACTER SET utf8 COLLATE utf8_general_ci;
Если вам понадобится другая кодировка, то замените ее в этом примере.
Создание таблиц
Базу мы создали, теперь в этой базе нужно создать несколько таблиц, которые впоследствии мы заполним данными. Для создания таблиц используется похожий оператор CREATE TABLE. Для начала выберем ту базу данных, которая нам нужна, если вы работаете в phpMyAdmin, то слева в списке баз данных выберете базу STORE, а затем нажмите на вкладку SQL.
2. Создать три таблицы: Salespeople (Продавцы), Customers (Заказчики), Orders (Заказы) со следующими полями:
— для Salespeople
snum (уникальный номер продавца)
sname (имя)
city (город)
comm (комиссионные)
— для Customers
cnum (уникальный номер заказчика)
cname (имя)
city (город)
rating (рейтинг)
snum (номер продавца, который обслуживает этого заказчика)
— для Orders
onum (уникальный номер заказа)
amt (цена)
odate (дата совершения заказа)
cnum (номер заказчика, сделавшего заказ)
snum (номер продавца, оформившего заказ)
Начнем с создания Salespeople:
CREATE TABLE Salespeople( snum INT(11) NOT NULL PRIMARY KEY, sname VARCHAR(45) NOT NULL, city VARCHAR(45) NOT NULL, comm FLOAT NOT NULL ) DEFAULT CHARSET=utf8;
В операторе CREATE TABLE мы указываем имя столбцов, тип данных, хранящийся в этих столбцах, также номер мы представляем как первичный ключ, по этому ключу мы в будущем сможем обращаться к данным. Стоит отметить конструкцию NOT NULL, она говорит о том, что в этом поле не может быть пустых значений. И не забудем про кодировку и зададим ее с помощью CHARSET.
Далее таблица Customers:
CREATE TABLE Customers( cnum INT(11) NOT NULL PRIMARY KEY, cname VARCHAR(45) NOT NULL, city VARCHAR(45) NOT NULL, rating FLOAT NOT NULL, snum INT(11) NOT NULL, FOREIGN KEY (snum) REFERENCES Salespeople(snum) ) DEFAULT CHARSET=utf8;
По сути такой же запрос. Обратите внимание, что здесь мы будем использовать внешний ключ (FOREIGN KEY), который свяжет таблицы по номеру продавца. И наконец, таблица Orders:
CREATE TABLE Orders( onum INT(11) NOT NULL PRIMARY KEY, amt DOUBLE NOT NULL, odate date NOT NULL, cnum INT(11) NOT NULL, snum INT(11) NOT NULL, FOREIGN KEY (cnum) REFERENCES Customers(cnum), FOREIGN KEY (snum) REFERENCES Salespeople(snum) ) DEFAULT CHARSET=utf8;
Надеюсь, что здесь все понятно.
Заключение
В заключении я приведу скриншот того, что получилось после выполнения запросов создания таблиц SQL.
На сегодня все, мы с вами познакомились с оператором CREATE в SQL, если у вас остались вопросы, то задавайте их в комментариях.
Поделиться ссылкой:
ПохожееCREATE DATABASE & CREATE TABLE Operations
Добро пожаловать в первую статью из серии Learn SQL. В этой части мы начнем с двух основных команд в SQL: Создать базу данных и создать таблицу. Хотя оба они довольно просты, их следует использовать в первую очередь, прежде чем вы начнете работать над чем-либо с данными (если вы не используете какую-либо базу данных шаблонов).
Позже в этой серии я постараюсь охватить все необходимое, чтобы новичок мог окунуться в волшебный мир SQL и баз данных.Итак, начнем:
Целью этой статьи является создание базы данных (с помощью команды SQL Create Database) и двух таблиц (с помощью SQL Create Table), как показано на рисунке выше. В следующих статьях мы будем вставлять данные в эти таблицы, обновлять и удалять данные, а также добавлять новые таблицы и создавать запросы.
Что такое база данных?
Прежде чем мы создадим базу данных с помощью команды SQL Create database, я хочу определить, что такое база данных.Я воспользуюсь определение, предоставленное Oracle:
База данных — это организованный набор структурированной информации или данных, обычно хранящихся в электронном виде в компьютерная система. База данных обычно контролируется системой управления базами данных (СУБД). (источник: https://www.oracle.com/database/what-is-database.html)
В этой статье я буду использовать версию Microsoft SQL Server Express. Итак, СУБД — это SQL Server, а язык, который мы будем использовать, — это T-SQL.Еще раз приведу цитату:
T-SQL (Transact-SQL) — это набор программных расширений от Sybase и Microsoft, которые добавляют несколько функций в язык структурированных запросов (SQL), включая управление транзакциями, обработку исключений и ошибок, обработку строк и объявленные переменные. (источник: https://searchsqlserver.techtarget.com/definition/T-SQL)
Я не буду вдаваться в подробности в этой статье, но мы можем завершить эту часть утверждением, что база данных — это организованный набор таблиц, которые содержат данные из реального мира и некоторые дополнительные столбцы, необходимые для правильной работы системы.Мы обсудим это в следующих статьях.
Оператор создания базы данных SQL
После установки и открытия Microsoft SQL Server Management Studio наш экран выглядит примерно так:
Это совсем не выглядит забавным. Мы сделаем это веселее, создав новую базу данных. После нажатия New Query открывается новое окно, и мы можем что-то ввести. Это выглядит как на картинке ниже:
Прежде чем что-либо печатать, мы должны убедиться, что набираем правильно.T-SQL — это язык, и поэтому у него есть свои слова — набор правил написания различных команд.
К счастью, одна из этих команд — команда SQL Create Database. Вы можете увидеть полный синтаксис T-SQL Create Database на страницах Microsoft.
Я сильно упрощу и воспользуюсь самой простой формой. Чтобы создать новую базу данных на нашем сервере, мы необходимо использовать следующую команду:
СОЗДАТЬ БАЗУ ДАННЫХ имя_базы_данных; |
Где мы будем использовать желаемое имя вместо имя_базы_данных .
Пример создания базы данных SQL
Хорошо, давай попробуем. Запустим команду:
СОЗДАТЬ БАЗУ ДАННЫХ our_first_database; |
После выполнения этой команды наша база данных создана, и вы можете увидеть ее в списке баз данных:
Нажмите на + рядом с папкой Базы данных , и помимо двух папок вы также увидите, что our_first_database был создан.
Это здорово, и вы только что успешно создали свою первую базу данных. Проблема в том, что у нас ничего не хранится в базе данных. Давай изменим это.
Оператор создания таблицы SQL
В теории баз данных таблица — это структура («базовая единица»), используемая для хранения данных в базе данных.
Я очень люблю использовать аналогии, поэтому сделаю это и здесь. Если вы думаете о библиотеке, база данных — это одна полка с книгами, а каждая книга — это таблица.Каждая книга имеет свое собственное содержание, но каким-то образом связана с другими книгами на той же полке — либо разделяя некоторые свойства, либо просто находясь рядом.
За таблицами базы данных и тем, как решить, что и куда следует, стоит много теории, но самое простое, что вы можете сделать, — это следовать. Когда мы смотрим на наши данные и нам нужно решить, что происходит, где мы должны группировать данные в таблицах в таком виде способ, которым все, что принадлежит одной и той же реальной сущности, попадает в одну и ту же таблицу.
Например. если мы хотим хранить данные, описывающие города и страны, у нас будет две отдельные таблицы в нашей базе данных — одна для городов, а другая для стран. Мы не будем смешивать их данные, а скорее свяжем их. Это выходит за рамки данной статьи и будет рассмотрено в следующих частях этой серии.
Чтобы определить таблицу, мы будем следовать синтаксису. Здесь вы можете увидеть полный синтаксис T-SQL Create Table, но я еще раз упросту формулировку:
CREATE TABLE имя_таблицы ( имя_столбца тип_столбца, имя_столбца тип_столбца, … ); |
Мы просто выберем имя для нашей таблицы и перечислим все столбцы, которые мы хотим иметь в этой таблице. Столбцы также называются атрибутами, и каждый столбец описывает свойство одной записи в таблице. Столбец имеет свой тип, и мы следует выбрать тип на основе значений, которые мы ожидаем в этом столбце (число, текст и т. д.).
Пример создания таблицы SQL
Давайте посмотрим на определение двух наших таблиц:
Сначала мы определим таблицу city .
— Таблица: city CREATE TABLE city ( id int NOT NULL IDENTITY (1, 1), city_name char (128) NOT NULL, lat decimal (9,6) NOT NULL, длинное десятичное (9,6) NOT NULL, country_id int NOT NULL, CONSTRAINT city_pk PRIMARY KEY (id) ); |
Обратите внимание на несколько вещей:
- NOT NULL -> Это свойство сообщает нам, что этот столбец не может быть пустым (должен быть определен)
- IDENTITY (1, 1) -> также является свойством столбца, говорящим нам, что это значение должно быть сгенерировано автоматически, начиная с 1 и увеличивая на 1 для каждой новой записи
- CONSTRAINT city_pk PRIMARY KEY (id) -> Это не столбец, а правило, сообщающее нам, что идентификатор столбца должен содержат только УНИКАЛЬНЫЕ значения.Таким образом, только 1 город может иметь id = 5
— Таблица: страна СОЗДАТЬ ТАБЛИЦУ country ( id int NOT NULL IDENTITY (1, 1), country_name char (128) NOT NULL, country_name_eng char (128) NOT NULL, country_code char (8) NOT NULL, CONSTRAINT country_ak_1 UNIQUE (country_name), CONSTRAINT country_ak_2 UNIQUE (country_name_eng), CONSTRAINT country_ak_3 UNIQUE (country_code), PRSTRAINT country_pk |
Здесь у нас есть 1 новое ОГРАНИЧЕНИЕ, и это УНИКАЛЬНОЕ ограничение.Это говорит нам, что это значение должно быть УНИКАЛЬНЫМ. в этой таблице. Например. CONSTRAINT country_ak_1 UNIQUE (country_name) определяет, что мы не можем хранить 2 страны с таким же названием.
Последняя часть скрипта — определение внешних ключей. У нас всего 1 такой ключ, и он связывает город и таблица страны ( city.county_id = country.id ).
— внешние ключи — Ссылка: city_country (таблица: city) ALTER TABLE city ADD CONSTRAINT city_country FOREIGN KEY (country_id) REFERENCES country (id); |
Ключи (первичные и иностранные) слишком сложны, поэтому им будет посвящена отдельная статья.После выполнения этих команд, статус нашей базы данных как на картинке ниже:
Заключение
Поздравляю. Вы успешно создали свою первую базу данных с помощью команд SQL Create Database и Create Table. У нас в базе есть 2 таблицы. Теперь мы готовы заполнить их данными и проверить, правильно ли мы сделали это. Мы сделаем это в следующей статье, так что следите за обновлениями!
Содержание
Эмиль — профессионал в области баз данных с более чем 10-летним опытом работы во всем, что связано с базами данных.В течение многих лет он работал в сфере информационных технологий и финансов, а сейчас работает фрилансером.Его прошлые и настоящие занятия варьируются от дизайна и программирования баз данных до обучения, консультирования и написания статей о базах данных. Также не забывайте, BI, создание алгоритмов, шахматы, филателия, 2 собаки, 2 кошки, 1 жена, 1 ребенок …
Вы можете найти его в LinkedIn
Посмотреть все сообщения Эмиля Drkusic
Последние сообщения Эмиля Drkusic (увидеть все)Как создать одну таблицу из другой таблицы в SQL
Проблема:
Вы хотите создать новую таблицу с данными, скопированными из другой таблицы.
Пример:
В нашей базе данных есть таблица с именем продукт
с данными в следующих столбцах: id
(первичный ключ), имя
, категория
и цена
.
id | имя | категория | цена |
---|---|---|---|
105 | роза | цветок | 5,70 |
108 | письменный стол | мебель | 120.00 |
115 | тюльпан | цветок | 6.50 |
123 | подсолнечник | цветок | 7,50 |
145 | гитара | музыка | 300,00 |
155 | орхидея | цветок | 9,50 |
158 | флейта | музыка | 156,00 |
Давайте создадим в базе данных новую таблицу с именем florist
, в которой будут храниться следующие столбцы: id
, name
и price
.Эти столбцы взяты из таблицы , , товара ,
, но только из категории , цветок .
Важно отметить, что мы создаем новую таблицу. Таблица флорист
не существует в этой базе данных.
Структура CREATE TABLE AS SELECT
Чтобы создать новую таблицу из другой таблицы, вы можете использовать CREATE TABLE AS SELECT
. Это стандартная конструкция SQL. Посмотрите на код SQL ниже:
Решение 1:
СОЗДАТЬ ТАБЛИЦУ флориста КАК ВЫБРАТЬ * ОТ ПРОДУКТА ГДЕ категория = ’цветок’;
Вот результат запроса:
id | имя | категория | цена |
---|---|---|---|
105 | роза | цветок | 5.70 |
115 | тюльпан | цветок | 6.50 |
123 | подсолнечник | цветок | 7,50 |
155 | орхидея | цветок | 9,50 |
Используя CREATE TABLE
, вы можете создать новую таблицу, скопировав данные из другой таблицы. В этом случае мы сначала используем предложение CREATE TABLE
с именем для новой таблицы (в нашем примере: флорист
), затем мы пишем AS
и запрос SELECT
с именами столбцов ( в нашем примере: *
), а затем мы записываем FROM
, за которым следует имя таблицы, из которой собираются данные (в нашем примере: product
).Затем вы можете использовать любое предложение SQL: WHERE
, GROUP BY
, HAVING
и т. Д.
Новая таблица florist
будет содержать определение столбцов из таблицы product
( id
, name
, category
и price
). Количество строк ограничено с помощью предложения WHERE, фильтрующего записи для извлечения данных только из категории , цветок .
Структура SELECT INTO
Другое решение — использовать SELECT INTO
.Это нестандартный синтаксис SQL, но он поддерживается многими популярными базами данных.
Решение 2:
ВЫБРАТЬ я бы, имя, цена INTO флорист ОТ ПРОДУКТА ГДЕ категория = ’цветок’;
Вот результат:
id | name | цена |
---|---|---|
105 | роза | 5,70 |
115 | тюльпан | 6,50 |
123 | подсолнечник | 7.50 |
155 | орхидея | 9,50 |
Обсуждение:
Если вы хотите создать новую таблицу на основе структуры и данных из другой таблицы, вы можете использовать предложение SELECT INTO
. Сначала напишите предложение SELECT
, за которым следует список столбцов (в нашем примере: id
, name
и price
) из существующей таблицы (в нашем примере: product
).
Обратите внимание, что в таблице больше столбцов продукт
. Мы выбрали только интересующие нас столбцы.
Затем используйте ключевое слово INTO
с именем новой таблицы, которую вы хотите создать (в нашем примере: флорист
). Затем напишите ключевое слово FROM с именем существующей таблицы (в нашем примере: product
).
Если вы хотите выбрать отфильтрованные строки из таблицы, используйте предложение WHERE
.После WHERE
запишите условия для фильтрации данных (в нашем примере: WHERE category = ’flower’
).
В этом примере мы создаем новую таблицу florist
, в которой меньше столбцов, чем в таблице product
(разница в категории столбца). В этой новой таблице также меньше строк — только строки с категорией цветок .
Конечно, если вы хотите создать таблицу, используя все столбцы в другой таблице, вы можете использовать *
вместо перечисления столбцов после SELECT
.См. Пример ниже:
Решение 2:
ВЫБРАТЬ * INTO флорист ОТ ПРОДУКТА ГДЕ категория = ’цветок’;
Вот результат:
id | имя | категория | цена |
---|---|---|---|
105 | роза | цветок | 5,70 |
115 | тюльпан | цветок | 6.50 |
123 | подсолнечник | цветок | 7.50 |
155 | орхидея | цветок | 9,50 |
Использование SELECT INTO
— простой способ создать новую таблицу на основе существующей таблицы в базе данных.
экземпляров gcloud sql создать | Документация по Cloud SDK | Google Cloud
Чтобы создать экземпляр MySQL 5.7 с идентификатором prod-instance
с 2 процессорами, 4 ГБ ОЗУ,
и находится в районе us-central1
(зона
будет автоматически назначен), где для пользователя root установлен пароль пароль123
, запустить:
экземпляров gcloud sql создают prod-instance --database-version = MYSQL_5_7 --cpu = 2 --memory = 4GB --region = us-central1 --root-password = password123
Чтобы создать Postgres 9.6 экземпляров с ID
с 2 процессорами, 8 ГиБ
RAM, и находится в зоне prod-instance
,
где для пользователя postgres установлен пароль us-central1-a
, запустить: пароль123
экземпляров gcloud sql создают prod-instance --database-version = POSTGRES_9_6 --cpu = 2 --memory = 8GiB --zone = us-central1-a --root-password = password123
Чтобы создать экземпляр SQL Server 2017 Express с идентификатором
с 2 процессорами, 3840 МБ
RAM, и находится в зоне prod-instance
,
где для пользователя sqlserver установлен пароль us-central1-a
, запустить: пароль123
экземпляров gcloud sql создают prod-instance --database-version = SQLSERVER_2017_EXPRESS --cpu = 2 --memory = 3840MiB --zone = us-central1-a --root-password = password123
SQL CREATE TABLE
Описание: в этом руководстве вы узнаете, как использовать оператор SQL CREATE TABLE для создания новых таблиц в базе данных.
Введение в оператор SQL CREATE TABLE
Таблица — это базовый элемент базы данных. Таблица похожа на электронную таблицу, которая содержит столбцы и строки. Таблица используется для хранения данных, например, о клиентах, поставщиках, товарах.
Для создания новой таблицы используется оператор SQL CREATE TABLE. Ниже показан общий синтаксис оператора SQL CREATE TABLE:
CREATE TABLE имя_таблицы ( имя_столбца1 тип_данных (длина_данных), имя_столбца2 тип_данных (длина_данных), .. ОГРАНИЧЕНИЯ имя_ограничения ПЕРВИЧНЫЙ КЛЮЧ | УНИКАЛЬНЫЙ | ... )
Давайте рассмотрим утверждение более подробно:
- Имя таблицы : рекомендуется, чтобы имя таблицы было как можно более значимым. Вы должны использовать множественное число существительного для названия таблицы, например, продукты, заказы, поставщики .. .etc.
- Имя столбца : как и имя таблицы, вы должны использовать значение имени столбца. Если имя столбца длиннее, вы можете использовать аббревиатуру, например ID для идентификации, Нет для номера.
- Тип данных столбца : необходимо выбрать соответствующий тип данных для каждого столбца в таблице. Наиболее распространенными типами данных являются текст (VARCHAR, NVARCHAR), числовой (SMALLINT, INT, BIGINT), DATE, TIME, DATETIME, BLOB. Пожалуйста, обратитесь к конкретному руководству пользователя системы баз данных, с которой вы работаете, чтобы найти поддерживаемые типы данных.
- Размер столбца : вы должны указать максимальную длину данных для каждого столбца. Например, если вы храните название продукта, попробуйте представить максимальную длину, которую может содержать продукт.
- Ограничение : Вы можете определить ограничение PRIMARY KEY, FOREIGN KEY, UNIQUE, NOT NULL или CHECK с помощью ключевого слова CONSTRAINT. Ключевое слово CONSTRAINT необязательно.
SQL Пример CREATE TABLE
Мы собираемся создать новую таблицу с именем Projects для хранения данных проекта. Ниже приводится инструкция по созданию таблицы Projects .
Язык кода: PHP (php)
СОЗДАТЬ ТАБЛИЦУ проекты ( ProjectID int (11) NOT NULL AUTO_INCREMENT, Имя varchar (255) NOT NULL, Описание varchar (4000) DEFAULT NULL, Дата BeginDate НЕ NULL, Дата окончания по умолчанию NULL, ПЕРВИЧНЫЙ КЛЮЧ (ProjectID) )
В проектах таблица :
- PorjectID: первичный ключ, определенный ограничением PRIMARY KEY.Это НЕ ПУСТОЙ столбец с автоинкрементом.
- Имя: имя проекта с типом данных VARCHAR длиной 255 символов. Это НЕ ПУСТОЙ столбец.
- Описание: описание проекта с типом данных VARCHAR длиной 4000 символов. Это столбец, допускающий NULL.
- BeginDate и EndDate: указывают период проекта. У них один и тот же тип данных DATE. BeginDate — это столбец NOT NULL, а EndDate — столбец, допускающий NULL.
В этом руководстве мы показали вам, как использовать оператор SQL CREATE TABLE для создания новых таблиц в базе данных.
SQL Server CREATE TABLE Заявление
В этом руководстве по SQL объясняется, как использовать CREATE TABLE statement в SQL Server. Это руководство является первой частью из двух сообщений, описывающих операторы DDL (языка определения данных) в SQL Server.
Операторы DDL — это подмножество операторов SQL, используемых для создания, изменения или удаления структур базы данных. В этом посте вы узнаете, как создавать и удалять таблицы.
Это руководство позволяет вам ознакомиться со следующими темами:
В следующем посте будет описано, как использовать оператор SQL Server ALTER TABLE.
SQL Server CREATE TABLE Заявление
Оператор CREATE TABLE SQL Server используется для создания новых таблиц в базе данных.
Типы данных
Тип колонки | Описание | Пример |
VARCHAR ( размер ) | Строковый столбец. Значение в скобках указывает максимальный размер каждого поля в столбце (в символах) | VARCHAR (3) → «ABC» VARCHAR (3) → «AB» |
Десятичный (p, s) | Числовой столбец. P recision — количество цифр, S cale — сколько цифр находится после десятичной точки | ДЕСЯТИЧНЫЙ (5,2) → 476,29 ДЕСЯТИЧНЫЙ (5,2) → 6,29 |
ДАТА | Столбец формата даты | «ГГГГ-ММ-ДД» |
Значение по умолчанию для SQL Server
Столбцу можно присвоить значение по умолчанию с помощью ключевого слова DEFAULT. Ключевое слово DEFAULT предоставляет значение по умолчанию для столбца, когда инструкция SQL Server INSERT INTO не предоставляет конкретного значения.Значение по умолчанию может быть буквальным значением, выражением или функцией SQL, например GETDATE ().
Чтобы определить значение по умолчанию, используйте этот синтаксис:
ПО УМОЛЧАНИЮ default_value
Например:
СОЗДАТЬ ТАБЛИЦУ demo_tbl ( зарплата DECIMAL (8,2) ПО УМОЛЧАНИЮ 9500, rental_date ДАТА ПО УМОЛЧАНИЮ ’2011-01-27’, дата рождения ДАТА ПО УМОЛЧАНИЮ GETDATE () ) ВСТАВИТЬ demo_tbl ЗНАЧЕНИЯ (ПО УМОЛЧАНИЮ, ПО УМОЛЧАНИЮ, ПО УМОЛЧАНИЮ) ВЫБРАТЬ * ОТ demo_tbl зарплата наем_дата дата рождения ------ --------- ---------- 9500 2011-01-27 2014-01-13
Создание ограничений SQL Server
Ограничения применяют правила к данным в таблице всякий раз, когда строка вставляется, удаляется или обновляется.Ограничения можно определить на уровне столбца или таблицы.
Определение ограничений на уровне столбца
Ограничение на уровне столбца:
- Создается как часть определения столбца
- Всегда относится к одной колонке
- Ограничение на уровне столбца имеет следующую структуру:
CONSTRAINT имя_ограничения тип_ограничения
- Constraint_type — тип ограничения, которое должно применяться к столбцу (например, Unique или Not Null)
- Constraint_name — хотя и не является обязательным, всегда рекомендуется давать ограничению имя, что позволит вам легко идентифицировать его.
Многие разработчики баз данных обычно используют следующее соглашение об именах:
<имя таблицы> _ <имя_столбца> _ <сокращение ограничения>
Например:
Первичный ключ (PK)
В SQL Server ограничение первичного ключа — это столбец (или набор столбцов), который однозначно идентифицирует каждую строку в таблице, это ограничение обеспечивает уникальность и гарантирует, что ни один столбец, являющийся частью первичного ключа, не может содержать значение NULL.Для каждой таблицы можно создать только один первичный ключ.
Синтаксис для определения ограничения первичного ключа следующий:
имя_столбца тип_данных_столбца [значение ПО УМОЛЧАНИЮ] [КОНСТРАЙН имя_ограничения] ПЕРВИЧНЫЙ КЛЮЧ,
Например:
СОЗДАТЬ ТАБЛИЦЫ emps (emp_id decimal (3) CONSTRAINT emps_empid_pk PRIMARY KEY, emp_name varchar (25))
Обратите внимание — квадратные скобки в этой демонстрации (и в последующих) указывают на то, что заключенное в них необязательно, квадратные скобки не являются частью оператора CREATE TABLE.
Не ноль (NN)
В SQL Server ограничение Not Null гарантирует, что столбец не содержит значений NULL. Синтаксис для определения ограничения Not Null следующий:
имя_столбца тип_данных_столбца [значение ПО УМОЛЧАНИЮ] [CONSTRAINT имя_ограничения] НЕ NULL,
Например:
СОЗДАТЬ ТАБЛИЦЫ emps (emp_id decimal (3) CONSTRAINT emps_empid_pk PRIMARY KEY, emp_name varchar (25) CONSTRAINT emps_emnm_nn NOT NULL)
Это ограничение может быть определено только на уровне столбца
УНИКАЛЬНЫЙ (UQ)
В SQL Server ограничение уникальности требует, чтобы каждое значение в столбце (или наборе столбцов) было уникальным.Синтаксис для определения ограничения UNIQUE следующий:
имя_столбца тип_данных_столбца [значение ПО УМОЛЧАНИЮ] [КОНСТРАЙН имя_ограничения] УНИКАЛЬНО,
Например:
СОЗДАТЬ ТАБЛИЦЫ emps (emp_id decimal (3) CONSTRAINT emps_empid_pk PRIMARY KEY, emp_name varchar (25) CONSTRAINT emps_emnm_nn NOT NULL, emp_phone varchar (25) ОГРАНИЧЕНИЕ emps_empn_uq УНИКАЛЬНО)
ПРОВЕРКА (СК)
В SQL Server ограничение Check определяет условие, которому должна удовлетворять каждая строка.Синтаксис для определения ограничения проверки следующий:
имя_столбца тип_данных_столбца [значение ПО УМОЛЧАНИЮ] [КОНСТРАЙН имя_ограничения] ПРОВЕРКА (условие),
- Условие, записанное в CHECK, очень похоже по своей структуре на каждое из условий, записанных в операторе WHERE.
- Условие в части CHECK не должно включать:
- Значения, возвращаемые в результате использования ПОСЛЕДОВАТЕЛЬНОСТЕЙ
- Такие функции, как GETDATE ()
- Подзапросы
Например:
СОЗДАТЬ ТАБЛИЦЫ emps (emp_id decimal (3) CONSTRAINT emps_empid_pk PRIMARY KEY, emp_name varchar (25) CONSTRAINT emps_emnm_nn NOT NULL, emp_phone varchar (25) ОГРАНИЧЕНИЕ emps_empn_uq УНИКАЛЬНО, emp_mail varchar (25) CONSTRAINT emps_emml_ck CHECK (emp_mail LIKE _% @%.% '))
Другой пример:
СОЗДАТЬ ТАБЛИЦЫ emps (emp_id decimal (3) CONSTRAINT emps_empid_pk PRIMARY KEY, emp_name varchar (25) CONSTRAINT emps_emnm_nn NOT NULL, emp_phone varchar (25) ОГРАНИЧЕНИЕ emps_empn_uq УНИКАЛЬНО, emp_mail varchar (25) CONSTRAINT emps_emml_ck CHECK (emp_mail LIKE '_%@%.%'), emp_sal decimal (8,2) CONSTRAINT emp_sal_ck CHECK (emp_sal & amp; amp; amp; lt; & amp; amp; amp; gt; 5000))
ИНОСТРАННЫЙ КЛЮЧ (FK)
В SQL Server ограничение внешнего ключа обозначает столбец (или набор столбцов) как внешний ключ и устанавливает связь между первичным ключом (или уникальным) в другой таблице (или в той же таблице).Синтаксис для определения ограничения проверки следующий:
имя_столбца… [CONSTRAINT имя_ограничения] ССЫЛКИ имя_таблицы (имя_столбца) [ON DELETE CASCADE] [ON DELETE SET NULL]
Пример:
Родительский стол
СОЗДАТЬ ТАБЛИЦУ deps (dep_id decimal (3) ОГРАНИЧЕНИЕ deps_id_pk ПЕРВИЧНЫЙ КЛЮЧ, имя_разработки varchar (25))
Детский стол
СОЗДАТЬ ТАБЛИЦЫ emps (emp_id decimal (3) CONSTRAINT emps_empid_pk PRIMARY KEY, emp_name varchar2 (25) CONSTRAINT emps_emnm_nn NOT NULL, emp_phone varchar2 (25) ОГРАНИЧЕНИЕ emps_empn_uq УНИКАЛЬНО, emp_mail varchar2 (25) CONSTRAINT emps_emml_ck CHECK (emp_mail LIKE '_% @%.% '), emp_sal decimal (8,2) CONSTRAINT emp_sal_ck CHECK (emp_sal & amp; amp; gt; 5000), dep_id decimal (3) ОГРАНИЧЕНИЕ emp_depid_fk ССЫЛКИ deps (dep_id))
Ограничения уровня таблицы
- Создается после определения различных столбцов.
- Может относиться к более чем одному столбцу (ограничение, состоящее из двух столбцов вместе).
- Позволяет создать несколько ограничений для одного столбца.
- Невозможно создать ограничение NOT NULL с помощью этого метода.
Например:
СОЗДАТЬ ТАБЛИЦЫ emps (emp_id DECIMAL (3), emp_f_name VARCHAR (25), emp_l_name VARCHAR (25), emp_phone VARCHAR (25) ОГРАНИЧЕНИЕ emps_empn_nn NOT NULL, emp_mail VARCHAR (25), emp_sal DECIMAL (8,2), dep_id DECIMAL (3), ОГРАНИЧЕНИЕ emps_empid_pk ПЕРВИЧНЫЙ КЛЮЧ (emp_id), ОГРАНИЧЕНИЕ emps_empn_uq UNIQUE (emp_f_name, emp_l_name), CONSTRAINT emps_emml_ck1 CHECK (emp_mail LIKE '_%@%.%'), CONSTRAINT emps_emml_ck2 CHECK (LENGTH (emp_mail) & amp; amp; gt; 15), ОГРАНИЧЕНИЕ emps_emml_uq УНИКАЛЬНО (emp_mail), ОГРАНИЧЕНИЕ ПРОВЕРКА emp_sal_ck (emp_sal & amp; amp; gt; 5000), ОГРАНИЧЕНИЕ emp_depid_fk ИНОСТРАННЫЙ КЛЮЧ (dep_id) ССЫЛКИ deps (dep_id))
Удалить существующую таблицу
Синтаксис, используемый для удаления существующей таблицы в SQL Server, следующий:
DROP TABLE имя_таблицы
Например,
DROP TABLE сотрудники
сценариев — как в SQL Server создать оператор CREATE TABLE для данной таблицы?
— или вы можете создать хранимую процедуру… сначала с созданием идентификатора
ИСПОЛЬЗОВАНИЕ [db]
ИДТИ
/ ****** Объект: StoredProcedure [dbo]. [ProcUtils_InsertGeneratorWithId] Дата сценария: 13.06.2009 22:18:11 ****** /
УСТАНОВИТЬ ANSI_NULLS ON
ИДТИ
ВКЛЮЧИТЬ QUOTED_IDENTIFIER
ИДТИ
создать PROC [dbo]. [procUtils_InsertGeneratorWithId]
(
@domain_user varchar (50),
@tableName varchar (100)
)
в качестве
- Объявить курсор для получения информации о столбце для указанной таблицы
ЗАЯВИТЬ КУРСОР cursCol FAST_FORWARD ДЛЯ
ВЫБЕРИТЕ имя_столбца, тип_данных из информационной_схемы.столбцы WHERE table_name = @tableName
ОТКРЫТЬ cursCol
DECLARE @string nvarchar (3000) - для хранения первой половины оператора INSERT
DECLARE @stringData nvarchar (3000) - для хранения оператора, связанного с данными (ЗНАЧЕНИЯ)
DECLARE @dataType nvarchar (1000) - типы данных, возвращаемые для соответствующих столбцов
ОБЪЯВИТЬ @IDENTITY_STRING nvarchar (100)
НАБОР @IDENTITY_STRING = ''
выберите @IDENTITY_STRING
НАБОР @ строка = 'ВСТАВИТЬ' + @ имя_таблицы + '('
НАБОР @ stringData = ''
ОБЪЯВИТЬ @colName nvarchar (50)
ВЫБРАТЬ ДАЛЕЕ ИЗ cursCol В @ colName, @ dataType
ЕСЛИ @@ fetch_status <> 0
начинать
print 'Table' + @ tableName + 'не найден, обработка пропущена.'
закрыть curscol
освободить curscol
возвращение
КОНЕЦ
ПОКА @@ FETCH_STATUS = 0
НАЧИНАТЬ
ЕСЛИ @dataType в ('varchar', 'char', 'nchar', 'nvarchar')
НАЧИНАТЬ
--SET @ stringData = @ stringData + '' '' '' '' '+ isnull (' + @ colName + ',' '' ') +' '' '' ',' '+' '
SET @ stringData = @ stringData + '' '' + '' '+ isnull (' '' '' + '' '' '+' + @ colName + '+' '' '+' '' '', '' NULL '') + '', '' + ''
КОНЕЦ
ЕЩЕ
if @dataType in ('text', 'ntext') - если тип данных - текст или что-то еще
НАЧИНАТЬ
SET @ stringData = @ stringData + '' '' '' '' '+ isnull (cast (' + @ colName + 'как varchar (2000)),' '' ') +' '' '' ',' '+'
КОНЕЦ
ЕЩЕ
IF @dataType = 'money' - потому что деньги не конвертируются из varchar неявно
НАЧИНАТЬ
SET @ stringData = @ stringData + '' 'convert (money,' '' '' '+ isnull (cast (' + @ colName + 'as varchar (200)),' '0.0000 '') + '' '' ''), '' + '
КОНЕЦ
ЕЩЕ
ЕСЛИ @ dataType = 'datetime'
НАЧИНАТЬ
--SET @ stringData = @ stringData + '' 'convert (datetime,' '' '' '+ isnull (cast (' + @ colName + 'as varchar (200)),' '0' ') +' '' '' '),' '+'
--ВЫБОР 'INSERT Authorizations (StatusDate) VALUES (' + 'convert (datetime,' + isnull ('' '' + convert (varchar (200), StatusDate, 121) + '' '', 'NULL') + ' , 121),) 'ИЗ авторизаций
--SET @ stringData = @ stringData + '' 'convert (money,' '' '' '+ isnull (cast (' + @ colName + 'as varchar (200)),' '0.0000' ') +' '' '' '),' '+'
SET @ stringData = @ stringData + '' 'convert (datetime,' + '' '+ isnull (' '' '' + '' '' '+ convert (varchar (200),' + @ colName + ', 121) +' '' '' + '' '' ',' 'NULL' ') +' ', 121),' '+'
- 'convert (datetime,' + isnull ('' '' + convert (varchar (200), StatusDate, 121) + '' '', 'NULL') + ', 121),)' ИЗ авторизации
КОНЕЦ
ЕЩЕ
ЕСЛИ @ dataType = 'изображение'
НАЧИНАТЬ
SET @ stringData = @ stringData + '' '' '' '' '+ isnull (cast (convert (varbinary,' + @ colName + ') as varchar (6)),' '0' ') +' '' '' ' , '' + '
КОНЕЦ
ELSE - предположим, что тип данных - int, bit, numeric, decimal
НАЧИНАТЬ
--SET @ stringData = @ stringData + '' '' '' '' '+ isnull (cast (' + @ colName + 'as varchar (200)),' '0' ') +' '' '' ',' '' ' + '
--SET @ stringData = @ stringData + '' 'convert (datetime,' + '' '+ isnull (' '' '' + '' '' '+ convert (varchar (200),' + @ colName + ', 121) + '' '' '+' '' '', '' NULL '') + '', 121), '' + '
SET @ stringData = @ stringData + '' '' + '' '+ isnull (' '' '' + '' '' '+ convert (varchar (200),' + @ colName + ') +' '' '' + ' '' '', '' NULL '') + '', '' + '
КОНЕЦ
SET @ строка = @ строка + @ colName + ','
ВЫБРАТЬ ДАЛЕЕ ИЗ cursCol В @ colName, @ dataType
КОНЕЦ
ОБЪЯВИТЬ @Query nvarchar (4000)
НАБОР @query = 'SELECT' '' + substring (@ string, 0, len (@string)) + ') VALUES (' '+' + substring (@ stringData, 0, len (@stringData) -2) + ' '' + '') '' ОТ '+ @ имя_таблицы
exec sp_executesql @query
--select @query
ЗАКРЫТЬ cursCol
ОТКЛЮЧИТЬ cursCol
/ *
ИСПОЛЬЗОВАНИЕ
* /
ИДТИ
— и второй без ВСТАВКИ ID
ИСПОЛЬЗОВАНИЕ [db]
ИДТИ
/ ****** Объект: хранимая процедура [dbo].[procUtils_InsertGenerator] Дата сценария: 13.06.2009 22:20:52 ****** /
УСТАНОВИТЬ ANSI_NULLS ON
ИДТИ
ВКЛЮЧИТЬ QUOTED_IDENTIFIER
ИДТИ
СОЗДАТЬ ПРОЦЕСС [dbo]. [ProcUtils_InsertGenerator]
(
@domain_user varchar (50),
@tableName varchar (100)
)
в качестве
- Объявить курсор для получения информации о столбце для указанной таблицы
ЗАЯВИТЬ КУРСОР cursCol FAST_FORWARD ДЛЯ
- ВЫБЕРИТЕ имя_столбца, тип_данных FROM information_schema.columns ГДЕ table_name = @tableName
/* НОВЫЙ
ВЫБРАТЬ c.имя, sc.data_type ИЗ sys.extended_properties AS ep
ВНУТРЕННЕЕ СОЕДИНЕНИЕ sys.tables AS t ON ep.major_id = t.object_id
ВНУТРЕННЕЕ СОЕДИНЕНИЕ sys.columns КАК c ON ep.major_id = c.object_id И ep.minor_id
= c.column_id
ВНУТРЕННЕЕ СОЕДИНЕНИЕ INFORMATION_SCHEMA.COLUMNS sc ON t.name = sc.table_name и
c.name = sc.column_name
ГДЕ t.name = @tableName и c.is_identity = 0
* /
выберите имя_объекта (c.object_id) "TABLE_NAME", c.имя "COLUMN_NAME", s.name "DATA_TYPE"
из sys.columns c
присоединиться к sys.systypes s на (s.xtype = c.system_type_id)
где имя_объекта (c.object_id) в (выберите имя из sys.tables, где имя не похоже на 'sysdiagrams')
И имя_объекта (c.object_id) в (выберите имя из sys.tables, где [name] = @ tableName) и c.is_identity = 0 и s.name не похоже на 'sysname'
ОТКРЫТЬ cursCol
DECLARE @string nvarchar (3000) - для хранения первой половины оператора INSERT
DECLARE @stringData nvarchar (3000) - для хранения оператора, связанного с данными (ЗНАЧЕНИЯ)
DECLARE @dataType nvarchar (1000) - типы данных, возвращаемые для соответствующих столбцов
ОБЪЯВИТЬ @IDENTITY_STRING nvarchar (100)
НАБОР @IDENTITY_STRING = ''
выберите @IDENTITY_STRING
НАБОР @ строка = 'ВСТАВИТЬ' + @ имя_таблицы + '('
НАБОР @ stringData = ''
ОБЪЯВИТЬ @colName nvarchar (50)
ВЫБРАТЬ ДАЛЕЕ ИЗ cursCol В @tableName, @ colName, @ dataType
ЕСЛИ @@ fetch_status <> 0
начинать
print 'Table' + @ tableName + 'не найден, обработка пропущена.'
закрыть curscol
освободить curscol
возвращение
КОНЕЦ
ПОКА @@ FETCH_STATUS = 0
НАЧИНАТЬ
ЕСЛИ @dataType в ('varchar', 'char', 'nchar', 'nvarchar')
НАЧИНАТЬ
--SET @ stringData = @ stringData + '' '' '' '' '+ isnull (' + @ colName + ',' '' ') +' '' '' ',' '+' '
SET @ stringData = @ stringData + '' '' + '' '+ isnull (' '' '' + '' '' '+' + @ colName + '+' '' '+' '' '', '' NULL '') + '', '' + ''
КОНЕЦ
ЕЩЕ
if @dataType in ('text', 'ntext') - если тип данных - текст или что-то еще
НАЧИНАТЬ
SET @ stringData = @ stringData + '' '' '' '' '+ isnull (cast (' + @ colName + 'как varchar (2000)),' '' ') +' '' '' ',' '+'
КОНЕЦ
ЕЩЕ
IF @dataType = 'money' - потому что деньги не конвертируются из varchar неявно
НАЧИНАТЬ
SET @ stringData = @ stringData + '' 'convert (money,' '' '' '+ isnull (cast (' + @ colName + 'as varchar (200)),' '0.0000 '') + '' '' ''), '' + '
КОНЕЦ
ЕЩЕ
ЕСЛИ @ dataType = 'datetime'
НАЧИНАТЬ
--SET @ stringData = @ stringData + '' 'convert (datetime,' '' '' '+ isnull (cast (' + @ colName + 'as varchar (200)),' '0' ') +' '' '' '),' '+'
--ВЫБОР 'INSERT Authorizations (StatusDate) VALUES (' + 'convert (datetime,' + isnull ('' '' + convert (varchar (200), StatusDate, 121) + '' '', 'NULL') + ' , 121),) 'ИЗ авторизаций
--SET @ stringData = @ stringData + '' 'convert (money,' '' '' '+ isnull (cast (' + @ colName + 'as varchar (200)),' '0.0000 '') + '' '' ''), '' + '
SET @ stringData = @ stringData + '' 'convert (datetime,' + '' '+ isnull (' '' '' + '' '' '+ convert (varchar (200),' + @ colName + ', 121) +' '' '' + '' '' ',' 'NULL' ') +' ', 121),' '+'
- 'convert (datetime,' + isnull ('' '' + convert (varchar (200), StatusDate, 121) + '' '', 'NULL') + ', 121),)' ИЗ авторизации
КОНЕЦ
ЕЩЕ
ЕСЛИ @ dataType = 'изображение'
НАЧИНАТЬ
SET @ stringData = @ stringData + '' '' '' '' '+ isnull (cast (convert (varbinary,' + @ colName + ') as varchar (6)),' '0' ') +' '' '' ' , '' + '
КОНЕЦ
ELSE - предположим, что тип данных - int, bit, numeric, decimal
НАЧИНАТЬ
--SET @ stringData = @ stringData + '' '' '' '' '+ isnull (cast (' + @ colName + 'as varchar (200)),' '0' ') +' '' '' ',' '' ' + '
--SET @ stringData = @ stringData + '' 'convert (datetime,' + '' '+ isnull (' '' '' + '' '' '+ convert (varchar (200),' + @ colName + ', 121) + '' '' '+' '' '', '' NULL '') + '', 121), '' + '
SET @ stringData = @ stringData + '' '' + '' '+ isnull (' '' '' + '' '' '+ convert (varchar (200),' + @ colName + ') +' '' '' + ' '' '', '' NULL '') + '', '' + '
КОНЕЦ
SET @ строка = @ строка + @ colName + ','
ВЫБРАТЬ ДАЛЕЕ ИЗ cursCol В @tableName, @ colName, @ dataType
КОНЕЦ
ОБЪЯВИТЬ @Query nvarchar (4000)
НАБОР @query = 'SELECT' '' + substring (@ string, 0, len (@string)) + ') VALUES (' '+' + substring (@ stringData, 0, len (@stringData) -2) + ' '' + '') '' ОТ '+ @ имя_таблицы
exec sp_executesql @query
--select @query
ЗАКРЫТЬ cursCol
ОТКЛЮЧИТЬ cursCol
/ *
использовать poc
идти
ОБЪЯВИТЬ @RC int
ОБЪЯВИТЬ @domain_user varchar (50)
ОБЪЯВИТЬ @tableName varchar (100)
- ЗАДАЧА: Установите здесь значения параметров.установить @ domain_user = 'yorgeorg'
установить @tableName = 'tbGui_WizardTabButtonAreas'
ВЫПОЛНИТЬ @RC = [POC]. [Dbo]. [ProcUtils_InsertGenerator]
@domain_user
, @ tableName
* /
ИДТИ
SQL CREATE Tutorial | Cramerz
SQL CREATE Command используется для создания таблицы или базы данных в SQL. Мы используем одну и ту же команду CREATE в MySQL и MsSQL Server.
СОЗДАТЬ БАЗУ ДАННЫХ
СИНТАКСИС:
СОЗДАТЬ БАЗУ ДАННЫХ nameofdatabase;
ПРИМЕР:
CREATE DATABASE студенты;
ОПИСАНИЕ:
CREATE Query также может использоваться для создания базы данных.Просто введите CREATE DATABASE, а затем имя базы данных. После создания базы данных мы можем снова использовать запрос на создание для создания внутри нее таблиц.
СОЗДАТЬ ТАБЛИЦУ
СИНТАКСИС:
СОЗДАТЬ ТАБЛИЦУ nameoftable (столбец1, столбец2, столбец3)
ОПИСАНИЕ:
Запрос CREATE TABLE используется для создания таблиц. Нам нужно указать имя столбца (в примере ниже itemid, itemname и т. Д.) И типы данных (int, decimal). Этот пример предназначен для MySQL.
ПРИМЕР:
CREATE TABLE ITEMS_SHAHID4
(
ItemID INT PRIMARY KEY AUTO_INCREMENT,
ItemName VARCHAR (60),
ItemPrice DECIMAL (10, 2),
ItemCat VARCHAR (60),
ItemDesc T
)
Примеры команды создания таблицы для MS SQL Server
СОЗДАТЬ ТАБЛИЦУ
При создании таблицы ее имя, столбцы, типы данных, длина поля (не все типы данных) и ограничения (необязательно) определяются с использованием следующего синтаксиса:
Создать таблицу Имя таблицы ( Имя столбца Тип данных (длина) Ограничения )
создать таблицу Product
(первичный ключ
Pid int identity (1,1),
Pname varchar (50),
Pcat varchar (20),
Pprice decimal (8,2),
Pdesc varchar (100)
)
создать таблицу Customer
(
Cid int identity (1000,10) первичный ключ,
Cname varchar (50),
Cemail varchar (30),
Cadd varchar (100),
Cccno bigint,
Ccctype varchar (15)
) )
создать таблицу Порядок
(первичный ключ
Oid bigint identity (10000,1),
Odate datetime,
Ostatus varchar (15),
Cid Int
)
создать таблицу OrderItems
(
ItemID Int identity (1,1),
ItemName varchar (50),
ItemPrice decimal (8,2),
ItemQty int,
Oid bigint
)
Все таблицы имеют столбец первичного ключа (Pid, Cid, Oid, ItemID) и идентификатор.