· column_name - имена колонок (полей), которые будут присутствовать в создаваемой таблице.
· type - определяет тип создаваемой колонки.
Пример:
CREATE TABLE tel_numb(fio text, address text,
tel text)
not null - поле не может содержать неопределенное значение.
Например:
CREATE TABLE tel_numb(fio text NOT NULL, address text, tel text NOT NULL)
primary key - поле является первичным ключом.
Например:
CREATE TABLE tel_numb(fio text, address text,
tel text, PRIMARY KEY (fio))
auto_increment - при вставке новой записи поле получит уникальное значение.
Например:
CREATE TABLE tel_numb(fio text AUTO_INCREMENT, address text, tel text)
default - значение по умолчанию.
Например:
CREATE TABLE tel_numb(fio text, address text
DEFAULT 'Не указан', tel text)
Удаление таблицы
DROP TABLE table_name
· table_name - имя удаляемой таблицы.
DROP TABLE tel_numb
[ASC | DESC] [,... n]]
[UNION < выражение с оператором SELECT>]
Здесь:
ключевое слово ALL означает, что в результирующий набор строк включаются все строки, удовлетворяющие условиям запроса. Это значит, что в результирующий набор могут попасть одинаковые строки. И это нарушение принципов теории отношений (в отличие от реляционной алгебры, где по умолчанию предполагается отсутствие дубликатов в каждом результирующем отношении).
· Ключевое слово DISTINCT означает, что в результирующий набор включаются только раз личные строки, то есть дубликаты строк результата не включаются в набор.
· Символ * (звездочка) означает, что в результирующий набор включаются все столбцы из исходных таблиц запроса.
· В разделе FROM задается перечень исходных отношений (таблиц) запроса.
· В разделе WHERE задаются условия отбора строк результата или условия соединения кортежей исходных таблиц, подобно операции условного соединения в реляционной алгебре.
· В разделе GROUP BY задается список полей группировки.
· В разделе HAVING задаются предикаты-условия, накладываемые на каждую группу.
· В части ORDER BY задается список полей упорядочения результата, то есть список полей, который определяет порядок сортировки в результирующем отношении.
· Директива UNION используется для объединения выходных данных двух или более SQL-запросов в единое множество строк и столбцов.
===== СОЗДАНИЕ ЗАПРОСА =====
КОМАНДА SELECT
SELECT snum, sname, sity, comm
FROM Salespeople;
Вывод для этого запроса
snum sname city comm
------ ---------- ----------- -------
1001 Peel London 0.12
1002 Serres San Jose 0.13
1004 Motika London 0.11
1007 Rifkin Barcelona 0.15
1003 Axelrod New York 0.10
=====================================
SELECT *
FROM Salespeople;
ПЕРЕУПОРЯДОЧЕНИЕ СТОЛБЦА
SELECT odate, snum, onum, amt
FROM Orders;
УДАЛЕНИЕ ИЗБЫТОЧНЫХ ДАННЫХ
DISTINCT (ОТЛИЧИЕ)
SELECT snum
FROM Orders;
| snum |
| ------- |
| 1007 |
| 1001 |
| 1004 |
| 1002 |
| 1007 |
| 1003 |
| 1002 |
| 1001 |
| 1002 |
| 1001 |
SELECT DISTINCT snum
FROM Orders;
ALL вместо DISTINCT
Критерии для определения строк вывода
WHERE
SELECT sname, city
FROM Salespeople;
WHERE city = "LONDON";
=============================== |
sname city
------- ----------
Peel London
Motika London
============================
SELECT *
FROM Customers
WHERE rating = 100;
ИСПОЛЬЗОВАНИЕ РЕЛЯЦИОННЫХ И БУЛЕВЫХ ОПЕРАТОРОВ
==== РЕЛЯЦИОННЫЕ ОПЕРАТОРЫ ====
= Равный к
> Больше чем
< Меньше чем
>= Больше чем или равно
<= Меньше чем или равно
<> Не равно
<> Не равно
!= Не равно
!> Не больше
!< Не меньше
( ) Изменение приоритета операции
SELECT *
FROM Customers
WHERE rating > 200;
==== БУЛЕВЫ ОПЕРАТОРЫ ====
AND, OR, и NOT.
SELECT *
FROM Customers
WHERE city = " LONDON "
AND rating > 200;
SELECT *
FROM Customers
WHERE city = " LONDON "
OR NOT rating > 200;
Вывод запроса
cnum cname city rating snum
---- ------- -------- ------ ----
2001 Hoffman London 100 1001
2002 Giovanni Rome 200 1003
2006 Clemens London 100 1001
2007 Pereira Rome 100 1004
неправильным вводом оценки будет:
rating NOT > 200
SELECT *
FROM Customers
WHERE NOT city = " London "
OR rating > 200;
SELECT *
FROM Customers
WHERE NOT( city = " London "
OR rating > 200 );
SELECT *
FROM Orders
WHERE NOT((odate=10/03/2005
AND snum >1002) OR amt > 2000.00);
onum amt odate cnum snum
------ -------- ---------- ----- -----
3003 767.19 10/03/2005 2001 1001
3009 1713.23 10/04/2005 2002 1003
3007 75.75 10/04/2005 2004 1002
3010 1309.95 10/06/2005 2004 1002
ИСПОЛЬЗОВАНИЕ СПЕЦИАЛЬНЫХ ОПЕРАТОРОВ В УСЛОВИЯХ.
IN, BETWEEN, LIKE, IS NULL
========= ОПЕРАТОР IN ==========
SELECT *
FROM Salespeople
WHERE city = 'Barcelona'
OR city = 'London';
SELECT *
FROM Salespeople
WHERE city IN ( 'Barcelona', 'London' );
=============================
snum sname city comm
------ ---------- ----------- -------
1001 Peel London 0.12
1004 Motika London 0.11
1007 Rifkin Barcelona 0.15
=============================
SELECT *
FROM Customers
WHERE cnum IN ( 1001, 1007, 1004 );
============================
snum cname city rating snum
------ -------- ------ ---- ------
2001 Hoffman London 100 1001
2006 Clemens London 100 1001
2008 Cisneros Barcelona 300 1007
2007 Pereira Rome 100 1004
=============================
======= ОПЕРАТОР BETWEEN =======
SELECT *
FROM Salespeople
WHERE comm BETWEEN 0.10 AND 0.12;
=============================
snum sname city comm
------ ---------- ----------- -------
1001 Peel London 0.12
1004 Motika London 0.11
1003 Axelrod New York 0.10
=============================
SELECT *
FROM Salespeople
WHERE (comm BETWEEN 0.10, AND 0.12)
AND NOT comm IN (0.10, 0.12 );
Вывод для этого запроса
=============================
snum sname city comm
------ ---------- ----------- -------
1004 Motika London 0.11
=============================
SELECT *
FROM Customers
WHERE cname BETWEEN 'A' AND 'G';
Вывод для этого запроса
=============================
cnum cname city rating snum
------ -------- ------ ---- ------
2006 Clemens London 100 1001
2008 Cisneros New York 300 1007
=============================
Grass и Giovanni
======== ОПЕРАТОР LIKE =========
_ один одиночный символ
% последовательность любого числа символов
[НаборСимволов] - Любой одиночный символ, входящий в список НаборСимволов
[^НаборСимволов] - Любой одиночный символ, не входящий в список НаборСимволов
Результаты применения оператора Like для образцов различного вида.
Образец True False
"a%a" "aa", "aBa", "aBBBa" "aBC"
"%ab%" "abc", "AabB", "Xab" "aZb",
"bac"
"ab%" "abcdefg", "abc" "cab",
"aab"
"a_a" "aaa", "a3a", "aBa" "aBBBa"
"[a-z]" "f", "p", "j" "2", "&"
"[^a-z]" "9", "&", "%" "b", "a"
"[^0-9]" "A", "a", "&", "~" "0","1","9"
"a[^b-m]_" "An9", "az0", "a9m" "abc2",
"aj0r"
SELECT список_столбцов
FROM список_таблиц
WHERE имя_столбца [NOT] LIKE 'строка';
SELECT *
FROM Customers
WHERE cname LIKE 'G%';
================================
cnum cname city rating snum
------ -------- ------ ---- ------
2002 Giovanni Rome 200 1003
2004 Grass Berlin 300 1002
================================
Peal Peel
SELECT *
FROM Salespeople
WHERE sname LIKE 'P _ _ l %';
=================================
snum sname city comm
------ ---------- ----------- -------
1001 Peel London 0.12
==================================
Символ ESCAPE
SELECT *
FROM Salespeople
WHERE sname LIKE ' % /_ % 'ESCAPE'/';
SELECT *
FROM Salespeople
WHERE sname LIKE ' % /_ / / %'ESCAPE'/';
======= NULL ОПЕРАТОР =======
выражение типа
'city = NULL' или 'city IN (NULL)' будет неизвестно
оператор IS
используется с ключевым словом NULL для размещения значения NULL.
SELECT *
FROM Customers
WHERE city IS NULL;
ИСПОЛЬЗОВАНИЕ NOT СО СПЕЦИАЛЬНЫМИ ОПЕРАТОРАМИ
SELECT *
FROM Customers
WHERE city NOT NULL;
SELECT *
FROM Customers
WHERE NOT city IS NULL;
Мы можем также использовать
NOT с IN:
SELECT *
FROM Salespeople
WHERE city NOT IN ('London', 'Rome');
SELECT *
FROM Salespeople
WHERE NOT city IN ('London', 'Rome');
Таким же способом можно использовать NOT BETWEEN и NOT LIKE.