Mysql как создать бд

от admin

Как создать базу данных в MySQL

В создании этой статьи участвовала наша опытная команда редакторов и исследователей, которые проверили ее на точность и полноту.

Команда контент-менеджеров wikiHow тщательно следит за работой редакторов, чтобы гарантировать соответствие каждой статьи нашим высоким стандартам качества.

Количество просмотров этой статьи: 143 155.

MySQL может быть пугающей программой. Все команды должны быть введены через командную строку; нет никакого удобного интерфейса. Поэтому, знание того, как создать базу данных и манипулировать ей, может сохранить много времени и нервов. Следуйте инструкциям, чтобы создать базу данных американских штатов и их населения.

What is the ‘Database’ and ‘ Table’?

‘Database’ is the place where you save the information, and the ‘Table’ is where you can actually organize the information.
According to my teacher, you can think of database as your room and the table is like your wardrobe. if you try to put all your cloths in the room without organizing, the room would get so messy, that’s the when you need a wardrobe, so you can organize the cloths by its type or use. In MySQL, cloths will be the information!

1. Create and show database

First, let’s see what kind of database you already have. When you type
show databases; in MySQL, you will see this.

means, I already have 3 databases(database1, database2, database3) here.

Now let’s create a new database. Let’s name our database as ‘kim’. This time, you type create database kim;

Then again, type show databases;

Now we have our new database ‘kim’ in your databases.

2. Create Table & desc

I am going to make a table in the database named kim. So we have to type
use databaseName; and to see if there’s any column type show tables;

There’s nothing so you see empty.

So let’s create one. I am going to put id, name, phone, age in my table, and name my table ‘student’.

Next to the columns you’re seeing ‘varchar’ and ‘int’.
Varchar means the data type of its column is letters. And the numbers in the next to the varchar means it’s maximum length. So there’s id varchar(8) , It means if you put more than 8 letters in the id, there will be an error.
Int means the data type of its column is number. But as you can see phone column is also set with varchar. Isn’t the phone ‘number’ is number?
Why? It’s easy if you think int as the numbers that you can calculate. We are definitely not gonna subtract the phone numbers, so that’s why we use varchar here.

To see the result of what we’ve done, put desc databaseName.tableName;

There, we made these database and table very simply.

I posted ‘how to insert or select data and the where clause’, check out through the following link.

Вводная

Ознакомиться с возможностями СУБД MySQL и создать с его помощью базу данных, набор таблиц в ней и заполнить таблицы данными для последующей работы.

Изучить набор команд языка SQL, связанный с созданием базы данных, созданием, модификацией структуры таблиц и их удалением, вставкой, модификацией и удалением записей таблиц.

Содержание работы и методические указания к ее выполнению

Команды

  • create database DB_name создание базы данных
  • Use database выбор существующей базы данных
  • close database закрытие файлов текущей базы данных
  • drop database удаление базы данных
  • create table создание таблицы базы данных
  • alter table модификация структуры базы данных
  • drop table удаление таблицы базы данных
  • insert добавление одной или нескольких строк в таблицу
  • delete удаление одной или нескольких строк из таблицы
  • update модификация одной или нескольких строк таблицы
  • LOAD DATA INFILE загрузка данных в таблицы из файла

Создать базу данных.

Создание базы данных в MySQL производится с помощью утилиты mysqladmin. Изначально существует только БД mysql для администратора и БД test, в которую может войти любой пользователь и которая по умолчанию пуста. Приведенный ниже пример иллюстрирует создание базы данных.

Где data_name – имя создаваемой БД. Проверить, что БД создана можно ранее рассмотренной командой Show databases или утилитой mysqlshow.
По умолчанию, root имеет доступ ко всем базам данных и таблицам. Перейти в созданную базу данных можно, используя команду mysql Use database. Или, находясь в другой базе данных, например в mysql ввести команду: Создать базу данных можно непосредственно находясь в клиентском приложении MySQL, вводом команды: Где Base_name имя создаваемой базы данных. В созданной базе можно создавать таблицы и вводить информацию. Указанные операции можно выполнить, используя специализированное программное обеспечение, например MySQL-Front, Mysql Workbench или SQLyog.

  • Имя;
  • Хост;
  • Пароль;
  • Порт;
  • Имя БД (при необходимости).

После задания активной БД можно с помощью средств, предоставляемых программой изменять структуру БД, вводить данные, задавать ключевые поля. Помимо этого можно в специально отведенном окне напрямую вводить инструкции, используя синтаксис языка SQL.

Средствами языка SQL необходимо создать четыре таблицы в базе данных

  • поля номер_поставщика, номер_детали, номер_изделия во всех таблицах имеет тип INTEGER
  • поля рейтинг, вес и количество имеют целочисленный тип (integer);
  • поля фамилия, город (поставщика, детали или изделия), название (детали или изделия) имеют символьный тип и длину 20 (varchar(20));

Обеспечить ссылочную целостность вашей базы данных при помощи FOREIGN KEY

Ссылочная целостность—это состояние реляционной базы данных в которой записи не могут ссылаться на несуществующие записи в этой базе данных.

FOREIGN KEY—особый вид ограничения(constraint) MySQL, которое позволяет предотвратить нарушение ссылочной целостности при удалении/изменении информации в таблицах предках. Поддержка FOREIGN KEY поддерживается только для таблиц типа InnoDB

Пример нарушения ссылочной целостности

Пусть существуют две таблицы. Catalogs, являющаяся таблицей-предком, содержащие в себе упоминания о категориях товаров в интернет магазине и таблица products являющаяся таблицей-потомком, со всеми товарами этого магазина

При удалении категории из таблицы catalogs, в таблице products останутся товары которые не привязаны ни к одной из категорий, что может повлечь массу проблем для магазина.

Это явление называется нарушением ссылочной целостности

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

  • Добавление новой записи в таблице-потомке. Например добавление новой товарной позиции в таблицу products. Важно заметить что важную роль играет изменение именно таблицы-потомка, т.к изменение таблицы-предка (catalogs) не приведет к нарушению ссылочной целостности, т.к наличие пустой категории товаров допустимо
  • Обновление внешнего ключа в таблице-потомке. Эта ситуация похожа на первую и может произойти при изменении у товара ссылки на несуществующий раздел каталога, например товар с id_catalog равным 50
  • Удаление записи из таблицы-предка. Эта ситуация рассмотрена выше.
  • Изменение записи в таблице-предке. Эта ситуация отличается от рассмотренной выше тем что категория каталога не удаляется а принимает новый id

Обработка изменений при помощи FOREIGN KEY

Для того что бы контролировать ссылочную целостность в базе данных необходимо что бы таблицы были связаны при помощи конструкции FOREIGN KEY, которая имеет вид:

FOREIGN KEY — используется при создании/изменении таблиц-потомков таблицах. В рамках данной статьи FOREIGN KEY, следует использовать в таблице products. Данная конструкция позволяет задать в таблице-потомке внешний ключ с именем index_name на столбцах таблицы которые перечисляется в круглых скобках. Можно использовать один или несколько столбцов.

Ключевое слово REFERENCES задаёт таблицу-предка tbl_name на которую будет ссылаться внешний ключ. Поля таблицы-предка задаются в круглых скобках, один или несколько.

Необязательные конструкции ON DELETE и ON UPDATE, определяют поведение MySQL при удалении/обновлении записей из таблицы-предка.

Допустимые параметры для ключевых слов ON DELETE и ON UPDATE:

  • RESTRICT — Если в таблице-потомке существуют записи ссылающиеся на первичный ключ таблицы-предка то при удалении или обновлении записей с этим первичным ключом в таблице предке, будет возвращена ошибка. Ошибка будет возвращаться до тех пор пока не останется ни одной ссылки в таблице потомке. В MySQL данный параметр означает то же самое что и NO ACTION
  • CASCADE — При удалении/обновлении записей в таблице-предке, будут так же обновлены/удалены записи из таблицы-потомка с существующим первичным ключом
  • SET NULL — При удалении/обновлении записей в таблице-предке, записи из таблицы-потомка с существующим первичным ключом будут обновлены на NULL
  • NO ACTION — При удалении/обновлении записей в таблице-предке, записи из таблицы-потомка с существующим первичным ключом изменены не будут. В MySQL данный параметр означает то же самое что и RESTRICT
  • SET DEFAULT — Это действие зарезервировано но не обрабатывается в InnoDB

Добавление для таблицы products из примера статьи конструкции:

приведет к тому что изменения таблицы catalogs приведет к автоматическому изменению таблицы products.

Загрузка данных вручную

Загрузить данные из текстового файла

  • REPLACE В SQL запросе означает, что необходимо замещать записи с совпадающими значениями ключей.
  • INTO TABLE указывает имя таблицы, куда будут импортированы данные.
  • FIELDS TERMINATED BY ‘;’ указывает разделители полей, порядок полей должен быть таким же, как и в таблице назначения,
  • OPTIONALLY ENCLOSED BY ‘\»‘ указывает, что поля VARCHAR взяты в двойные кавычки
  • LINES TERMINATED BY ‘\r’ указывает разделители строк.

Программно

Данные для создания базы

Таблица поставщиков (shippers aka S)
Hомеp поставщика Фамилия Рейтинг Город
1 Смит 20 Лондон
2 Джонс 10 Париж
3 Блейк 30 Париж
4 Кларк 20 Лондон
5 Адамс 30 Афины
Таблица деталей (details aka P)
Номер детали Название Цвет Вес Город
1 Гайка Красный 12 Лондон
2 Болт Зеленый 17 Париж
3 Винт Голубой 17 Рим
4 Винт Красный 14 Лондон
5 Кулачок Голубой 12 Париж
6 Блюм Красный 19 Лондон
Таблица изделий (products aka J)
Номер изделия Название Город
1 Жесткий диск Париж
2 Перфоратор Рим
3 Считыватель Афины
4 Принтер Афины
5 Флоппи-диск Лондон
6 Терминал Осло
7 Лента Лондон
Читать:
Что делать если эжд не грузится
Таблица поставок (supplies aka SPJ)
Номер поставщика Номер детали Номер изделия Количество
1 1 1 200
1 1 4 700
2 3 1 400
2 3 2 200
2 3 3 200
2 3 4 500
2 3 5 600
2 3 6 400
2 3 7 800
2 5 2 100
3 3 1 200
3 4 2 500
4 6 3 300
4 6 7 300
5 2 2 200
5 2 4 100
5 5 5 500
5 5 7 100
5 6 2 200
5 1 4 100
5 3 4 200
5 4 4 800
5 5 4 400
5 6 4 500

Завершение работы

5. Выполнить модификацию структуры таблицы supplies (SPJ), добавив поле с датой поставки. Убедиться в успешности выполненных действий. При необходимости исправить ошибки (команда Alter table).

6. Уничтожить созданные таблицы, предварительно сохранив инструкции для восстановления структуры БД и информационного наполнения, используя средства работы СУБД. Убедиться в успешности выполненных действий.

7. Выполнить необходимые действия, написав и выполнив соответствующие запросы для модификации таблиц, чтобы структура соответствовала концептуальной модели учебной базы данных (рисунок ниже). Убедиться в успешности выполненных действий. При необходимости исправить ошибки.

Проверить результат заполнения таблиц, написав и выполнив простейший запрос:

При наличии ошибок выполнить корректировку, исправив либо удалив ошибочные строки таблиц

Mysql как создать бд

«Для каждого изделия, как определить дилер(ов) с самыми высокими ценами?»

В ANSI SQL (и MySQL 4.1) это легко делается при помощи вложенного запроса:

В MySQL до 4.1 такая задача выполняется в два этапа:

Следует получить список (изделие, максимальная цена)

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

Это легко делается с помощью временной таблицы:

Если вы не используете ключевое слово TEMPORARY , вам также следует поставить блокировку на таблицу tmp .

«А можно ли это сделать одним запросом?»

Да, но только используя совершенно неэффективный трюк, который я называю «Трюк MAX-CONCAT»:

Разумеется, последний пример можно сделать чуть эффективнее, если разбиение катенизированной строки делать на стороне клиента.

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

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

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

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

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

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

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

3.5.7. Поиск по двум ключам

MySQL пока не осуществляет оптимизации, если поиск производится по двум различным ключам, которые связаны при помощи оператора OR (поиск по одному ключу с различными частями OR оптимизируется хорошо):

Причина заключается в том, что у нас не было времени, чтобы придумать эффективный способ обработки этого случая (сравните: обработка оператора AND теперь работает хорошо)

В настоящее время данную проблему очень эффективно можно решить при помощи временной таблицы. Этот способ оптимизации также хорошо подходит, если вы запускаете очень сложные запросы, когда SQL-сервер делает оптимизацию в неправильном порядке.

Вышеупомянутый способ выполнения этого запроса — это фактически UNION (объединение) двух запросов. See Раздел 6.4.1.2, «Синтаксис оператора UNION ».

3.5.8. Подсчет посещений за день

В этом разделе представлен пример использования групповых побитовых функций для вычисления дней месяца, когда пользователь заходил на веб-сайт.

Этот запрос подсчитывает, сколько различных дней входит в данную комбинацию год/месяц, автоматически исключая дублирующиеся значения.

3.5.9. Использование атрибута AUTO_INCREMENT

Атрибут AUTO_INCREMENT может использоваться для генерации уникального идентификатора для новых строк:

Вы можете получить AUTO_INCREMENT ключ с помощью функции SQL LAST_INSERT_ID() или с помощью функции mysql_insert_id() интерфейса C.

Для многострочной вставки, LAST_INSERT_ID() / mysql_insert_id() на самом деле вернут AUTO_INCREMENT значение для первой вставленной записи. Это сделано для того, чтобы многострочные вставки можно было повторить на других серверах.

В таблицах MyISAM и BDB можно определить AUTO_INCREMENT для вторичного столбца составного ключа. В этом случае значение, генерируемое для автоинкрементного столбца, вычисляется как MAX(auto_increment_column)+1) WHERE prefix=given-prefix . Столбец с атрибутом AUTO_INCREMENT удобно использовать, когда данные нужно помещать в упорядоченные группы.

Обратите внимание, что в этом случае значение AUTO_INCREMENT будет использоваться повторно, если в какой-либо группе удаляется строка, содержащая наибольшее значение AUTO_INCREMENT .

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

В предыдущих разделах было показано, как использовать mysql в интерактивном режиме, вводя запросы и тут же просматривая результаты. Запускать mysql можно и в пакетном режиме. Для этого нужно собрать все команды в один файл и передать его на исполнение mysql :

Если вы работаете с mysql в ОС Windows, и некоторые из специальных символов, содержащихся в пакетном файле, могут вызвать проблемы, воспользуйтесь следующей командой:

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

Работая с mysql таким образом, вы, в сущности, создаете сценарий и затем исполняете его.

Если нужно продолжать обработку сценария даже при обнаружении в нем ошибок, воспользуйтесь параметром командной строки —force .

Зачем вообще нужны сценарии? Причин тому несколько:

При необходимости частого (ежедневного или хотя бы еженедельного) запуска одного и того же запроса сценарий позволяет избавиться от многократного набора этого запроса.

Можно создавать новые запросы, подобные уже существующим, просто копируя и затем изменяя файлы сценариев.

Пакетный режим может пригодиться и при разработке особенно длинных запросов, а именно — многострочных команд или больших последовательностей команд. В таком деле одна допущенная ошибка может привести к необходимости повторного набора большого количества текста. Зато при работе со сценарием легко исправить ошибку и запустить запрос на повторное исполнение.

Если ваш запрос выводит на экран много текста, его можно просмотреть постранично, не мучаясь догадками относительно убежавшей за край экрана части результатов:

Выводимые запросом результаты можно сохранить в файле для последующей обработки:

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

В некоторых случаях работать в интерактивном режиме просто не получается. И здесь без пакетного режима не обойтись.

По умолчанию при работе с mysql в пакетном режиме используется более сжатый формат вывода результатов, чем при интерактивной работе. В интерактивном режиме результаты работы запроса SELECT DISTINCT species FROM pet выглядят так:

А в пакетном — вот так:

Если вам нужно, чтобы в пакетном режиме программа выводила данные так же, как и в интерактивном, воспользуйтесь ключом mysql -t . Включить «эхо» исполняемых команд можно с помощью ключа mysql -vvv .

В командную строку mysql можно включать и сценарии — при помощи команды source :

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

В Analytikerna и Lentus мы проводили сбор и систематизацию данных в рамках крупного исследовательского проекта. Этот проект разрабатывается совместно Институтом экологической медицины Karolinska Institutet, Стокгольм и отделением клинических исследований в области старения и психологии университета Южной Калифорнии.

В проекте предусмотрен этап опросов, на котором происходит опрос по телефону всех проживающих в Швеции близнецов старше 65 лет. Близнецы, отвечающие критериям отбора, переходят на следующий этап. На этом этапе желающих участвовать в проекте близнецов посещает врач с медсестрой. Проводятся физические и нейропсихологические исследования, лабораторные анализы, неврологическое обследование, оценка психологического состояния, а также собираются данные по истории семьи. Кроме того, осуществляется сбор информации о медицинских и экологических факторах риска.

Дополнительную информацию о проекте вы можете получить по адресу: http://www.imm.ki.se/TWIN/TWINUKW.HTM

На поздних этапах администрирование проекта осуществляется с помощью web-интерфейса, написанного на Perl и MySQL .

Каждую ночь собранные во время интервью данные заносятся в базу данных MySQL.

3.7.1. Поиск нераспределенных близнецов

Этот запрос определяет, которые из близнецов переходят во второй этап проекта:

Дадим к этому запросу некоторые пояснения:

CONCAT(p1.id, p1.tvab) + 0 AS tvid

Сортируем по взаимосвязи id и tvab в числовом порядке. Прибавление нуля к результату заставляет MySQL обращаться с результатом как с числом.

Определяет пару близнецов. Является ключевым полем всех таблиц.

Определяет близнеца в паре. Принимает значение 1 или 2.

Отрицание tvab . Если значение tvab равно 1, значение этого поля — 2, и наоборот. Данное поле облегчает MySQL задачу оптимизации запроса и экономит время ввода данных.

Этот запрос иллюстрирует, помимо всего прочего, сравнение значений одной таблицы с помощью команды JOIN (p1 и p2) . В этом примере таким образом проверяется, не умер ли один из близнецов до достижения им 65-летнего возраста. Если так и произошло, строка не попадает в список возвращаемых.

Все вышеприведенные поля имеются во всех таблицах, в которых хранится относящаяся к близнецам информация. Ключевыми полями для ускорения работы запросов назначены id,tvab (во всех таблицах), а также id,ptvab (person_data) .

На нашем рабочем компьютере (200МГц UltraSPARC) этот запрос возвращает 150-200 строк, и его выполнение занимает менее секунды.

Текущее количество строк в таблицах, использовавшихся выше:

Таблица Строки
person_data 71074
lentus 5291
twin_project 5286
twin_data 2012
informant_data 663
harmony 381
postal_groups 100

3.7.2. Вывод таблицы состояний пар близнецов

Каждый опрос оканчивается кодом состояния, называющимся event («событие»). Приведенный здесь запрос выводит данные обо всех парах близнецов, объединенные по полю event . Таблица наглядно показывает, с каким количеством пар близнецов работа полностью завершена, а в каком количестве пар работа с одним близнецом завершена, а с другим — нет и т.п.

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

Существуют программы, позволяющие проводить идентификацию пользователей с помощью базы данных MySQL, а также записывать журналы в таблицу MySQL.

Формат записи журналов Apache можно привести в легко понятную MySQL форму, введя в файл настроек Apache следующие строки:

Похожие статьи