Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / MySQL / Учебное пособие по MySQL /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Примеры стандартных запросов - Программирование от RIN.RU
Примеры стандартных запросов



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


В MySQL для хранения результатов, чтобы не держать их во временных переменных на клиенте, можно применять пользовательские переменные (see section 6.1.4 Переменные пользователя).


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


mysql> SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;
mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price;


+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+


Использование внешних ключей


В MySQL 3.23.44 и выше в таблицах InnoDB осуществляется проверка ограничений целостности внешних ключей (обратитесь к разделам section 7.5 Таблицы InnoDB и Внешние ключи).


Фактически для соединения двух таблиц внешние ключи не нужны.


Единственное, что MySQL в настоящее время не осуществляет (в типах таблиц, отличных от InnoDB), это проверку (CHECK) что ключи, которые вы используете, действительно существуют в таблице(ах) на которые вы ссылаетесь, и не удаляет автоматически записи из таблиц с определением внешних ключей. Если же ключи используются обычным образом, все будет работать просто чудесно:


CREATE TABLE person (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
name CHAR(60) NOT NULL,
PRIMARY KEY (id)
);


CREATE TABLE shirt (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
style ENUM("t-shirt", "polo", "dress") NOT NULL,
color ENUM("red", "blue", "orange", "white", "black") NOT NULL,
owner SMALLINT UNSIGNED NOT NULL REFERENCES persons,
PRIMARY KEY (id)
);


INSERT INTO person VALUES (NULL, "Antonio Paz");


INSERT INTO shirt VALUES
(NULL, "polo", "blue", LAST_INSERT_ID()),
(NULL, "dress", "white", LAST_INSERT_ID()),
(NULL, "t-shirt", "blue", LAST_INSERT_ID());


INSERT INTO person VALUES (NULL, "Lilliana Angelovska");


INSERT INTO shirt VALUES
(NULL, "dress", "orange", LAST_INSERT_ID()),
(NULL, "polo", "red", LAST_INSERT_ID()),
(NULL, "dress", "blue", LAST_INSERT_ID()),
(NULL, "t-shirt", "white", LAST_INSERT_ID());


SELECT * FROM person;


+----+---------------------+
| id | name |
+----+---------------------+
| 1 | Antonio Paz |
| 2 | Lilliana Angelovska |
+----+---------------------+


SELECT * FROM shirt;


+----+---------+--------+-------+
| id | style | color | owner |
+----+---------+--------+-------+
| 1 | polo | blue | 1 |
| 2 | dress | white | 1 |
| 3 | t-shirt | blue | 1 |
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
| 7 | t-shirt | white | 2 |
+----+---------+--------+-------+


SELECT s.* FROM person p, shirt s
WHERE p.name LIKE "Lilliana%"
AND s.owner = p.id
AND s.color <> "white";




+----+-------+--------+-------+
| id | style | color | owner |
+----+-------+--------+-------+
| 4 | dress | orange | 2 |
| 5 | polo | red | 2 |
| 6 | dress | blue | 2 |
+----+-------+--------+-------+




<<<  НазадВперед  >>>
 1  2  3  4 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Подсоединение к серверу и отсоединение от него

Ввод запросов

Создание и использование базы данных

Получение информации о базах данных и таблицах

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

Запросы проекта "Близнецы" (Twin Project)

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

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь