MySQL start: различия между версиями
(→Запуск) |
|||
Строка 125: | Строка 125: | ||
├ ввести данные соответственно типам: insert into ''имя таблицы'' values (''значение записи в соответствии с типом'', ''значение записи в соответствии с типом''); | ├ ввести данные соответственно типам: insert into ''имя таблицы'' values (''значение записи в соответствии с типом'', ''значение записи в соответствии с типом''); | ||
├ вывести записи таблицы: describe ''имя таблицы''; | ├ вывести записи таблицы: describe ''имя таблицы''; | ||
├ вывести значения таблицы: select * from ''имя таблицы''; | |||
├ изменить все значения записи: update ''имя таблицы'' set ''запись'' = ''значение''; | |||
├ изменить определенные значения записи: update ''имя таблицы'' set ''запись'' = ''значение'' where '''(условие)'''; | |||
├ удаление всех записей: delete from ''имя таблицы'' | |||
├ удаление определенной записи: delete from ''имя таблицы'' where '''(условие)'''; | |||
└ | |||
</pre> | </pre> | ||
===Создание БД=== | ===Создание БД=== | ||
Строка 197: | Строка 202: | ||
===Обновление данных=== | ===Обновление данных=== | ||
====Все==== | |||
Изменить все значения записи: | |||
update authors set rating = 1; | |||
Вывести новые значения таблицы: | |||
<pre> | |||
mysql> select * from authors; | |||
+------+------------+------------------------+----------------------+------------------------------------------------+--------+ | |||
| id | name | lastname | middlename | books | rating | | |||
+------+------------+------------------------+----------------------+------------------------------------------------+--------+ | |||
| 1 | Лев | Толстой | Николаевич | Война и мир | 1 | | |||
| 2 | Федор | Достоевский | Михаилович | Преступление и наказание | 1 | | |||
| 0 | noname | noname | NULL | NULL | 1 | | |||
| 0 | noname | noname | NULL | NULL | 1 | | |||
| 0 | noname2 | noname2 | NULL | NULL | 1 | | |||
+------+------------+------------------------+----------------------+------------------------------------------------+--------+ | |||
5 rows in set (0,00 sec) | |||
</pre> | |||
====Определенные==== | |||
Изменить опр. значения записи: | |||
update authors set rating = 1 where '''(условие)'''; | |||
Например: | |||
update authors set rating = 5 where lastname='Толстой'; | |||
или | |||
update authors set rating = 4 where rating<5; | |||
или | |||
update authors set rating = 3, middlename='nomiddlename' where lastname='noname'; | |||
Вывести новые значения таблицы: | |||
<pre> | |||
mysql> select * from authors; | |||
+------+------------+------------------------+----------------------+------------------------------------------------+--------+ | |||
| id | name | lastname | middlename | books | rating | | |||
+------+------------+------------------------+----------------------+------------------------------------------------+--------+ | |||
| 1 | Лев | Толстой | Николаевич | Война и мир | 5 | | |||
| 2 | Федор | Достоевский | Михаилович | Преступление и наказание | 4 | | |||
| 0 | noname | noname | nomiddlename | NULL | 3 | | |||
| 0 | noname | noname | nomiddlename | NULL | 3 | | |||
| 0 | noname2 | noname2 | NULL | NULL | 4 | | |||
+------+------------+------------------------+----------------------+------------------------------------------------+--------+ | |||
5 rows in set (0,00 sec) | |||
</pre> | |||
===Удаление данных=== | |||
Удаление определенной записи: | |||
delete from authors where name='Лев'; | |||
<pre> | |||
mysql> select * from authors; | |||
+------+------------+------------------------+----------------------+------------------------------------------------+--------+ | |||
| id | name | lastname | middlename | books | rating | | |||
+------+------------+------------------------+----------------------+------------------------------------------------+--------+ | |||
| 2 | Федор | Достоевский | Михаилович | Преступление и наказание | 4 | | |||
| 0 | noname | noname | nomiddlename | NULL | 3 | | |||
| 0 | noname | noname | nomiddlename | NULL | 3 | | |||
| 0 | noname2 | noname2 | NULL | NULL | 4 | | |||
+------+------------+------------------------+----------------------+------------------------------------------------+--------+ | |||
4 rows in set (0,00 sec) | |||
</pre> | |||
Удаление определенной записи с логическим условием: | |||
delete from authors where rating=3 AND name='noname'; | |||
<pre> | |||
mysql> select * from authors; | |||
+------+------------+------------------------+----------------------+------------------------------------------------+--------+ | |||
| id | name | lastname | middlename | books | rating | | |||
+------+------------+------------------------+----------------------+------------------------------------------------+--------+ | |||
| 2 | Федор | Достоевский | Михаилович | Преступление и наказание | 4 | | |||
| 0 | noname2 | noname2 | NULL | NULL | 4 | | |||
+------+------------+------------------------+----------------------+------------------------------------------------+--------+ | |||
2 rows in set (0,00 sec) | |||
</pre> | |||
Удаление всей таблицы: | |||
delete from authors; | |||
<pre> | |||
mysql> select * from authors; | |||
Empty set (0,00 sec) | |||
</pre> | |||
{{Category navigation|title=Начинающему системному администратору|category=Начинающему системному администратору|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=Начинающему системному администратору|category=Начинающему системному администратору|sortkey={{SUBPAGENAME}}}} | ||
{{Category navigation|title=MySQL|category=MySQL|sortkey={{SUBPAGENAME}}}} | {{Category navigation|title=MySQL|category=MySQL|sortkey={{SUBPAGENAME}}}} |
Версия от 19:47, 19 октября 2022
Теория
Виды баз данных
- Реляционные - (SQL) — база, где данные хранятся в формате таблиц, они строго структурированы и связаны друг с другом.
В них, обычно, планируются несерьезные, неглобальные изменения. Могут использовать сложные запросы и набор отношений.
- Нереляционные (NoSQL) — хранит данные без четких связей друг с другом и четкой структуры.
Могут/ не могут иметь отношения, не имеют четкой структуры. Меняются в процессе.
Структура
БД └─СУБД └─пользователь
Между базой данных и пользователем используется СУБД - система управления базами данных - ПО обеспечивающее взаимодействие пользователя и БД.
Реляционная БД
Состоит из:
- сущность (таблица) - тип объектов, хранящихся в БД
- поле - часть таблицы, за которой закреплен определенный тип данных. (содержит название и описание)
- запись - строка таблицы (поле) БД, содержащая набор значений и свойств размещенный в полях.
- поле - часть таблицы, за которой закреплен определенный тип данных. (содержит название и описание)
БД ├───таблица │ ├───поле │ │ └запись │ ├───поле │ │ └запись │ └───поле │ └запись ├───таблица │ ├───поле │ │ └запись │ ├───поле │ │ └запись │ └───поле │ └запись └───таблица ├───поле │ └запись ├───поле │ └запись └───поле └запись
БД ├───автор │ ├───библиография │ ├───биография │ ├───дата рождения │ └───имя ├───книги ├───абонементы └───сотрудник
В данном примере:
- БД - база данных;
- автор, книги, абонементы, сотрудник - таблицы;
- библиография, биография, дата рождения, имя - поля.
Типы данных
строковые
- char - строка фиксированной длины
- пример char(20)
- максимум 20 символов
- при меньшем количестве переменная заполняется пробелами
- больше 20 заполнить нельзя
- пример char(20)
- varchar - строка переменной длины
- пример varchar(20)
- будет записано 10 символов
- в памяти будет хранится 10 символов и 1 говорящий о кол-ве используемых символов
- tiny - текст до 255 байт
- text - текст до 65 кб
числовые
- целые
tinyint | 1 byte -128 to 127 0 to 255 smallint | 2 bytes -32768 to 32767 0 to 65535 mediumint | 3 bytes -8388608 to 8388607 0 to 16777215 int/integer | 4 bytes -2147483648 to 2147483647 0 to 4294967295 bigint | 8 bytes -9223372036854775808 to 9223372036854775807 0 to 18446744073709551615
- дробные (указывается в скобках (всего, точность))
- decimal(3,2) => (xxx,yy) => -999,99 - 999,99
- float(a,b)
- double(a,b)
Практика
Установка MySQL
Согласно MySQL:
$ su - # apt-get install MySQL-server # service mysqld enable # service mysqld start
Shell СУБД
Запуск
$ su - # mysql -u root -p mysql>
Создание/удаление
- Вывести список БД:
show databases;
- Создать БД:
create database name; create database if not exists name;
- Удалить БД:
drop database name; drop database if exists name;
Работа с сущностями
База данных ├подключиться к базе данных: use ''name''; ├отобразить список баз данных: show databases; ├создать базу данных: create database ''name''; или create database if not exists ''name''; ├удалить базу данных: drop database ''name''; или drop database if exists ''name''; └── Сущность ├ вывести список сущностей (таблиц) (из-под подключенной БД): show tables; ├ создать сущность (таблицу) (из-под подключенной БД): create table ''name''(''запись'' ''тип'', ''запись'' ''тип''); ├ удалить сущность (таблицу) (из-под подключенной БД): drop table ''name''; └── Записи ├ ввести данные соответственно типам: insert into ''имя таблицы'' values (''значение записи в соответствии с типом'', ''значение записи в соответствии с типом''); ├ вывести записи таблицы: describe ''имя таблицы''; ├ вывести значения таблицы: select * from ''имя таблицы''; ├ изменить все значения записи: update ''имя таблицы'' set ''запись'' = ''значение''; ├ изменить определенные значения записи: update ''имя таблицы'' set ''запись'' = ''значение'' where '''(условие)'''; ├ удаление всех записей: delete from ''имя таблицы'' ├ удаление определенной записи: delete from ''имя таблицы'' where '''(условие)'''; └
Создание БД
- смотрим, что у нас нет никаких БД
- создаем БД test
- подключаемся к ней.
>show databases; >create database test; >use test;
- Создаем таблицу "авторы"
>create table authors (id int, name varchar(30), lastname varchar(30), middlename varchar(30), books text, rating tinytext);
ИЛИ:
mysql> create table authors( -> id int, -> name varchar(30), -> lastname varchar(30), -> middlename varchar(30), -> books text, -> rating tinytext);
- смотрим список таблиц и выводим содержимое таблицы
>show tables; >describe authors;
Ввод данных
Смотрим содержимое таблицы:
mysql> describe authors; +------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+-------+ | id | int | YES | | NULL | | | name | varchar(30) | YES | | NULL | | | lastname | varchar(30) | YES | | NULL | | | middlename | varchar(30) | YES | | NULL | | | books | text | YES | | NULL | | | rating | tinytext | YES | | NULL | | +------------+-------------+------+-----+---------+-------+ 6 rows in set (0,00 sec)
По типам данных вводим данные:
> insert into authors values (1, 'Лев', 'Толстой', 'Николаевич', 'Война и мир', '5'); > insert into authors values (2, 'Федор', 'Достоевский', 'Михаилович', 'Преступление и наказание', '4');
Так же, если не нужно заполнять все данные, можно это сделать выборочно:
> insert into authors(name, lastname, rating) values('noname','noname',3);
и множественно:
> insert into authors(name, lastname, rating) values('noname','noname',3), ('noname2', 'noname2',2);
Вывести новые значения таблицы:
mysql> select * from authors; +------+------------+------------------------+----------------------+------------------------------------------------+--------+ | id | name | lastname | middlename | books | rating | +------+------------+------------------------+----------------------+------------------------------------------------+--------+ | 1 | Лев | Толстой | Николаевич | Война и мир | 5 | | 2 | Федор | Достоевский | Михаилович | Преступление и наказание | 3 | | NULL | noname | noname | NULL | NULL | 3 | | NULL | noname | noname | NULL | NULL | 3 | | NULL | noname2 | noname2 | NULL | NULL | 2 | +------+------------+------------------------+----------------------+------------------------------------------------+--------+ 5 rows in set (0,00 sec)
Обновление данных
Все
Изменить все значения записи:
update authors set rating = 1;
Вывести новые значения таблицы:
mysql> select * from authors; +------+------------+------------------------+----------------------+------------------------------------------------+--------+ | id | name | lastname | middlename | books | rating | +------+------------+------------------------+----------------------+------------------------------------------------+--------+ | 1 | Лев | Толстой | Николаевич | Война и мир | 1 | | 2 | Федор | Достоевский | Михаилович | Преступление и наказание | 1 | | 0 | noname | noname | NULL | NULL | 1 | | 0 | noname | noname | NULL | NULL | 1 | | 0 | noname2 | noname2 | NULL | NULL | 1 | +------+------------+------------------------+----------------------+------------------------------------------------+--------+ 5 rows in set (0,00 sec)
Определенные
Изменить опр. значения записи:
update authors set rating = 1 where (условие);
Например:
update authors set rating = 5 where lastname='Толстой';
или
update authors set rating = 4 where rating<5;
или
update authors set rating = 3, middlename='nomiddlename' where lastname='noname';
Вывести новые значения таблицы:
mysql> select * from authors; +------+------------+------------------------+----------------------+------------------------------------------------+--------+ | id | name | lastname | middlename | books | rating | +------+------------+------------------------+----------------------+------------------------------------------------+--------+ | 1 | Лев | Толстой | Николаевич | Война и мир | 5 | | 2 | Федор | Достоевский | Михаилович | Преступление и наказание | 4 | | 0 | noname | noname | nomiddlename | NULL | 3 | | 0 | noname | noname | nomiddlename | NULL | 3 | | 0 | noname2 | noname2 | NULL | NULL | 4 | +------+------------+------------------------+----------------------+------------------------------------------------+--------+ 5 rows in set (0,00 sec)
Удаление данных
Удаление определенной записи:
delete from authors where name='Лев';
mysql> select * from authors; +------+------------+------------------------+----------------------+------------------------------------------------+--------+ | id | name | lastname | middlename | books | rating | +------+------------+------------------------+----------------------+------------------------------------------------+--------+ | 2 | Федор | Достоевский | Михаилович | Преступление и наказание | 4 | | 0 | noname | noname | nomiddlename | NULL | 3 | | 0 | noname | noname | nomiddlename | NULL | 3 | | 0 | noname2 | noname2 | NULL | NULL | 4 | +------+------------+------------------------+----------------------+------------------------------------------------+--------+ 4 rows in set (0,00 sec)
Удаление определенной записи с логическим условием:
delete from authors where rating=3 AND name='noname';
mysql> select * from authors; +------+------------+------------------------+----------------------+------------------------------------------------+--------+ | id | name | lastname | middlename | books | rating | +------+------------+------------------------+----------------------+------------------------------------------------+--------+ | 2 | Федор | Достоевский | Михаилович | Преступление и наказание | 4 | | 0 | noname2 | noname2 | NULL | NULL | 4 | +------+------------+------------------------+----------------------+------------------------------------------------+--------+ 2 rows in set (0,00 sec)
Удаление всей таблицы:
delete from authors;
mysql> select * from authors; Empty set (0,00 sec)