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

1. 库的操作

1.1 创建数据库

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

sql 复制代码
mysql> create database helloworld;
Query OK, 1 row affected (0.01 sec)

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

sql 复制代码
-- 查看字符集
show charset;
-- 查看校验集
show collation;

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

sql 复制代码
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 检校集区分大小写。

sql 复制代码
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 查看数据库

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

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

sql 复制代码
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 修改数据库

sql 复制代码
mysql> alter database helloworld  charset=gbk;
Query OK, 1 row affected (0.01 sec)

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

1.4 删除数据库

sql 复制代码
mysql> drop database helloworld;
Query OK, 1 row affected (0.03 sec)

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

1.5 库的备份与恢复

库的备份:

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

库的恢复:

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 查看连接设备

sql 复制代码
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 创建表

sql 复制代码
-- 语法
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 查看表

查看库中有哪些表:

sql 复制代码
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| people         |
+----------------+
1 row in set (0.00 sec)

查看表中的详细信息:

sql 复制代码
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 修改表

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

添加:

sql 复制代码
mysql> alter table people add column telephone varchar(20) after name;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> 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)

修改:

sql 复制代码
mysql> alter table people modify column name varchar(64);
Query OK, 2 rows affected (0.08 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> 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)

删除:

sql 复制代码
mysql> alter table people drop column age;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> 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 删除表

sql 复制代码
mysql> drop table people;
Query OK, 0 rows affected (0.02 sec)
相关推荐
lusklusklusk2 分钟前
SQL Server 为什么普通 SELECT 会阻塞 UPDATE?——行级 S 锁到表级 S 锁的锁升级原理与实验验证
数据库·mysql·oracle
Leo.yuan10 分钟前
企业业务人员如何独立完成数据分析?2026年自助BI工具选型与应用指南
大数据·数据库·人工智能
roman_日积跬步-终至千里11 分钟前
数仓开发的三层责任:业务定义、模型设计与 SQL 实现
数据库·数据仓库·sql·数据建模
瀚高PG实验室14 分钟前
瀚高数据库创建新数据库卡住问题排查
数据库·postgresql·瀚高数据库
Escalating_xu22 分钟前
【Linux 网络编程】IP 分片与重组:3000 字节的数据报,怎样拆开又拼回来?
linux·网络·tcp/ip
瑶总迷弟32 分钟前
银河麒麟 V10 ARM64 安装 Oracle 19c 静默部署操作手册
数据库·oracle
风娜34 分钟前
【Linux网络】UDP 服务器怎么写?从 socket、bind 到 recvfrom/sendto,手写完整回显服务器
linux·服务器·网络
从琳开始98935 分钟前
从Socket到UDP回显服务器:Java网络编程完整指南
java·网络·网络协议·udp·java-ee
2601_9611462038 分钟前
实验室等离子表面处理设备安全整改记录:通风、UV、接地三项
笔记·安全·uv
程序员塔塔喵1 小时前
【MySQL篇|第十而二篇】深层次讲解MVCC机制
mysql·mvcc