Это 22-й день моего участия в Gengwen Challenge, проверяйте подробности мероприятия: больше текстового задания
Вечный ученик, практик и активный собеседник, приверженный пути развития технологий, оригинальный блогер, занятый и иногда ленивый, и подросток, которому иногда скучно, а иногда и смешно.
Добро пожаловать в поиск WeChat »ИТ-путешествие Джейка"обрати внимание на!
Оригинальная ссылка:MySQL | Система баз данных MySQL (2) — основные операции операторов SQL
предисловие
В предыдущих статьях мы были знакомы с тем, как построить систему баз данных MySQL и войти в нее.Научите, как развернуть базу данных MySQL в среде Linux!«Затем, затем, в этой статье мы узнаем, как использовать базовые операции системы баз данных MySQL, что мы также будем использовать в нашей будущей работе.
1. Проверьте, какие библиотеки находятся на текущем сервере
показать оператор баз данных:Используется для просмотра того, какие библиотеки включены в текущую систему баз данных MySQL.
Инициализированная база данных MySQL по умолчанию имеет четыре библиотеки:
information_schema
mysql
performance_schema
test
(mysql库中包含了用户认证的相关表)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.01 sec)
Посмотреть, какие таблицы есть в используемой в данный момент библиотеке
оператор отображения таблиц:Используется для просмотра таблиц, содержащихся в текущей библиотеке.
Перед операцией вам необходимо использовать оператор use для переключения на используемую библиотеку.
Если вы хотите узнать, какие таблицы содержатся в библиотеке mysql, которую вы используете в данный момент, вы можете переключиться на целевую библиотеку mysql и выполнить оператор: show table; для просмотра таблиц в библиотеке mysql.
mysql> use mysql;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| user |
+---------------------------+
24 rows in set (0.00 sec)
Структура таблицы поиска
описать утверждение:Он используется для отображения структуры таблицы и информации о полях, составляющих таблицу.
Вам нужно указать «имя библиотеки, имя таблицы» в качестве параметров.При указании имени таблицы вам нужно использовать оператор использования, чтобы переключиться на библиотеку, которую вы хотите использовать.
При запросе структуры таблицы вы можете просмотреть структуру пользовательской таблицы в библиотеке mysql с помощью следующего оператора, а также выполнить оператор: описать mysql.user, чтобы просмотреть, структура вывода непротиворечива.
mysql> describe user;
+------------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
| plugin | char(64) | YES | | | |
| authentication_string | text | YES | | NULL | |
+------------------------+-----------------------------------+------+-----+---------+-------+
42 rows in set (0.00 sec)
Посмотреть текущую версию базы данных
select version(); оператор: используется для просмотра текущей версии базы данных mysql;
mysql> select version();
+------------+
| version() |
+------------+
| 5.5.22-log |
+------------+
1 row in set (0.02 sec)
Проверьте, в какой библиотеке вы сейчас находитесь
выберите базу данных(); заявление:Используется, чтобы увидеть, какая библиотека находится в данный момент;
mysql> select database();
+------------+
| database() |
+------------+
| mysql |
+------------+
1 row in set (0.00 sec)
Отображать в формате столбца
В базе данных MySQL выполните оператор SQL, за которым следует \G, чтобы распечатать результаты запроса в столбцах.
По умолчанию результаты запроса базы данных MySQL выводятся горизонтально.
Первая строка представляет заголовок столбца, а второй столбец — набор записей;
mysql> select * from db\G
*************************** 1. row ***************************
Host: %
Db: test
User:
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: N
Execute_priv: N
Event_priv: Y
Trigger_priv: Y
*************************** 2. row ***************************
Host: %
Db: test\_%
User:
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: N
Execute_priv: N
Event_priv: Y
Trigger_priv: Y
2 rows in set (0.00 sec)
2. Создайте библиотеку
оператор создания базы данных: используется для создания новой базы данных, вам необходимо указать имя новой базы данных в качестве параметра;
auth будет использоваться как имя этой новой библиотеки, которая не содержит таблиц.
mysql> create database auth;
Query OK, 1 row affected (0.45 sec)
В каталоге /usr/local/mysql/data только что созданной библиотеки будет автоматически сгенерирована папка с тем же именем, что и у вновь созданной библиотеки.
[root@localhost ~]# cd /usr/local/mysql/data
[root@localhost data]# ls
auth ib_logfile0 localhost.err mysql mysql-bin.000002 mysql-bin.000004 mysql.error.log test
ibdata1 ib_logfile1 localhost.pid mysql-bin.000001 mysql-bin.000003 mysql-bin.index performance_schema
3. Создайте таблицу
оператор создания таблицы: используется для создания новой таблицы в текущей библиотеке аутентификации, указывает имя таблицы данных в качестве параметра для создания новой таблицы и определяет поля, используемые для создания новой таблицы;
Перед созданием таблицы необходимо уточнить структуру таблицы, имя поля, тип и другую информацию, которую вы хотите создать.
Базовый синтаксис для создания таблиц
create table 表名 (字段1名称 类型,字段2名称 类型,......, PRIMARY KEY (主键名))
После создания таблицы пользователей используйте оператор default в части определения поля, чтобы установить символы пароля по умолчанию, и оператор primary, чтобы задать имя поля первичного ключа;
mysql> use auth;
Database changed
mysql> create table users (user_name char(16) not null, user_passwd char(48) default '', primary key (user_name));
Query OK, 0 rows affected (0.66 sec)
В-четвертых, удалите таблицы данных и базы данных
оператор drop table: используется для удаления таблицы библиотеки, в качестве параметров необходимо указать «имя библиотеки, имя таблицы»;
Чтобы указать параметр имени таблицы, сначала выполните оператор «use», чтобы переключиться на целевую библиотеку;
Выполните следующие действия, чтобы удалить таблицу пользователей в репозитории авторизации.
mysql> drop table auth.users;
Query OK, 0 rows affected (0.09 sec)
оператор drop database: используется для удаления указанной библиотеки, необходимо указать имя библиотеки в качестве параметра;
Выполните следующие действия, чтобы удалить библиотеку авторизации.
mysql> drop database auth;
Query OK, 0 rows affected (0.02 sec)
5. Записи данных в таблице управления
Создание библиотек и таблиц было представлено на предыдущих шагах, далее мы будем управлять данными в таблицах на основе библиотеки авторизации. (вставка, запрос, изменение и удаление записей в базе данных);
вставить данные
вставка в оператор: используется для вставки новых данных в целевую таблицу.
Базовый формат заявления
insert into 表名(字段 1 ,字段 2 ,···) values(字段 1 的值,字段 2 的值,···)
Следующая операция вставит запись в таблицу пользователей в библиотеке auth.user_name (имя пользователя): «jacktian» и соответствующий user_passwd (пароль): «666666».
Следует отметить, что значения, вставленные в values, должны соответствовать полям, указанным ранее.
mysql> use auth;
Database changed
mysql> show tables;
+----------------+
| Tables_in_auth |
+----------------+
| servers |
| users |
+----------------+
2 rows in set (0.00 sec)
mysql> INSERT INTO users(user_name,user_passwd) VALUES('jacktian', PASSWORD('666666'));
Query OK, 1 row affected (0.00 sec)
Проверить, правильно ли установлена структура таблицы;
mysql> describe users;
+-------------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+
| user_name | char(16) | NO | PRI | NULL | |
| user_passwd | char(48) | YES | | | |
+-------------+----------+------+-----+---------+-------+
2 rows in set (0.01 sec)
Вставить новую запись данных.Если эта запись полностью включает в себя значения всех полей таблицы, некоторые поля указанных полей во вставленной выписке могут быть опущены.
mysql> insert into users values ('jake' , password('888888'));
Query OK, 1 row affected (0.01 sec)
Просмотр данных
оператор выбора: используется для просмотра записей данных, которые соответствуют условиям в текущей указанной таблице;
Базовый формат заявления
select 字段名 1,字段名 2,··· from 表名 where 条件表达式
Если вы хотите запросить все поля, вы можете использовать подстановочный знак «*» для отображения всех записей данных, а условие where будет опущено. При выполнении следующих операций вы сможете просмотреть все данные в таблице пользователей в библиотеке авторизации, где строка user_passwd зашифрована, поэтому фактическое содержание пароля отображаться не будет.
mysql> select * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| jacktian | *B2B366CA5C4697F31D4C55D61F0B17E70E5664EC |
| jake | *DA28842831B3C40F4BC1D3C76CF9AD8CBFDAE1CB |
+-----------+-------------------------------------------+
2 rows in set (0.07 sec)
Когда вам нужно запросить данные в соответствии с указанными условиями, вы можете использовать условия для запроса. Например, вы хотите запросить только user_name (имя пользователя) в таблице пользователей в библиотеке авторизации: записи 'jacktian', отображаемые данные включают в себя: информацию о полях имени пользователя и пароля.
mysql> select user_name,user_passwd from auth.users where user_name='jacktian';
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| jacktian | *B2B366CA5C4697F31D4C55D61F0B17E70E5664EC |
+-----------+-------------------------------------------+
1 row in set (0.01 sec)
изменить данные
оператор обновления: используется для изменения и обновления данных в целевой таблице.
Базовый формат заявления
update 表名 set 字段名 1=字段值 1[,字段名 2=字段值 2] where 条件表达式
Измените запись с именем пользователя «jake» в таблице пользователей следующим образом, установите для пароля пустое значение и проверьте, обнаруживает ли запись, что пароль для имени пользователя jake был изменен на пустое значение.
mysql> update auth.users set user_passwd=password ('') where user_name = 'jake';
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| jacktian | *B2B366CA5C4697F31D4C55D61F0B17E70E5664EC |
| jake | |
+-----------+-------------------------------------------+
2 rows in set (0.00 sec)
Обычно в базе данных MySQL различная пользовательская информация, которую мы используем для доступа к базе данных, будет храниться в пользовательской таблице в библиотеке mysql, и данные в ней могут быть изменены напрямую.
mysql> use mysql;
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| user |
+---------------------------+
23 rows in set (0.06 sec)
В настоящее время мы можем установить пароль пользователя root базы данных на «666666». При повторном доступе к базе данных MySQL нам нужно использовать «mysql -u root -p» для доступа к системе базы данных MySQL, и этот пароль должен быть используется для аутентификации, иначе Вы не сможете войти в систему базы данных MySQL.
Следует отметить, что этот пароль пользователя базы данных может быть установлен более сложным для обеспечения безопасности данных;
mysql> update mysql.user set password=password ('666666') where user= 'root';
Query OK, 3 rows affected (0.00 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql> FLUSH PRIVILEGES; // 刷新用户授权信息
Если вы находитесь в терминале командной строки системы Linux, вы также можете использовать инструмент mysqladmin для установки пароля.
[root@localhost data]# mysqladmin -u root -p password '666666'
Enter password:
удалить данные
оператор удаления: используется для удаления указанных данных в таблице;
Базовый формат заявления
delete from 表名 where 条件表达式
Чтобы удалить данные, чье имя_пользователя равно «jake», в таблице пользователей библиотеки аутентификации, вы можете выполнить следующую инструкцию и проверить, обнаружило ли содержимое данных, что данные пользователя jake были удалены.
mysql> delete from auth.users where user_name = 'jake';
Query OK, 1 row affected (0.03 sec)
mysql> select * from auth.users;
+-----------+-------------------------------------------+
| user_name | user_passwd |
+-----------+-------------------------------------------+
| jacktian | *B2B366CA5C4697F31D4C55D61F0B17E70E5664EC |
+-----------+-------------------------------------------+
1 row in set (0.00 sec)
В системе баз данных MySQL нулевой пользователь для доступа к базе данных с локального компьютера добавляется по умолчанию. Следующие поля пользователя и пароля пусты. Для обеспечения безопасности базы данных этих пустых пользователей можно удалить напрямую. Условное выражение после where фильтрует пользователей, чье пользовательское поле пусто, и проверяет, были ли удалены данные пустого пользователя.
mysql> select user,host,password from mysql.user where user = '';
+------+-----------+----------+
| user | host | password |
+------+-----------+----------+
| | localhost | |
+------+-----------+----------+
1 row in set (0.00 sec)
mysql> delete from mysql.user where user = '';
Query OK, 1 row affected (0.04 sec)
mysql> select user,host,password from mysql.user where user = '';
Empty set (0.00 sec)
Рекомендуемое чтение
Научите, как развернуть базу данных MySQL в среде Linux!
Оригинальность непростая.Если вы считаете, что эта статья полезна для вас, ставьте лайк, комментируйте или пересылайте эту статью, потому что это будет моей мотивацией выпускать больше качественных статей, спасибо!
Кстати, друзья-копатели, не забудьте дать мне бесплатный подписчик! На случай, если ты заблудишься и не сможешь найти меня в следующий раз.
Увидимся в следующий раз!