MYSQL
1、登录mysql --- mysql命令登录数据库
语法:mysql -u 用户名 -p密码 -h 连接的数据库服务器的ip [-D]数据库名 -P 端口
# 登录本地的mysql
[root@localhost ~]# mysql -u root -p
Enter password:
mysql> select version(); -- 获取当前版本信息
+-----------+
| version() |
+-----------+
| 8.0.33 |
+-----------+
1 row in set (0.00 sec)
mysql> select database(); -- 查询当前数据库名
+------------+
| database() |
+------------+
| mysql |
+------------+
1 row in set (0.00 sec)
mysql> use sys; -- 使用sys数据库
Database changed
mysql> select user(); -- 返回当前用户名和主机名的组合
+-----------------+
| user() |
+-----------------+
| root@localhost |
+-----------------+
1 row in set (0.00 sec)
mysql> select current_user(); -- 获取当前用户身份
+-----------------------------------+
| current_user() |
+-----------------------------------+
| skip-grants user@skip-grants host |
+-----------------------------------+
1 row in set (0.00 sec)
2、sql语句基础
(1)简介:
SQL:结构化查询语言(Structured Query Language),在关系型数据库上执行数据操作、数据检索以及数据维护的标准语言。
<1> 作用
- 改变数据库的结构
- 更改系统的安全设置
- 增加用户对数据库或表的许可权限
- 在数据库中检索需要的信息
- 对数据库的信息进行更新
<2> 分类
SQL语句主要可以划分为以下几类:
DDL(Data Definition Language):数据定义语言,定义对数据库对象(库、表、列、索引)的操作。CREATE、DROP、ALTER、RENAME、 TRUNCATE等。
DML(Data Manipulation Language): 数据操作语言,定义对数据库记录的操作。INSERT、DELETE、UPDATE等。
DQL(Data Query Language)数据查询语言:SELECT语句。
DCL(Data Control Language): 数据控制语言,定义对数据库、表、字段、用户的访问权限和安全级别。GRANT、REVOKE等。
TCL(Transaction Control):事务控制。COMMIT、ROLLBACK、SAVEPOINT等。
注:可以使用help查看这些语句的帮助信息。
<3> 书写规范
- 在数据库系统中,SQL语句不区分大小写(建议用大写) 。
- 但字符串常量区分大小写。
- SQL语句可单行或多行书写,以“;”结尾。
- 关键词不能跨多行或简写。
- 用空格和缩进来提高语句的可读性。
<4> 注释
[1] 单行注释:"-- "
mysql> -- select user,host from mysql.user;
mysql> select user,host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)
mysql> select user,host from mysql.user where user='root'; -- 获取user字段为root的列
+------+-----------+
| user | host |
+------+-----------+
| root | localhost |
+------+-----------+
1 row in set (0.01 sec)
mysql> select user,host from mysql.user -- where user='root';
-> ;
-- mysql.user后面的都被注释了,所以在下一行得添加;
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)
[2] 多行注释:/* 多行注释内容 */
mysql> select user,host from mysql.user /*
/*> 12345678u
/*> sfgwrhrdhnt */
-> ;
+------------------+-----------+
| user | host |
+------------------+-----------+
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
4 rows in set (0.00 sec)
(2)数据库操作
<1> 查看
语法:SHOW DATABASES [LIKE wild];
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql> show databases like 'mysql';
+------------------+
| Database (mysql) |
+------------------+
| mysql |
+------------------+
1 row in set (0.01 sec)
-- % : 任意0个或多个任意字符
-- _ : 任意单个字符
mysql> show databases like '__s%';
+-----------------+
| Database (__s%) |
+-----------------+
| mysql |
| sys |
+-----------------+
2 rows in set (0.00 sec)
<2> 创建:
语法:CREATE DATABASE [IF NOT EXISTS] 数据库名;
mysql> create database mysql; -- mysql数据库存在,所以创建失败
ERROR 3552 (HY000): Access to system schema 'mysql' is rejected.
mysql> create database student;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| student |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> show create database student; -- 查看创建数据库的流程
+----------+----------------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------------------------------------------+
| student | CREATE DATABASE `student` /*!40100 DEFAULT CHARACTER SET gbk */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+----------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
<3> 删除:
语法:DROP DATABASE [IF EXISTS]数据库名;
mysql> drop database student;
Query OK, 0 rows affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
<4> 切换:
语法:USE 数据库名;
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select database(); -- 查看当前使用的数据库
+------------+
| database() |
+------------+
| mysql |
+------------+
1 row in set (0.00 sec)
-- 设置提示符显示当前使用的数据库名称
[root@localhost ~]# vim /etc/my.cnf
[mysql]
prompt=mysql8.0 [\\d]>
[root@localhost ~]# systemctl start mysqld
[root@localhost ~]# mysql -u root -p
Enter password:
mysql8.0 [(none)]>use mysql;
Database changed
mysql8.0 [mysql]>use sys; -- 已显示当前使用的数据库名
Database changed
mysql8.0 [sys]> -- 数据库切换,显示依旧切换
<5> 执行系统命令:
语法:system 命令
mysql8.0 [sys]>system ls;
20230605 cron_task Desktop Downloads initial-setup-ks.cfg mysql80-community-release-el8-4.noarch.rpm Public Videos
anaconda-ks.cfg dead.letter Documents echo Music Pictures Templates
mysql8.0 [sys]>system ls -l;
total 32
drwxr-xr-x. 2 root root 21 Jun 5 09:14 20230605
-rw-------. 1 root root 1488 Oct 21 2022 anaconda-ks.cfg
-rw-r--r--. 1 root root 12 Jun 5 10:34 cron_task
...