Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Короткий справочник по SQL, - самое необходимое 
:(
    Опции темы
Pakshin A. S.
Дата 1.11.2004, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Вот эти три странички очень мне помогли, когда я их распечатал и повесил на стенку. Для начинающих, конечно, но и для освежения памяти сойдёт. Кому надо, можете в Delphist's FAQ взять цветную версию.
http://forum.vingrad.ru/index.php?act=ST&f=2&t=15409


Вывод нужных полей 

Код
SELECT LastName, FirstName, Salary FROM employee 
 

Хотим вывести только имя, фамилию и оклад служащих 


Вывод всех полей из таблицы 

Код
SELECT * FROM employee 
* обозначает все поля 



Задание псевдонима таблице 

Код
SELECT * FROM employee emp 
where emp.salary>35000
 
Таблице employee в качестве псевдонима задано emp 
Выводим всех служащих с окладом свыше 35000 



Исключение дубликатов 
Код
SELECT DISTINCT Country FROM vendors 
Хотим узнать из каких стран поставляют продукцию 



Постановка условия 

Код
SELECT * FROM vendors 
Where Country='Canada'
 
Выводим поставщиков из Канады 


Использование логические операторов 

Код
SELECT * FROM vendors 
Where Country='U.S.A.' and Preferred='True' 
Выводим только предпочитаемых поставщиков из США. 
Когда используем оператор AND должны удовлетворяться оба условия 


Код
SELECT * FROM animals 
Where AREA='South America' or AREA='New Orleans'
 
Хотим видеть только тех животных, которые обитают в Южной Америке или Новом Орлеане Когда используем оператор OR должно удовлетворяться хотя бы одно условие 



Код
SELECT * FROM animals 
Where AREA='South America' and not Weight<7 


Выводим животных, обитающих в Южной Америке с весом не менее 7 кг 
Когда используем оператор AND NOT должно удовлетворяться первое условие и не должно - второе 



Код
SELECT * FROM animals 
Where Weight<5 or not Weight<10 

Выводим животных, с весом менее 5 кг или более 10 кг 
Когда используем оператор OR NOT должно либо удовлетворяться первое условие, либо не должно - второе 



Упорядочивание записей по возрастанию/убыванию/по номеру столбца 

Код
SELECT * FROM animals order by Weight 

Выводим животных в порядке увеличения веса: сначала самые лёгкие, в конце самые тяжелые 



Код
SELECT * FROM animals order by Weight desc 

...наоборот - по убыванию 



Код
SELECT * FROM animals order by 3
 
Упорядочить по третьему столбцу (отсчёт начинается с 1 ) 



Объединение нескольких запросов 

Код
SELECT * FROM animals 
Where Area='South America' 
UNION 
SELECT * FROM animals 
Where Area='New Orleans' 
Выводим тех животных, которые обитают в Южной Америке, а так же тех, которые обитают в Новом Орлеане Оператором UNION можем объединять несколько запросов 



Максимальное/минимальное значение поля 

Код
SELECT MAX(Salary) FROM employee 

Выводим максимальный оклад из таблицы служащих 



Код
SELECT MIN(Salary) FROM employee
 
Выводим минимальный оклад из таблицы служащих 



Сумма всех значений/среднее значение 
Код

SELECT SUM(Salary) FROM employee 

Так можем узнать сколько получают служащие некой фирмы вместе взятые 



Код
SELECT AVG(Salary) FROM employee
 
Так можем узнать среднестатистический оклад 


Количество записей в таблице/в поле 

Код
SELECT COUNT(*) FROM employee 

Находим количество записей в таблице - в данном случае количество служащих 


Код
SELECT COUNT(*) FROM clients
 
Where occupation='Programmer' 
Посчитали сколько человек увлекаются программированием 


Группировка записей 

Код
SELECT Continent, MAX(Area) FROM country group by Continent 

С помощью конструкции "group by" можем узнать какая страна занимает самую большую площадь для каждого континента 


Конструкция IN 

Код
select * from Customer 
Where Country IN ('US','Canada','Columbia')
 
Выводим покупателей из США, Канады и Колумбии 



Код
select * from Customer 
Where Country NOT IN ('US','Canada')
 
Выводим всех покупателей за исключением тех, кто проживает в США, Канаде 


Вывод пустых/непустых значений 

Код
select * from Customer 
Where State is NULL 
Выводит те записи, где не введено значение в поле State 


Код

select * from Customer 
Where State is NOT NULL
 
Выводит те записи, где введено значение в поле State 


Вывод значений приблизительно соответствующих нужным 

Код
select * from employee 
Where LastName like 'L%'
 
Выводим только тех служащих, у которых фамилия начинается на букву 'L'. Знак '%' - означает любые символы 



Код
select * from employee 
Where LastName like 'Nels_n' 

Например, мы не помним: как правильно пишется 'Nelson' или 'Nelsan', тогда нужно будет воспользоваться знаком подчёркивания, который означает любой символ 


Диапазон значений 

Код
select * from employee 
Where Salary BETWEEN 25000 AND 50000 

Можем вывести только тех, кто получает от 25000 до 50000 включительно 


ANY, SOME, ALL 

Код
SELECT * FROM orders.db 
where custno= ANY (select custno from customer.db where city = 'Largo'); 


или 

Код
SELECT * FROM orders.db 
where custno= SOME (select custno from customer.db where city = 'Largo'); 


или 

Код
SELECT * FROM orders.db 
where custno IN (select custno from customer.db where city = 'Largo'); 
Выводим заказы покупателей из города 'Largo' 


Код
SELECT * FROM clients 
where birth_date>All(select birth_date from clients where city='Los Altos')
 
Вывести тех клиентов, которые моложе всех из 'Los Altos' 


EXISTS 

Код
SELECT * FROM orders.db 
where custno= ANY (select custno from customer where city = 'Largo') 
and Exists(SELECT * FROM customer WHERE City='Largo')
 
Выводим заказы покупателей из города 'Largo' если вообще есть покупатели с этого города 


Использование параметров 

Код
SELECT * FROM clients 
where Last_Name=:LastNameParam 


Если мы хотим дать возможность пользователю самому указывать фамилию нужного ему клиента. мы вместо значения для поля фамилия указываем параметр. Параметры указываются после двоеточия. И получить доступ к ним можно по индексу из свойства Params компонента Query. Индексация начинается с нуля. Затем, например, по нажатию на кнопке напишем код: 

Код
Query1.Active:=false; 
Query1.Params[0].AsString:=Edit1.Text; 
Query1.Active:=true; 




Вывод дополнительного текста[использование выражений] 

Код
SELECT LastName, Salary/100, '$' FROM employee 


Если зарплата указана не в долларах, а какой-то другой валюте, курс которой равен 1 к 100, мы можем вывести данные в $, используя вышеуказанное выражение 


Использование нескольких таблиц 

Код
SELECT o.orderno,o.AmountPaid, c.Company FROM orders o, customer c 
where o.custno=c.custno and c.city='Largo' 
Выводим номер и сумму заказа из таблицы заказов и компанию сделавшую заказ из таблицы покупателей 


Вложенные подзапросы 

Код
SELECT * FROM employee 
where Salary=(select MAX(Salary) from employee)
 
Мы научились выводить максимальное значение, например, можем узнать максимальный оклад у служащих, но куда полезнее было бы узнать кто тот счастливчик. Именно здесь используется механизм вложенных подзапросов 


Взято с www.delphiworld.narod.ru 

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1301 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.