前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL库操作、表操作

MySQL库操作、表操作

作者头像
南桥
发布2024-07-26 12:49:27
150
发布2024-07-26 12:49:27
举报
文章被收录于专栏:南桥谈编程

库的操作

数据库的增删

创建数据库

语法:

代码语言:javascript
复制
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

说明:

  • 大写的表示关键字
  • [] 是可选项
  • CHARACTER SET: 指定数据库采用的字符集
  • COLLATE: 指定数据库字符集的校验规则

实例操作: 创建一个database1的数据库: 指令:create database database1;

此时我们查看我们的数据库,会发现多了一个叫database1的数据库:

对应的在Linux文件中,在/var/lib/mysql目录中,多了一个database1的目录:

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

删除数据库

语法:

代码语言:javascript
复制
DROP DATABASE [IF EXISTS] db_ name;

实例操作: 指令:drop database database1; 查看一下数据库,发现对应的database1被删除了:

本质是在/var/lib/mysql下删除一个目录

数据库的编码

创建数据库的时候,有两个编码集:

  1. 数据库编码集:数据库未来存储数据。
  2. 数据库校验集:支持数据库进行字段比较使用的编码,本质是一种读取数据库中的数据采用的编码格式。

数据库无论对数据做任何操作,都必须保证操作和编码必须是编码一致的。

查看系统默认字符集以及校验规则
  1. 查看数据库本身的编码集:show variables like 'character_set_database';
  1. 查看数据库本身校验集:show variables like 'collation_database';
  1. 查看数据库支持的字符集:show charset
  1. 查看数据库支持的字符集校验规则:show collation
手动指定编码集创建数据库
  1. 创建一个使用utf8字符集的 db2 数据库 create database d2 charset=utf8; reate database d3 character set utf8;
  2. 创建一个使用utf字符集,并带校对规则的 db3 数据库 create database d4 charset=utf8 collate utf8_general_ci
校验规则对数据库的影响

分别创建两个数据库test1test2,使得两个数据库的校验规则不一样:

代码语言:javascript
复制
create database test1 collate utf8_general_ci;
create database test2 collate utf8_bin;

校验规则使用utf8_ general_ ci[不区分大小写]: 表格中有如下数据:

当我们进程查找a时,A也会被查找出来:


校验规则使用utf8_ bin[区分大小写]: 表格中有如下数据:

当我们进程查找a时,A不会被查找出来:


因此,校验规则不同,结果会有所不同。

库的删改查

查看数据库
代码语言:javascript
复制
show databases;
显示创建语句

语句:show create database 数据库名;

示例:

说明:

  • MySQL 建议我们关键字使用大写,但是不是必须的。
  • 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
  • /*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话
删除数据库
代码语言:javascript
复制
DROP DATABASE [IF EXISTS] db_ name;

执行删除之后的结果:

  • 数据库内部看不到对应的数据库
  • 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

注意:不要随意删除数据库

显示当前数据库名

有时候想知道自己当前在哪一个数据库中,使用语句:select datdbase()

修改数据库

语法:

代码语言:javascript
复制
ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

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

示例:

代码语言:javascript
复制
alter database test2 charset=gbk collate gbk_chinese_ci;

库的备份与恢复

备份: 语法:

代码语言:javascript
复制
# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

查看test1.sql内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中:

此时我们删除数据库中test1

恢复:

代码语言:javascript
复制
source /home/MySQL/test1.sql

此时将历史对应的sql命令在新的数据库中执行一次。

数据就全部恢复:

注意事项:

  • 如果备份的不是数据库,而是其中一个表:
代码语言:javascript
复制
# mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql
  • 同时备份多个数据库:
代码语言:javascript
复制
# mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
  • 如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。

查看连接情况

代码语言:javascript
复制
show processlist;

表的操作

创建表

语法:

代码语言:javascript
复制
CREATE TABLE table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

说明:

  • field 表示列名
  • datatype 表示列的类型
  • character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
  • collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

不同的存储引擎,创建表的文件不一样。 users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:

  • users.frm:表结构
  • users.MYD:表数据
  • users.MYI:表索引

案例:

代码语言:javascript
复制
mysql> create table if not exists user1(
    -> id int,
    -> name varchar(20) comment '用户名',
    -> password char(32) comment '用户密码',
    -> birthday date comment '用户生日'
    -> );
Query OK, 0 rows affected (0.04 sec)

mysql> create table if not exists user2(
    -> id int,
    -> name varchar(20) comment '用户名',
    -> password char(32) comment '用户密码',
    -> birthday date comment '用户生日'
    -> );
Query OK, 0 rows affected (0.02 sec)

在创建的时候,不带存储引擎时,默认的存储引擎是InnoDB

默认在配置的时候,默认存储的存储引擎是InnoDB,可以在/etc/my.cnf中查看:

查看表的结构

语法:

代码语言:javascript
复制
desc 表名;

案例:

查看更详细的信息:show create table user1 \G

修改表

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

语法:

代码语言:javascript
复制
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename MODIfy (column datatype [DEFAULT expr][,column
datatype]...);
ALTER TABLE tablename DROP (column);

案例一:修改表的名字

代码语言:javascript
复制
alter table user1 rename to user;

to:可以省掉

案例二:向表中插入数据

代码语言:javascript
复制
mysql> insert into user values (1,'张三','12345','2004-1-24');
Query OK, 1 row affected (0.01 sec)

mysql> insert into user values (1,'李四','5431','2005-2-25');
Query OK, 1 row affected (0.00 sec)

案例三:在user表添加一个字段,用于保存图片路径

代码语言:javascript
复制
mysql> alter table user add image_path varchar(128) comment '用户图像路径' after birthday;Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

插入新字段,对原来的表没有影响。

案例四:修改name,将其长度改成60

代码语言:javascript
复制
mysql> alter table user modify name varchar(60);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

把新的属性覆盖掉原来的。

案例四:删除password列

代码语言:javascript
复制
mysql> alter table user drop password;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

案例五:将name列修改为xingming 在MySQL中,对列名称进行修改时,不仅需要修改名称,还需要修改属性

代码语言:javascript
复制
mysql> alter table user change name xingming varchar(60) DEFAULT NULL;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

删除表

语法:

代码语言:javascript
复制
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

示例:

代码语言:javascript
复制
mysql> drop table user;
Query OK, 0 rows affected (0.01 sec)

注意:删除表时一定要小心!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 库的操作
    • 数据库的增删
      • 创建数据库
      • 删除数据库
    • 数据库的编码
      • 查看系统默认字符集以及校验规则
      • 手动指定编码集创建数据库
      • 校验规则对数据库的影响
    • 库的删改查
      • 查看数据库
      • 显示创建语句
      • 删除数据库
      • 显示当前数据库名
      • 修改数据库
    • 库的备份与恢复
      • 查看连接情况
      • 表的操作
        • 创建表
          • 查看表的结构
            • 修改表
              • 删除表
              相关产品与服务
              对象存储
              对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档