MySQL之库和表操作

news2024/11/25 13:52:47

目录

一:对库的操作

1.创建数据库

2.查看数据库列表 

3.显示创建数据库的语句 

4.删除数据库

5.字符集与校验集

6.确认当前所处的数据库

7.修改数据库 

8.备份和恢复

9.查看连接情况

 二:对表的操作

1.创建表

2.查看表

3.删除表 

4.修改表 

 接下来的日子会顺顺利利,万事胜意,生活明朗-----------林辞忧

一:对库的操作

1.创建数据库

语法:create database (if not exists) 库名 (charset=编码集) (collate 校验集);

注:(1).此处及后续()中的内容可写可不写

       (2).编码集和校验集后续介绍

       (3).当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,

         校验规则是:utf8_general_ ci

mysql> create database d1;
mysql> create database if not exists d2;
Query OK, 1 row affected (0.00 sec)

当对应数据库存在时,则不再创建一个新的;不存在时,则新创建一个 

本质是在  /var/lib/mysql下创建一个目录 

2.查看数据库列表 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| d1                 |
| hello              |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
7 rows in set (0.00 sec)

3.显示创建数据库的语句 

语法: show create database 库名;

mysql> show create database d1;
+----------+-------------------------------------------------------------+
| Database | Create Database                                             |
+----------+-------------------------------------------------------------+
| d1       | CREATE DATABASE `d1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-------------------------------------------------------------+
1 row in set (0.00 sec)

说明:

(1).数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
(2)./*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话

4.删除数据库

语法:drop database 库名;

mysql> drop database d1;
Query OK, 0 rows affected (0.03 sec)

执行删除之后的结果:
数据库内部看不到对应的数据库
对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

因此不要随意删除数据库

5.字符集与校验集

在创建数据库时,有两个编码集:数据库字符集和数据库校验集

字符集:数据库未来存储数据采用的编码格式

校验集:支持数据库进行字段比较而使用的编码,本质是一种读取数据库中数据的采用的编码格式

当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_
general_ ci

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

(1)查看系统默认字符集以及校验规则

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

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

(2)查看数据库支持的字符集

mysql> show charset;

(3) 查看数据库支持的字符集校验规则

mysql> show collation;

(4) 查看每个默认内部的校验规则

mysql> show variables like 'collation_%';
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_general_ci |
| collation_server     | utf8_general_ci |
+----------------------+-----------------+

(5) 使用指定编码创建数据库

创建一个使用utf8字符集的 db2 数据库

create database db2 charset=utf8;

创建一个使用utf字符集,并带校对规则的 db3 数据库

create database db3 charset=utf8 collate utf8_general_ci;

(6) 校验规则对数据库的影响

创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]

mysql> create database test1 collate utf8_general_ci;

mysql> use test1;

mysql> create table person(name varchar(20));

mysql> insert into person values('a');

mysql> insert into person values('A');

mysql> insert into person values('b');

mysql> insert into person values('B');

创建一个数据库,校验规则使用utf8_ bin[区分大小写] 

mysql> create database test2 collate utf8_bin;

mysql> use test2;

mysql> create table person(name varchar(20));

mysql> insert into person values('a');

mysql> insert into person values('A');

mysql> insert into person values('b');

mysql> insert into person values('B');

不区分大小写的查询以及结果

mysql> use test1;

mysql> select * from person where name='a';
+------+
| name |
+------+
| a    |
| A    |
+------+

区分大小写的查询以及结果

mysql> use test2;

mysql> select * from person where name='a';
+------+
| name |
+------+
| a    |
+------+

 可以看出校验集是会影响比较结果的

6.确认当前所处的数据库

mysql> select database();
+------------+
| database() |
+------------+
| test2      |
+------------+

7.修改数据库 

语法:alter database 库名  (charset=字符集) (collate 对应的校验集)

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

mysql> alter database test2 charset=gbk collate gbk_chinese_ci;
Query OK, 1 row affected (0.00 sec)

8.备份和恢复

备份:

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

示例:将mytest库备份到文件(退出连接)

# mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql

备份数据库中的表

# mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql

同时备份多个数据库

# mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径

还原:

mysql> source D:/mysql-5.7.22/mytest.sql; 

9.查看连接情况

show processlist;        可以告诉我们当前有哪些用户连接到我们的MySQL 

 二:对表的操作

1.创建表

(1)语法:

create table(if not exists) table_name (
field1 datatype,
field2 datatype,
field3 datatype
) character set 字符集 collate 校验规则 engine 存储引擎;

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

 (2)实例

mysql> create table if not exists t1(
    -> id int,
    -> name varchar(20) comment'用户名',
    -> password char(32) comment'密码',
    -> birthday date comment'生日'
    -> )character set utf8 collate utf8_general_ci engine MyIsam;
Query OK, 0 rows affected (0.01 sec)

说明:不同的存储引擎,创建表的文件不一样。
users 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:
users.frm:表结构
users.MYD:表数据
users.MYI:表索引

默认存储引擎是innodb

2.查看表

(1) 显示当前所在数据库有几张表

mysql> show tables;
+-----------------+
| Tables_in_test2 |
+-----------------+
| person          |
| t1              |
+-----------------+

(2) 查看具体一个表的详细信息/表结构信息

语法: desc 表名

mysql> desc t1;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| name     | varchar(20) | YES  |     | NULL    |       |
| password | char(32)    | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

 (3)显示创建表时的详细信息

语法:show create table 表名 \G;

mysql> show create table t1 \G;
*************************** 1. row ***************************
       Table: t1
Create Table: CREATE TABLE `t1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(20) DEFAULT NULL COMMENT '用户名',
  `password` char(32) DEFAULT NULL COMMENT '密码',
  `birthday` date DEFAULT NULL COMMENT '生日'
) ENGINE=MyISAM DEFAULT CHARSET=utf8

3.删除表 

语法格式:drop table 表名;

mysql> drop table person;
Query OK, 0 rows affected (0.02 sec)

4.修改表 

(1)修改表名为employee

语法: alter table 原表名 rename to 新表名;

mysql> alter table t1 rename to employee;
Query OK, 0 rows affected (0.00 sec)

(2)在指定列后新增一列

语法:alter table 表名 add 新列名 列类型 其它  after 原有列名;

mysql> alter table employee add imagepath varchar(128) comment'图片路径' after birthday;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| id        | int(11)      | YES  |     | NULL    |       |
| name      | varchar(20)  | YES  |     | NULL    |       |
| password  | char(32)     | YES  |     | NULL    |       |
| birthday  | date         | YES  |     | NULL    |       |
| imagepath | varchar(128) | YES  |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+

(3)指定列属性做修改

语法: alter table 表名 modify 列名 新的列属性;

mysql> alter table employee modify name varchar(60);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| id        | int(11)      | YES  |     | NULL    |       |
| name      | varchar(60)  | YES  |     | NULL    |       |
| password  | char(32)     | YES  |     | NULL    |       |
| birthday  | date         | YES  |     | NULL    |       |
| imagepath | varchar(128) | YES  |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+

(4) 删除一列

语法:alter table 表名 drop 列名;

mysql> alter table employee drop imagepath;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| name     | varchar(60) | YES  |     | NULL    |       |
| password | char(32)    | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

(5) 修改列名称

语法:alter table 表名 change name 新列名以及相关属性;

mysql> alter table employee change name xingming varchar(60);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc employee;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int(11)     | YES  |     | NULL    |       |
| xingming | varchar(60) | YES  |     | NULL    |       |
| password | char(32)    | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2129075.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【进展报告】9.9-9.12

一、进度概述 1、推进关于滤波的相关任务(详情见相关文件) 二、详情 1、噪声与滤波模块 在师兄 inversionnet 的基础上,在正则化模块前后添加了对应的噪声和滤波模块。 噪声采用的是最基本的高斯噪声和椒盐噪声,关于其他…

OpengGL学习-显示三维形状

本文介绍了OpenGL创建三维图形的几个示例程序。并附有OpenGL创建三维形状的基础示例代码。本文还介绍了OpenGL基础知识,并对Vulkan做了简介。Vulkan性能更强大,但对开发技术人员要求更高,对兼容性的风险和工作量要有充分的认识。兼容性不仅存…

通信工程学习:什么是MGCF多媒体网关控制功能

MGCF:多媒体网关控制功能 MGCF(Media Gateway Control Function,多媒体网关控制功能)是IP多媒体子系统(IMS)网络中的一个关键组件,主要负责实现IMS网络和传统电路交换网络(如PSTN、I…

2024年【建筑焊工(建筑特殊工种)】考试技巧及建筑焊工(建筑特殊工种)作业考试题库

题库来源:安全生产模拟考试一点通公众号小程序 建筑焊工(建筑特殊工种)考试技巧考前必练!安全生产模拟考试一点通每个月更新建筑焊工(建筑特殊工种)作业考试题库题目及答案!多做几遍,其实通过建筑焊工(建筑特殊工种)在线考试很简…

springboot 项目获取 yaml/yml (或 properties)配置文件信息

文章目录 springboot 项目获取配置文件信息前言1、 Autowired 注入 Environment类2、基础用法,使用Value注解直接注入配置信息3、进阶方法(推荐使用)拓展:springboot 集成配置中心 - 以 Apollo 为例 springboot 项目获取配置文件信…

YOLO配合 PYQT做自定义虚拟电子围-自定义绘制多边形虚拟电子围栏

电子围栏标注以及显示 1、目标检测: YOLO可以识别检测物体,这是众所周知的。使用YOLO来做目标检测,并获取坐标信息。 2、电子围栏 比如在监控中,指定一块区域,如果有目标进入,则发出警报,并提…

写的一致性问题之失效模式

文章目录 1、先删除redis缓存,再写入mysql:1.1、高并发情况下分析出现的问题 1、先删除redis缓存,再写入mysql: 此时删除redis成功,写入mysql成功,此时redis是空,mysql是新数据。此时删除redis…

财富通公司开发洗车小程序有哪些用处?

洗车小程序具有多种用处,主要体现在以下几个方面: 1.便捷预约服务:用户可以通过洗车小程序轻松预约洗车服务,无需亲自前往洗车店或打电话预约,节省了时间和精力。同时,小程序通常提供多种预约时间选项&…

Java进阶13讲__补充1/2

单元测试、反射、注解、Lombok 1. 单元测试 1.1 Junit单元测试框架 1.2 Junit框架入门 package com.itheima.a_单元测试;import org.junit.Test;public class SpringUtilTest {Testpublic void testPrintNumber() {StringUtil.printNumber("Jack");StringUtil.pri…

go 笔记

数据结构与 方法(增删改查) 安装goland,注意版本是2024.1.1,不是2024.2.1,软件下载地址也在链接中提供了 ‘go’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 在 Windows 搜索栏中输入“环境变量”&#…

Windows上安装RabbitMQ

rabbitmq是干嘛的我就不介绍了,直接开始安装教程。 搭建成功演示图 下载安装包 https://pan.baidu.com/s/1ZlCFxh9Q00ynSU3ZCpTC9Q?pwdry51​pan.baidu.com/s/1ZlCFxh9Q00ynSU3ZCpTC9Q?pwdry51 下载完后有两个包(erlang和rabbitmq) 先安装otp_win64_24.1.7.exe…

【Python系列】理解 Python 中的时间和日期处理

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

测试开发基础——测试分类

四、测试分类 1. 按照测试目标分类 1.1. 界面测试 肉眼看到的任何元素都需要进行测试 界面测试(简称U测试),指按照界面的需求(一般是U设计稿)和界面的设计规则,对我们软件界面所展示的全部内容进行测试…

【计算机网络】UDP 协议详解及其网络编程应用

文章目录 一、引言二、UDP1、UDP的协议格式2、UDP 报文的解包和分用3、UDP面向数据报的特点 三、UDP输入输出四、UDP网络编程 一、引言 UDP(User Datagram Protocol,用户数据报协议)是一种网络通信协议,它属于传输层的协议。是一…

火语言RPA流程组件介绍--鼠标拖拽元素

🚩【组件功能】:在开始位置上按下鼠标,拖动到结束坐标或指定元素上放下鼠标,实现目标元素的拖拽 配置预览 配置说明 丨拖动元素 支持T或# 默认FLOW输入项 开始拖动的元素,并从当前元素开始按下鼠标 丨拖动到 目标元素/目标位…

vue3 el-message组件封装

背景 在封装请求拦截器时,使用ElMessage进行弹窗提示成功或失败,但是如果页面用到多个接口,这时就会导致页面出现很多弹窗,导致用户体验不好,有可能出现卡顿现象。 这时就需要进行一些判断,如果前面的ElMessage还没关闭并且类型是一致的就return,不再弹窗提示,类型不…

项目日志——日志器模块一部缓冲区的设计、实现、测试

文章目录 异步缓冲区模块模块设计缓冲区设计单个缓冲区 实现测试 异步缓冲区模块 模块设计 异步日志器的思想是为了避免业务线程因为写日志的过程时间较长而长时间阻塞 异步日志器的工作就是把业务输出的日志内容放入内存缓冲区中,使用专门的线程进行日志写入 这…

一款高效、简洁的帧动画生成工具

在现代网页设计和移动应用开发中,帧动画是一种常见的动画实现方式,它通过连续显示一系列静态图片来模拟动画效果。然而,手动创建和管理这些帧动画图片不仅耗时费力,而且效率低下。为此,gka 应运而生,它是一…

翻车率这么高!今年11月软考论文应该如何备考?

随着最近2024年5月软考成绩的出炉,大家发现论文及格绝大多数都是45分,有许多高级考生三科中只有论文不合格,与软考证书失之交臂。而下半年除高项,其他4个高级科目都将开考,那么高级中至关重要的论文科目该如何备考呢&a…

AI应用开发平台Dify本地Ubuntu环境部署结合内网穿透远程管理大模型

文章目录 前言1. Docker部署Dify2. 本地访问Dify3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 前言 本文主要介绍如何在Linux Ubuntu系统使用Docker快速部署大语言模型应用开发平台Dify,并结合cpolar内网穿透工具实现公网环境远程访问…