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

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

相关文章:

  • 黑马点评相关知识总结
  • 本征半导体与杂质半导体
  • Redis中的事务和原子性
  • DockerHub被封禁,怎么将镜像传到国内?一种简单合规的镜像同步到国内方案[最佳实践]
  • 物流项目第三期(统一网关、工厂模式运用)
  • 内网穿透:轻松实现外网访问本地服务
  • 101个α因子#8
  • 新凌印 4.2.0 | 国内短视频去水印下载~图集下载
  • 【数据结构】队列的完整实现
  • Brooks Polycold快速循环水蒸气冷冻泵客户使用手含电路图,适用于真空室应用
  • AI能源危机:人工智能发展与环境可持续性的矛盾与解决之道
  • 深入剖析Zynq AMP模式下CPU1中断响应机制:从原理到创新实践
  • addStretch 与addSpace的区别
  • base算法
  • 【YOLOs-CPP-图像分类部署】01-构建项目
  • bi报表是什么意思?如何制作一张bi报表?
  • 丝杆支撑座:机床生命周期的精度与效能
  • day 31
  • Linux(ubuntu18.04)下安装instant-ngp环境
  • 系统设计——项目设计经验总结1
  • “世界茶树原产地”打通全产业链,茶文旅融合助力西双版纳高质量发展
  • 马上评|把孩子当牟利工具,这样的流量吃不得
  • 凤阳文旅局长回应鼓楼瓦片脱落事件:楼宇是否属于文物?施工经费用在何处?
  • 全国35城居民对公共服务满意度“打分”,上海多项指标居首
  • 上海市第二十届青少年科技节启动:为期半年,推出百余项活动
  • 美国失去最后的AAA主权评级,继标普、惠誉后再遭穆迪降级