数据库操作
数据库的登录及退出
登陆格式:
mysql -u用户名 -h服务器的主机地址 -p密码 -A -P 端口 -D 数据库名 -e sql语句
[root@Light ~]# mysql -uroot -pMysql@123 -hlocalhost -A -P 3306 -D haha
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.4.6 MySQL Community Server - GPL
#带上-e参数直接执行sql语句 报警告是因为没有使用交互模式写密码
[root@Light ~]# mysql -uroot -pMysql@123 -hlocst -A -P 3306 -D haha -e "select * from xixi1";
mysql: [Warning] Using a password on the command line interface can be insecure.
+------+----------+
| id | name |
+------+----------+
| 1 | zhangsan |
| 2 | lisi |
+------+----------+
分析:
-u 后面跟登录数据库的用户名,这里使用root
-h 后面的参数是服务器的主机地址,在这里客户端和服务器在同一台机器上,所以输入 localhost 或者 IP 地址
-p 后面是用户登录密码,注意:-p 和密码之间没有空格。如果出现空格,系统将不会把后面的字符串当成密码来对待,没有密码时不写
-A参数:不预读数据库信息,加上该参数则不预读数据库中的表等信息,不会有表名及列名的补全,但读取速度会加快,不加该参数可能使用数据库时出现下列提示(不影响使用)
Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A
图示例:

显示信息解释:
- Commands end with; or\g:mysql 命令是以分号(;)或“\g”来结束的,遇到这个结束符就开始执行命令
- Your MySQL connection id is 22:数据库的连接次数
- Server version: 8.0.37 Source distribution : 版本
- Type ‘help;’ or ‘\h’ for help:输入”help;“或者”\h“可以看到帮助信息
- Type ‘\c’ to clear the current input statement:表示遇到”\c“就清除前面的命令,注意不是清屏
退出:exit quit \q
查看数据库
格式:like 模糊匹配 %任意长度的任意字符 _任意单个字符
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| haha |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
18 rows in set (0.00 sec)
mysql> show databases like "%in%";
+--------------------+
| Database (%in%) |
+--------------------+
| information_schema |
| suoyin |
+--------------------+
2 rows in set (0.00 sec)
MySQL自带数据库
- nformation_schema:提供 MySQL 服务器中所有数据库对象的元数据信息,相当于数据库的 “数据字典”。
存放内容:
数据库、表、列、索引、视图、存储过程、触发器等的定义信息;表的存储引擎、数据类型、权限信息、字符集等。- performance_schema:主要存储数据库服务器的性能参数
- mysql: 存储了系统的用户权限信息及帮助信息
- sys: 5.7新增,之前版本需要手工导入。这个库是通过视图的形式把information_schema 和performance_schema结合起来,查询出更加令人容易理解的数据
带有 通配符的条件
%:匹配任意0个或多个字符
_:匹配仁义单个字符
ysql> show databases like "s%";
+---------------+
| Database (s%) |
+---------------+
| suoyin |
| sys |
+---------------+
2 rows in set (0.00 sec)
#_只能匹配一个字符
mysql> show databases like "sy_";
+----------------+
| Database (sy_) |
+----------------+
| sys |
+----------------+
1 row in set (0.00 sec)
mysql> show databases like "s__";
+----------------+
| Database (s__) |
+----------------+
| sys |
+----------------+
1 row in set (0.00 sec)
创建数据库
create database [库名];
示例
mysql> create database demodb;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| demodb |
| haha |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
19 rows in set (0.00 sec)
若数据库存在,就报错
mysql> create database demodb;
ERROR 1007 (HY000): Can't create database 'demodb'; database exists
查看数据库的语句
show create database [数据库名];
mysql> show create database demodb;
+----------+----------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database |
+----------+----------------------------------------------------------------------------------------------------------------------------------+
| demodb | CREATE DATABASE `demodb` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+----------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
# 分析:
# 上述显示创建数据库语句的内容可看做3段内容
# CREATE DATABASE `testdb` :表示创建数据库testdb
# /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ :表示注释内容,显示字符集采用utf8mb4方案,一个字符需要 1 ~ 4 个字节。可以存储一些 emoji 表情; utf8mb4_0900_ai_ci表示字符比较规则即ai为不区分重音,ci为不区分大小写
# /*!80016 DEFAULT ENCRYPTION='N' */ 表示数据库未加密
mysql中的反引号
- 上例中查看的sql语句有反引号,其作用可以避免一些与SQL语法冲突的问题,同时可以使代码更加规范化和易读性更强
- 如 select name, address from table; 其中table若当做表名但其为关键字回报错,加上反引号可以避免与SQL关键字的冲突
#在这里博主那table做示范,table是关键字,这里直接创建名为table表会报错
mysql> create table table (id int);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table (id int)' at line 1
#加了反引号之后就创建成功了
mysql> create table `table` (id int);
Query OK, 0 rows affected (0.01 sec)
注意
只有保留关键字和特殊字符需要使用反引号,普通的表名和列名不需要
数据类型之间可以加或者不加反引号,但为了代码规范化,建议加上
切换数据库
查看当前使用的数据库,格式:
#显示空说明没有是由数据库
mysql> select database();
+------------+
| database() |
+------------+
| NULL |
+------------+
1 row in set (0.00 sec)
进入数据库格式:
use [数据库名] #这个语句后面加不加分号都可以
mysql> use demodb
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
#出现上述两行是因为登录数据库的时候没有加-A选项
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| demodb |
+------------+
1 row in set (0.00 sec)
查看当前用户
mysql> select user();
+----------------+
| user() |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
删除数据库
格式
drop database [数据库名];
示例
mysql> drop database demodb;
Query OK, 2 rows affected (0.04 sec)
小结
#新建数据库
create database [数据库名];
#使用数据库
use [数据库名];
#查看当前使用数据库
select database();
#显示所有数据库
show databases;
#删除数据库
drop database [数据库名];
#查看当前登录的用户和主机名
select user();
删除的注意事项
1.删除数据库表之前,一定要备份数据,以免数据丢失。
2.在删除数据库表之前,要确保该表没有被其他的表所引用,否则可能会破坏外键约束。
3.在删除数据库表之前,要确保该表的数据已经备份,并且不再需要使用。
4.在删除数据库表之前,要确保该表的数据已经被清空,否则会破坏外键约束。
5.在删除数据库表之前,要确保该表的所有索引都已经被删除。如果还存在索引,可能会导致删除失败。
6.在删除数据库表之前,要确保该表的所有相关程序已经停止运行,以免影响其他程序的正常运行。

1607

被折叠的 条评论
为什么被折叠?



