Открыть меню    

Запросы 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
        ('Иванов', 'Петров', 'Сидоров')

Комментарии к статье

аватарка пользователя
2015-05-03
Иван

Супер! Всё очень доходчиво , спасибо!

Добавить комментарий к сниппету