Руководство. просмотреть и изменить данные в таблице
Теперь можно просматривать, изменять и удалять данные в существующей таблице с помощью визуального редактора данных.
В следующих процедурах используются сущности, созданные ранее с помощью руководства по разработке подключенной базы данных.
Визуальное редактирование данных в таблице с помощью редактора данных
- Щелкните правой кнопкой мыши таблицу Products в обозревателе объектов SQL Server и выберите Просмотреть данных.
- Запустится редактор данных. Обратите внимание на строки, которые мы добавили в таблицу в предыдущих процедурах.
- Щелкните правой кнопкой мыши таблицу Fruits в обозревателе объектов SQL Server и выберите Просмотреть данные.
- В редакторе данных введите 1 в поле Id и True в поле Perishable, а затем нажмите клавишу ВВОД или TAB, чтобы убрать фокус с новой строки и выполнить фиксацию в базу данных.
- Повторите описанный выше шаг: введите в таблицу значения 2, False и 3, False. Обратите внимание, что при изменении строки их всегда можно вернуть с помощью клавиши ESC.
- Чтобы просмотреть изменения в виде скрипта, нажмите кнопку Скрипт на панели инструментов. Кроме того, можно сохранить изменения в SQL-файле скрипта для последующего использования, нажав кнопку Вывести скрипт в файл.
- Щелкните правой кнопкой мыши базу данных Trade в обозревателе объектов SQL Server и выберите пункт Новый запрос. В редакторе введите select * from dbo.PerishableFruits и нажмите кнопку Выполнить запрос, чтобы вернуть данные, отображаемые в представлении PerishableFruits .
Обратная связь
Были ли сведения на этой странице полезными?
Получить список таблиц в пользовательских БД в SQL Server
Добрый день. Подскажите запрос на получение списка таблиц пользовательских (не системных) баз данных в SQL Server 2008.
Отслеживать
51.4k 87 87 золотых знаков 267 267 серебряных знаков 505 505 бронзовых знаков
задан 6 июл 2011 в 7:33
285 2 2 золотых знака 4 4 серебряных знака 17 17 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Есть ещё вариант SELECT * FROM INFORMATION_SCHEMA.TABLES
Он более кроссплатформенный относительно СУБД, т.к. INFORMATION_SCHEMA является частью стандарта SQL, а sys.objects нет.
Хотя там есть не всё, многие вещи без представлений из схемы sys не получить.
Отслеживать
ответ дан 6 июл 2011 в 9:04
8,885 26 26 серебряных знаков 66 66 бронзовых знаков
Запомню, спасибо
6 июл 2011 в 10:52
//Выдает все базы данных на сервере
SELECT name FROM sys.databases
//Выдает все таблицы в Базе данных
SELECT * FROM sys.objects WHERE type in (N’U’)
Отслеживать
ответ дан 6 июл 2011 в 7:43
841 1 1 золотой знак 9 9 серебряных знаков 26 26 бронзовых знаков
Второй запрос возвращает список таблиц из СИСТЕМНОЙ базы master. Наверное я неправильно сформулировал вопрос: Нужно получать список таблиц из баз, которые созданы пользователем, т.е. создана база БАЗА1 с таблицами ТАБЛИЦА1, ТАБЛИЦА2 и т.д. Нужно получить список этих таблиц: ТАБЛИЦА1, ТАБЛИЦА2
6 июл 2011 в 8:07
Второй запрос выведет вам таблицы из базы данных, которую вы выберите. USE [MyDataBase] для выбора базы данных
Как вывести таблицу в sql
Настало время перейти от теории к практике. Для дальнейшего изучения SQL Server создадим маленькую БД. Для создания БД Вам необходимо скачать с проект для шага с файлом SQLByStep.sql.
- найти свободное пространство на диске — БД требует примерно 2 МБайта
- создать каталог для размещения БД — по умолчанию используется C:\SQLByStep\data, если желаете выбрать другой путь — отредактируйте файл ( в команде CREATE DATABASE исправьте пути к файлам данных и лога)
- запустить Query Analyzer
- выберите меню File->Open и загрузите файл SQLByStep.sql
- выполните его (нажмите F5)
SNUM | уникальный код, назначенный каждому торговому агенту |
SNAME | имя торгового агента |
CITY | расположение агента (город) |
COMM | комиссионные продавца |
Таблица Customers (Заказчики)
Поле | Содержание |
---|---|
CNUM | уникальный номер, назначенный каждому заказчику |
CNAME | имя заказчика |
CITY | расположение заказчика (город) |
RATING | код, указывающий уровень предпочтения данного заказчика перед другими, более высокий уровень указывает на большее предпочтение |
SNUM | код агента, назначенного этому заказчику (из таблицы Salespeople |
Таблица Orders (Заказы):
Поле | Содержание |
---|---|
ONUM | уникальный номер каждого заказа |
AMT | сумма заказа (в условных единицах конечно же 🙂 |
ODATE | дата заказа |
CNUM | номер заказчика, делающего заказ (из таблицы Customers) |
SNUM | номер агента, принявшего заказ (из таблицы Salespeople) |
Теперь можно продемонстрировать как с помощью Transact-SQL извлекать информацию из таблиц. Все запросы выполняются одной командой SELECT. В самой простой форме команда SELECT просто инструктирует БД, чтобы извлесь информацию из таблицы. Например, чтобы вывести содержимое таблицы Агентов (Salespeople) надо ввести следующее:
SELECT snum, sname, city, comm FROM Salespeople
Эта команда просто выводит все данные из таблицы. Вывод для этого запроса приведен ниже:
snum sname city comm ----- -------- ----------- ----- 1001 Иванов Москва 12 1002 Петров Хабаровск 13 1003 Егоров Караганда 10 1004 Сидоров Сочи 11 1007 Шилин Красноярск 15
- SELECT — ключевое слово
- snum, sname — список столбцов из таблицы, которые выбираются запросом. Любые другие столбцы, не указанные в этом списке игнорируются.
- FROM — ключевое слово, после него перечисляются таблицы — источник данных
Если вы хотите видеть все столбцы таблицы используйте специальное сокращение:
SELECT * FROM Salespeople
Выведена информация будет также как и в преыдущем случае.
В общем случае команда SELECT начинается с ключевого слова SELECT, за ним идет список имен столбцов, которые Вы хотите видеть, или *(звездочка) если Вы хотите видеть все столбцы. За тем идет ключевое слово FROM, далее имя таблицы, к которой делается запрос.
Что будет дальше? Дальше предлагается углубится в команду SELECT: сортировка данных, сложные логические выражения и специальные операторы.
Урок 2. Составные условия
В прошлом уроке мы научились выбирать совершеннолетних пользователей с помощью простого SQL запроса.
SELECT last_name, first_name, birthday FROM users WHERE age >= 18
Теперь попробуем немного уточнить запрос. Например, выберем всех совершенолетних мужчин. В таблицу я добавил дополнительное строковое поле sex, которое хранит m для мужчин и w для женщин:
id | first_name | last_name | birthday | age | sex |
---|---|---|---|---|---|
1 | Дмитрий | Иванов | 1996-12-11 | 20 | m |
2 | Олег | Лебедев | 2000-02-07 | 17 | m |
3 | Тимур | Шевченко | 1998-04-27 | 19 | m |
4 | Светлана | Иванова | 1993-08-06 | 23 | w |
5 | Олег | Ковалев | 2002-02-08 | 15 | m |
6 | Алексей | Иванов | 1993-08-05 | 23 | m |
7 | Алена | Процук | 1997-02-28 | 18 | w |
Давайте добавим вывод столбца sex и оставим только мужчин. Для этого в блоке условий, который начинается со слова WHERE нужно добавить AND sex = ‘m’:
SELECT last_name, first_name, birthday, sex FROM users WHERE age >= 18 AND sex = 'm'
После выполнения SQL запроса получиться такая таблица:
id | last_name | first_name | birthday | sex |
---|---|---|---|---|
1 | Иванов | Дмитрий | 1996-12-11 | m |
3 | Шевченко | Тимур | 1998-04-27 | m |
6 | Иванов | Алексей | 1993-08-05 | m |
Посмотрим на SQL запрос. Сейчас блок WHERE содержит составное условие: возраст больше или равен 18 годам и пол равен m. Это простое логическое выражение, которому соответствуют все записи для которых оба условия верны. То есть у которых одновременно и возраст от 18 лет и sex = «m».
Кстати, о sex = «m». Так как мы используем равенство, в результируеющей таблице в колонке sex для всех записей у нас выводится m. Это не логично, ведь мы и так знаем, что выбираем мужчин, поэтому смысла в том, что мы эту информацию выводим в таблице нет. А значит можно удалить sex из запроса. Удалим и посмотрим на результат выполнения SQL-запроса:
SELECT last_name, first_name, birthday FROM users WHERE age >= 18 AND sex = 'm'
id | last_name | first_name | birthday |
---|---|---|---|
1 | Иванов | Дмитрий | 1996-12-11 |
3 | Шевченко | Тимур | 1998-04-27 |
6 | Иванов | Алексей | 1993-08-05 |
Строки выводятся те же, однако столбца sex больше нет.
Обратите внимание, что извлекаем мы столбцы last_name, first_name, birthday, а фильтрутем по age и sex. То есть не обязательно чтобы столбцы, которые мы получаем, совпадали со столбцами в условии. Главное, чтобы все они были в таблице.
Но вернемся к составным условиям.
Кроме операции AND (И), в условии можно применять OR (ИЛИ). Давайте заменим AND на OR, а также вернем колонки sex и age:
SELECT last_name, first_name, birthday, sex FROM users WHERE age >= 18 OR sex = 'm'
И посмотрим на результат:
id | last_name | first_name | birthday | sex | age |
---|---|---|---|---|---|
1 | Иванов | Дмитрий | 1996-12-11 | m | 20 |
2 | Лебедев | Олег | 2000-02-07 | m | 17 |
3 | Шевченко | Тимур | 1998-04-27 | m | 19 |
4 | Иванова | Светлана | 1993-08-06 | w | 23 |
5 | Ковалев | Олег | 2002-02-08 | m | 15 |
6 | Иванов | Алексей | 1993-08-05 | m | 23 |
7 | Процук | Алена | 1997-02-28 | w | 18 |
Получили всех мужчин, а также женщин, которым исполнилось 18 лет. В частности в SQL-таблице две женщины старше 18 лет и все мужчины, даже те, которым меньше 18. Всё это соответствует условию ИЛИ. ИЛИ возраст от 18 лет, ИЛИ мужской пол.
Теперь переключимся на таблицу products. В ней появилось поле country, которое содержит данные о стране производителе:
id | name | count | price | country |
---|---|---|---|---|
1 | Телевизор | 3 | 43200.00 | RU |
2 | Микроволновая печь | 4 | 3200.00 | RU |
3 | Холодильник | 3 | 12000.00 | UA |
4 | Роутер | 1 | 1340.00 | US |
5 | Компьютер | 0 | 26150.00 | US |
6 | Утюг | 6 | 3200.00 | BL |
7 | Пылесос | 11 | 4500.00 | UA |
Давайте выберем товары, произведененные в России, Белоруссии и на Украине. Напишем SQL-запрос:
SELECT * FROM products WHERE country = "RU" OR country = "UA" OR country = "BL"
После выполнения запроса мы получим следующую таблицу:
id | name | count | price | country |
---|---|---|---|---|
1 | Телевизор | 3 | 43200.00 | RU |
2 | Микроволновая печь | 4 | 3200.00 | RU |
3 | Холодильник | 3 | 12000.00 | UA |
6 | Утюг | 6 | 3200.00 | BL |
7 | Пылесос | 11 | 4500.00 | UA |
Разберем запрос: в блоке WHERE мы используем три условия, разделенные OR (или). Во всех трех условиях мы с помощью символа равенства сравниваем значение в столбце country с одной из стран: ИЛИ Россия, ИЛИ Украина, ИЛИ Белоруссия.
Если мы хотим получить товары еще каких-то стран, то нужно добавить еще условия OR. Это не очень удобно, так как запрос становится громоздиким.
Но его можно упростить. Кроме стандартных условий сравнения AND и OR в языке SQL есть условие принадлежности IN, которое в данном случае подходит лучше. Напишем после WHERE:
SELECT * FROM products WHERE country IN ("RU", "UA", "BL")
Конструкция получилась короче и понятней. И с помощью неё мы выбираем данные, в которых страна равна любом из значений перечисленных в скобках. После запуска запроса мы получим результат, аналогичный предыдущему.
Но давайте добавим к запросу еще одно условие. Например нам нужны не просто товары, а товары стоимостью до 10 000 рублей. Напишем:
SELECT * FROM products WHERE country IN ("RU", "UK", "BL") AND price < 10000
И посмотрим результат:
id | name | count | price | country |
---|---|---|---|---|
2 | Микроволновая печь | 4 | 3200.00 | RU |
6 | Утюг | 6 | 3200.00 | BL |
7 | Пылесос | 11 | 4500.00 | UA |
Получили новую таблицу с тремя записями, которые удовлетовряют новому условию. И в этом условии мы совместили AND и IN. То есть в SQL-запросах можно совмещать логические операции AND и OR с оператором IN. Что делает их очень гибкими.
Теперь давай попробуем выбрать товары, стоимостью от 10000 до 20000.
Условие с country уберем и напишем:
SELECT * FROM products WHERE price >= 10000 AND price
В результате получается такая таблица:
id | name | count | price | country |
---|---|---|---|---|
3 | Холодильник | 3 | 12000.00 | UA |
Выполним — получили 1 товар в этом ценовом интервале. Рассмотрим на запрос. Как видите в этой конструкции мы снова написали двойное условие по одному полю — price. И с одной строны всё логично и понятно, а с другой стороны эту конструкцию также можно упростить.
SELECT * FROM products WHERE price BETWEEN 10000 AND 20000
Теперь запрос звучит так: ВЫБРАТЬ все столбцы из таблицы products, в которых цена между 10000 и 20000. Звучит более чем понятно.
После запуска мы получим всё тот же один товар.
Вообще AND, OR, IN и BETWEEN — это основные конструкции для построения условий в SQL запросах и используются они в блоке WHERE. Вы можете применять их как по одиночке, так комбинируя в самых разлчных вариантах.
Следующий урок
Урок 3. Порядок AND и OR
Вы узнаете о приоритете AND и OR, а также с ошибками, которые возникают у новичков в SQL-запросах с несколькими условиями.
Полный курс с практикой
- 57 уроков
- 261 задание
- Сертификат
- Поддержка преподавателя
- Доступ к курсу навсегда
- Можно в рассрочку