Запросы SELECT, INSERT, UPDATE и DELETE в SQL
SQL язык регистр независимый, но операторы принято писать с большой буквы.
SQL
SELECT name, addr, city FROM teachers ORDER BY name
SELECT title FROM courses WHERE length > 30
SELECT * FROM courses WHERE length > 30 AND title LIKE 'Web%'
Оператор LIKE
позволяет подставить шаблон; знак процента (%
) означает, что далее может идти все что угодно.
Звездочку (*
) использовать не рекомендуется (допустимо использовать при тестировании и в учебных целях).
SELECT: oбъединение таблиц
id | name | code |
---|---|---|
1 | Сергей | Serg |
2 | Андрей | Andr |
id | tid | course |
---|---|---|
1 | 1 | PHP |
2 | 1 | HTML |
SQL
SELECT t.name, t.code, l.course
FROM teachers t
INNER JOIN lessons l ON t.id = l.tid
// есть две таблицы: teachers и lessons
// tid - это идентификатор учителя
// INNER JOIN - внешнее объединение
// ON - по какому критерию объединяем
// t и l - псевдонимы для имен таблиц
К полям можно обращаться по составному полю: имя_таблицы.наименование_поля
(teachers.id
). Также мы можем использовать псевдонимы для имен таблиц, в нашем случае t
и l
. Этим мы сокращаем написание кода.
name | code | course |
---|---|---|
Сергей | Serg | PHP |
Сергей | Serg | HTML |
SQL
SELECT t.name, t.code, l.course FROM teachers t
LEFT OUTER JOIN lessons l ON t.id = l.tid
// LEFT OUTER JOIN -
// еще один пример
SELECT c.author, c.title, c.pubyear, c.price, b.datetime, b.quantity
FROM catalog c
INNER JOIN basket b ON c.id = b.goodsid AND b.customer = '".session_id()."'
Здесь также выбираются совпадающие поля, затем выбирается строка, у которой нет соответствий, и для отсутствующих ячеек подставляется значение NULL
.
name | code | course |
---|---|---|
Сергей | Serg | PHP |
Сергей | Serg | HTML |
Андрей | Andr | NULL |
SQL
SELECT DISTINCT teachers.name FROM teachers INNER JOIN
(lessons INNER JOIN courses ON lessons.course = courses.id)
ON teachers.id = lessons.teacher WHERE courses.title LIKE
// DISTINCT - этим мы выбираем только ОТЛИЧАЮЩИЕСЯ элементы
Запросы INSERT и DELETE в SQL
SQL
INSERT INTO teachers VALUES (Null,'Петров','…',40)
INSERT INTO teachers (title, length) VALUES ('Петров', 40)
DELETE FROM lessons WHERE lessons.date = '2013-11-11'
В SQL строковые данные заключаются в ОДИНАРНЫЕ КАВЫЧКИ.
Запрос UPDATE в SQL
SQL
UPDATE teachers
SET
pay = pay * 2,
bonus = bonus * 10
WHERE name LIKE 'Иванов%'
OR name LIKE 'Петров%'
OR name LIKE 'Сидоров%'
UPDATE teachers
SET
pay = pay * 2,
bonus = bonus * 10
WHERE name IN
('Иванов', 'Петров', 'Сидоров')
Комментарии к статье
Супер! Всё очень доходчиво , спасибо!