Вернуться   Дизайнерский форум » ВЕБ-ПРОГРАММИРОВАНИЕ » HTML, CSS, JavaScript

MySQL - relationship...

Обсуждение темы MySQL - relationship... в разделе HTML, CSS, JavaScript, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Цитата: chaynik: Natural join - ето обычные INNER JOIN , т.е. тот пример который и я и я Junkers привели. Разница в том, ...


Закрытая тема
 
Опции темы
Старый 23.03.2005, 09:47   #11
Цитата:
chaynik:

Natural join - ето обычные INNER JOIN, т.е. тот пример который и я и я Junkers привели. Разница в том, что его пример называется "старым" стандартом и ето единственый join, который поддерживает SQL-92 где соединение уточняется (specified) в "WHERE clause" (не знаю как "clause" по русски).
Ну не совсем так... "Естественное(natural) соединение определяется в стандарте как эквисоединение двух таблиц, автоматически выполняемое по всем столбцам с одинаковыми именами." М.Грабер
Пример:
Код:
SELECT a.ddd, b.fff
  FROM table1 a NATURAL JOIN table2 b;
Связь осуществляется по полям с одинаковыми именами. Хотя это всего лишь договоренность...

Ну, а в specified явным образом указывается как д. происходить соединение. Другими словами связывание по where никто не отменял. А в стандарте просто определены операторы, облегчающие выполнение некоторых распространенных операций соединения (ON, USING, UNION JOIN). Связывание ч/з "on" предпочтительнее чем ч/з "where" для оптимизатора при построении плана запроса.

Так что приведенные вами запросы используют явное соединение. И связывание, которое привел Junkers вполне корректно.

Лысый добавил [date]1111561309[/date]:
Цитата:
(не знаю как "clause" по русски).
Я думаю - предложение.
 
Старый 23.03.2005, 09:47
Ссылки
Старый 24.03.2005, 10:02   #12
На mysql.net лежит дока к самой последней 5-й версии alpha, которая поддерживает и foreign key и вложенные запросы типа:
SELECT * FROM `tab` WHERE `item` IN (SELECT * FROM `another_tab` WHERE ...);

Проблема вся в том, что 5-я версия нигде не стоит, максимум - 4-я, которая ни того, ни другого не поддерживает.

Так что пользуйте товарищи PostgreSQL, там есть и то и другое!
 
Старый 24.03.2005, 10:36   #13
Цитата:
Alkeeper:
Проблема вся в том, что 5-я версия нигде не стоит, максимум - 4-я, которая ни того, ни другого не поддерживает.

Так что пользуйте товарищи PostgreSQL, там есть и то и другое!
Да, 5-ой пока не пахнет у провайдеров. У нас правда и PostgreSQL нет у местных провов...


Злая у тебя подпись...
 
Старый 24.03.2005, 14:33   #14
Цитата:
Alkeeper:
На mysql.net лежит дока к самой последней 5-й версии alpha, которая поддерживает и foreign key и вложенные запросы типа:
SELECT * FROM `tab` WHERE `item` IN (SELECT * FROM `another_tab` WHERE ...);

Проблема вся в том, что 5-я версия нигде не стоит, максимум - 4-я, которая ни того, ни другого не поддерживает.

Так что пользуйте товарищи PostgreSQL, там есть и то и другое!
Когда я подключаюсь к нашему MySQL серверу то выдается инфа, что установлена версия 4.0.18-Max

Так вот, когда добавил FK constraint с помошью вышеприведённого примера, то сервер никакой ошибки не выдал. Означает ли ето, что скрипт поддерживается?

Где можно разузнать побольше про PostgreSQL?
 
Старый 24.03.2005, 14:36   #15
Цитата:
chaynik:
Когда я подключаюсь к нашему MySQL серверу то выдается инфа, что установлена версия 4.0.18-Max

Так вот, когда добавил FK constraint с помошью вышеприведённого примера, то сервер никакой ошибки не выдал. Означает ли ето, что скрипт поддерживается?
А ты попробуй ввести не корректные данные, нарушь ограничение FK и все станет ясно...
 
Старый 24.03.2005, 14:41   #16
Цитата:
Лысый:
Так что приведенные вами запросы используют явное соединение. И связывание, которое привел Junkers вполне корректно.
Ну я же не сказал, что он не корректен.

Просто соединение в "WHERE" было стандартом в SQL-89, который позаимствовал и новый SQL-92 стандарт, поетому такое соединение иногда называется "старым" стандартом, хотя прекрасно поддерживается новым стандартом.
 
Старый 24.03.2005, 15:18   #17
http://www.postgresql.org/
На http://linux.ru/ кажется что-то было.

Вот еще:
http://phppgadmin.sourceforge.net/ - приблуда типа phpmyadmin
http://linux.shadrinsk.net/opennet/d...min/admin.html
http://www.hardline.ru/2/21/1126/
http://php.russofile.ru/pg_8_transactions.html
http://www.ru.postgresql.org/
 
Старый 24.03.2005, 15:25   #18
Цитата:
chaynik:
Ну я же не сказал, что он не корректен.

Просто соединение в "WHERE" было стандартом в SQL-89, который позаимствовал и новый SQL-92 стандарт, поетому такое соединение иногда называется "старым" стандартом, хотя прекрасно поддерживается новым стандартом.
Хорошо с оговоркой "иногда" я согласен...
 
Старый 18.05.2005, 22:44   #19
Цитата:
Alkeeper:
MySQL не поддерживает foreign_key

Цитата:
Лысый:

Цитата:
chaynik:

Когда я подключаюсь к нашему MySQL серверу то выдается инфа, что установлена версия 4.0.18-Max

Так вот, когда добавил FK constraint с помошью вышеприведённого примера, то сервер никакой ошибки не выдал. Означает ли ето, что скрипт поддерживается?
А ты попробуй ввести не корректные данные, нарушь ограничение FK и все станет ясно...
Короче, сбили с толку меня ети заявления. Ну не может быть чтобы MySQL неподдерживал Foreign Key, хотя я только начал знакомство с етой DBMS.

Короче вот, что наковырял в mysql.com:

Цитата:
1.7.5.5. Foreign Keys

In MySQL Server 3.23.44 and up, the InnoDB storage engine supports checking of foreign key constraints, including CASCADE, ON DELETE, and ON UPDATE. See Section 15.7.4, “FOREIGN KEY Constraints”.
Link:
http://dev.mysql.com/doc/mysql/en/ansi-diff-foreign-keys.html

Значит здесь идёт речь о версии 3.23.44 и выше. А у провайдеров какая стоит? Правильно 4-ая и выше.

На том же сайте ишем дальше:

Цитата:
15.7.4. FOREIGN KEY Constraints

Starting from MySQL 3.23.44, InnoDB features foreign key constraints.

The syntax of a foreign key constraint definition in InnoDB looks like this:

[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)
REFERENCES tbl_name (index_col_name, ...)
[ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
[ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]
УАУ, узнаём, что также поддерживается cascade update and delete. Ну прям SQL Server.

Остается выяснить, что же такое за зверь такой етот INNO_DB и как его создать:

Цитата:
CREATE TABLE parent(id INT NOT NULL,
PRIMARY KEY (id)
) TYPE=INNODB;
CREATE TABLE child(id INT, parent_id INT,
INDEX par_ind (parent_id),
FOREIGN KEY (parent_id) REFERENCES parent(id)
ON DELETE CASCADE
) TYPE=INNODB;
Вот и всё. Теперь создание Foreign Key constraints будет поддерживатся как и должно быть в любом уважающем себя DBMS.

ps. все цитаты взяты из оффициального сайта разработчиков MySQL
 
Старый 19.05.2005, 10:58   #20
А кто спорит с INNODB так и есть. Мы же тебе про умолчательный тип myisam говорили.
 
Старый 19.05.2005, 10:58
Закрытая тема




Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
mySQL iDeViL ASP, Perl, PHP и MySQL 8 31.01.2011 21:30
MySQL 74ivan74 Кальянная 0 16.10.2010 14:33
PHP + MySQL бан ip Tigran ASP, Perl, PHP и MySQL 2 11.06.2010 17:23
MySQL Razrushitel ASP, Perl, PHP и MySQL 3 18.09.2005 16:18
PHP и Mysql vision HTML, CSS, JavaScript 0 18.07.2003 08:59


Текущее время: 10:45. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум