Перейти к содержимому



Помогите разобрать запрос SQL

#1 Banderas

Banderas
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1
0

Отправлено 04 Декабрь 2011 - 00:59

Вот есть запрос, помогите обьяснить что как работает
create database bookmarks; // команда на создание БД с идентефикатором bookmarks
use bookmarks; // как я понял, команда, которая указывает что следующие запросы будуть для БД bookmarks


// создаем таблицу users (тут все понятно)
create table users (
username varchar(16) not null primary key,
passwd char(40) not null,
email varchar(100) not null
);


// создаем таблицу bookmark (тут пару вопросов)
create table bookmark (
username varchar(16) not null,
bm_URL varchar(255) not null,
index (username), // что это значи
index (bm_URL),
primary key (username, bm_URL) // задаем первичный ключ, но он должен быть по username, почему здесь есть bm_URL?
);

grant select, insert, update, delete // выставляем права (возможные запросы)
on bookmarks.* // как это понять (подробно)
to bm_user@localhost identified by 'password'; // создается пользователь bm_user с паролем password ???


После это мне нужно дать команду в командной строке
mysql -u root -p < bookmarks.sql
как я понял это команда читается так
1) обращаемся к файлу mysql
2) после -u пишем пользователя
3) после -p пишем пароль
4) пароль указан в файле, то < указывает что нужно открыть bookmarks.sql и считать оттуда???

Пожалуйста дайте ссылку или обьясните, интересно почитать.

 

 

  • 0


#2 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 04 Декабрь 2011 - 03:10

http://www.deepserver.ru/sql/index.htm
  • 0

#3 matroskin8

matroskin8
  • Пользователь PRO
  • 767 сообщений
  • Репутация: 143

Отправлено 04 Декабрь 2011 - 09:54

use bookmarks; // как я понял, команда, которая указывает что следующие запросы будуть для БД bookmarks

Правильно понял. Если говорить формальнее, то это выбор БД для работы, аналог функции mysql_select_db()

passwd char(40) not null

Для строк переменной длины лучше использовать тип VARCHAR

index (username), // что это значи

Это так называемое индексирование поля, т.е. создание индексов для указанного поля. Цель этого действия - облегчение серверу поиска по указанному полю. Если попытаться объяснить на доступном примере, то индексы можно сравнить с содержанием книги. Для того, чтобы найти конкретное место в книге, нам не надо перелистывать ее всю - достаточно в содержании найти нужное нам с номером страницы. Или, к примеру, в энциклопедии для того, чтобы найти слово "программирование", не нужно перелопачивать всю энциклопедию, а достаточно найти указатель "ПРО" и искать искомое слово в нем. В общем, индексируют поля, по которым чаще всего происходит выборка.
В случае с представленным запросом индексирование полей "username" и "bm_URL" лишено смысла, поскольку для данных полей устанавливается первичный ключ. Если для поля установлен PRIMARY KEY либо UNIQUE KEY, то сервер автоматом создает для данных полей индекс, поскольку:
1) "понимает", что выборка чаще всего будет происходить именно по этим полям;
2) поскольку эти поля становятся уникальными, то при добавлении каждой записи сервер должен проверить, а не было ли уже такого значения для поля "username", т.е. сделать своеобразную выборку.

grant select, insert, update, delete // выставляем права (возможные запросы)
on bookmarks.* // как это понять (подробно)
to bm_user@localhost identified by 'password'; // создается пользователь bm_user с паролем password ???

Тут просто - создаем пользователя bm_user с паролем password и соответствующими (ограниченными) правами для БД.

mysql -u root -p < bookmarks.sql

Ну а это соединение с сервером MySQL из консоли:
1) -u (user) - имя пользователя;
2) -p (password) - пароль

4) пароль указан в файле, то < указывает что нужно открыть bookmarks.sql и считать оттуда???

Вот с таким не сталкивался :rolleyes:... надо посмотреть что в указанном файле.
  • 0


#4 Banderas

Banderas
    Topic Starter
  • Пользователь
  • 1 168 сообщений
  • Репутация: 1

Отправлено 04 Декабрь 2011 - 10:01

2*matroskin8* большое спасибо!!!
В указаном файле SQL запрос для создание БД bookmarks (что выше)
  • 0



Оформление форума – IPBSkins.ru