当前位置: 首页 > web >正文

【MySQL】03.库操作与表操作

1. 库的操作

1.1 创建数据库

创建数据库的本质就是在/var/lib/mysql/下新建一个目录。

mysql> create database helloworld;
Query OK, 1 row affected (0.01 sec)

在创建数据库时有很多可选项,我们介绍其中的两个:字符集(数据库存储数据的编码方式)和检校集(数据库读取数据的编码方式)。那么系统中都有哪些字符集和检校集呢?我们可以通过下面指令查看:

-- 查看字符集
show charset;
-- 查看校验集
show collation;

 接下来我们来看一下系统中的默认字符集与校验集:

mysql> show variables like 'character_set_database';
+------------------------+---------+
| Variable_name          | Value   |
+------------------------+---------+
| character_set_database | utf8mb4 |
+------------------------+---------+
1 row in set (0.01 sec)mysql> show variables like 'collation_database';
+--------------------+--------------------+
| Variable_name      | Value              |
+--------------------+--------------------+
| collation_database | utf8mb4_0900_ai_ci |
+--------------------+--------------------+
1 row in set (0.00 sec)

接下来我们验证一下检校编码的影响:

说明:utf8_ general_ ci 校验集不区分大小写,utf8_ bin 检校集区分大小写。

mysql> create database test1 collate utf8_general_ci;
Query OK, 1 row affected, 1 warning (0.01 sec)mysql> use test1;
Database changed
mysql> create table person(name varchar(20));
Query OK, 0 rows affected (0.04 sec)mysql> insert into person values('a');
Query OK, 1 row affected (0.01 sec)mysql> insert into person values('A');
Query OK, 1 row affected (0.01 sec)mysql>  select * from person where name='a';
+------+
| name |
+------+
| a    |
| A    |
+------+
2 rows in set (0.00 sec)mysql> create database test2 collate utf8_bin;
Query OK, 1 row affected, 1 warning (0.01 sec)mysql> use test2
Database changed
mysql> create table person(name varchar(20));
Query OK, 0 rows affected (0.03 sec)mysql> insert into person values('a');
Query OK, 1 row affected (0.01 sec)insert into person values('A');
Query OK, 1 row affected (0.00 sec)mysql> select * from person where name='a';
+------+
| name |
+------+
| a    |
+------+
1 row in set (0.00 sec)

可以看出不同校验集对查询到的数据是有很大影响的。

1.2 查看数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| helloworld         |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test1              |
| test2              |
+--------------------+
7 rows in set (0.00 sec)

我们还可以查看数据库是怎么创建的:

mysql> show create database test;
+----------+--------------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                                                |
+----------+--------------------------------------------------------------------------------------------------------------------------------+
| test     | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+--------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> show create database test \G;
*************************** 1. row ***************************Database: test
Create Database: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
1 row in set (0.00 sec)ERROR: 
No query specified

1.3 修改数据库

mysql> alter database helloworld  charset=gbk;
Query OK, 1 row affected (0.01 sec)

对数据库的修改主要指的是修改数据库的字符集,校验规则。

1.4 删除数据库

mysql> drop database helloworld;
Query OK, 1 row affected (0.03 sec)

删除数据库的本质就是删除/var/lib/mysql/下的对应目录。

1.5 库的备份与恢复

库的备份:

caryon@ALiClode:~/linux/databasetest$ sudo mysqldump -P 3306 -u root -p test1 > ./test1.sql
Enter password: 
caryon@ALiClode:~/linux/databasetest$ ls
test1.sql

库的恢复:

mysql> source /home/caryon/linux/databasetest/test.sql;
Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)Query OK, 0 rows affected (0.00 sec)

1.6 查看连接设备

mysql> show processlist;
+----+-----------------+-----------+------+---------+-------+------------------------+------------------+
| Id | User            | Host      | db   | Command | Time  | State                  | Info             |
+----+-----------------+-----------+------+---------+-------+------------------------+------------------+
|  5 | event_scheduler | localhost | NULL | Daemon  | 15334 | Waiting on empty queue | NULL             |
| 17 | root            | localhost | NULL | Query   |     0 | init                   | show processlist |
+----+-----------------+-----------+------+---------+-------+------------------------+------------------+
2 rows in set, 1 warning (0.00 sec)

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

2. 表的操作

2.1 创建表

-- 语法
CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;mysql> create table people( name varchar(32), age int );
Query OK, 0 rows affected (0.04 sec)

2.2 查看表

查看库中有哪些表:

mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| people         |
+----------------+
1 row in set (0.00 sec)

查看表中的详细信息: 

mysql> desc people;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name  | varchar(32) | YES  |     | NULL    |       |
| age   | int         | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

2.3 修改表

在项目实际开发中,经常修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型, 表的存储引擎等等。我们还有需求,添加字段,删除字段等等。这时我们就需要修改表。

添加:

mysql> alter table people add column telephone varchar(20) after name;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc people;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| name      | varchar(32) | YES  |     | NULL    |       |
| telephone | varchar(20) | YES  |     | NULL    |       |
| age       | int         | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

修改:

mysql> alter table people modify column name varchar(64);
Query OK, 2 rows affected (0.08 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> desc people;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| name      | varchar(64) | YES  |     | NULL    |       |
| telephone | varchar(20) | YES  |     | NULL    |       |
| age       | int         | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

删除:

mysql> alter table people drop column age;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> desc people;
+-----------+-------------+------+-----+---------+-------+
| Field     | Type        | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| name      | varchar(64) | YES  |     | NULL    |       |
| telephone | varchar(20) | YES  |     | NULL    |       |
+-----------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

2.4 删除表

mysql> drop table people;
Query OK, 0 rows affected (0.02 sec)
http://www.xdnf.cn/news/7658.html

相关文章:

  • 大模型的说谎行为
  • Python _day31
  • 在 Win 10 上,Tcl/Tk 脚本2个示例
  • 《算法笔记》11.8小节——动态规划专题->总结 问题 B: 拦截导弹
  • 【数据结构 -- AVL树】用golang实现AVL树
  • 中间件-seata
  • 在innovus中如何设置让信号线打上双孔
  • DEBUG:Lombok 失效
  • Java转Go日记(四十三):Gorm事务
  • Maven 项目打包时添加本地 Jar 包
  • DAY28 超大力王爱学Python
  • CYT4BB Dual Bank 1 - 存储机制
  • t检验详解:原理、类型与应用指南
  • 什么是物联网 (IoT):2024 年物联网概述
  • 使用Mathematica绘制一类矩阵的特征值图像
  • Spring AI 介绍
  • BYUCTF 2025
  • JS 中 var、let、const 的区别联系
  • Unity入门学习(四)3D数学(4)之四元数Quaternion
  • Qt动态生成 UI
  • 动易私有知识库解决方案技术解析
  • 如何在WordPress网站上添加即时聊天功能
  • 游戏开发实战(三):Python复刻「崩坏星穹铁道」嗷呜嗷呜事务所---源码级解析该小游戏背后的算法与设计模式【纯原创】
  • 25.5.20学习总结
  • 算法与数据结构:质数、互质判定和裴蜀定理
  • Android 蓝牙开发 - 蓝牙相关权限(蓝牙基本权限、Android 12 蓝牙新增权限、位置权限)
  • matlab+opencv车道线识别
  • 目标检测DN-DETR(2022)详细解读
  • mysql的乐观锁与悲观锁
  • USB转TTL