【MySQL】数据库和表的操作

数据库和表的操作

  • 一、数据库的操作
    • 1. 创建数据库
    • 2. 字符集和校验规则
      • (1)查看系统默认字符集以及校验规则
      • (2)查看数据库支持的字符集
      • (3)查看数据库支持的字符集校验规则
      • (4)校验规则对数据库的影响
    • 3. 操纵数据库
      • (1)查看数据库
      • (2)显示创建的语句
      • (3)修改数据库
    • 4. 数据库删除
    • 5. 备份和恢复
      • (1)备份数据库
      • (2)还原
      • (3)拓展
    • 6. 查看连接情况
  • 二、表的操作
    • 1. 创建表
    • 2. 查看表
    • 3. 查看表结构
    • 4. 修改表
    • 5. 删除表

一、数据库的操作

1. 创建数据库

语法:CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]

	create_specification:
	[DEFAULT] CHARACTER SET charset_name
	[DEFAULT] COLLATE collation_name

说明:

  • 大写的表示关键字,mysql 不区分大小写,所以也可以用小写
  • [] 是可选项
  • CHARACTER SET: 指定数据库采用的字符集
  • COLLATE: 指定数据库字符集的校验规则

假设现在我们现在需要创建一个名为 d1 的数据库,首先我们先查看一下数据库,查看数据库:show databases;

在这里插入图片描述

下面开始创建 d1 数据库:create database d1;

在这里插入图片描述

如上,d1 数据库就创建好了。

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

  • 创建一个使用 utf8 字符集的 d2 数据库:create database d2 charset=utf8;

  • 创建一个使用 utf8 字符集,并带校对规则的 d3 数据库:create database d3 charset=utf8 collate utf8_general_ci;

创建好如下:

在这里插入图片描述

我们在前面也说过,创建一个数据库其实就是在 Linux 下创建一个目录,这里就不再重复介绍了。

2. 字符集和校验规则

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

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

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

字符集主要是控制用什么语言。比如 utf8 就可以使用中文。

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

		show variables like 'character_set_database';  # 默认字符集
		show variables like 'collation_database';      # 检验规则

如下:

在这里插入图片描述

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

		show charset;

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

		show collation;

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

  • 不区分大小写

创建一个数据库,校验规则使用 utf8_ general_ ci (不区分大小写,即在检验的时候不严格匹配,不对大小写字母进行区分)

		create database test1 collate utf8_general_ci;

随后我们需要使用这个数据库:use test1

然后我们为这个数据库创建一张表,并插入一些数据,创建表和插入的语法我们先不做介绍,后面再介绍;如下:

在这里插入图片描述

接下来我们对这个表的插入结果进行查看,注意,该表的校验方法是不进行区分大小写进行匹配的;所以我们先查看整个表的情况:select * from for_test;

在这里插入图片描述

接下来我们筛选出 a 这个字符:select * from for_test where name='a';

在这里插入图片描述

我们可以看到,数据库在匹配 a 这个字符的时候不进行大小写区分,无论大写还是小写都给我们显示出来了。

  • 区分大小写

创建一个数据库,校验规则使用 utf8_ bin (区分大小写,校验时按照严格匹配的方式,区分大小写)

我们按照上面的方式进行创建,如下图:

在这里插入图片描述

接下来我们查看该表的数据:

在这里插入图片描述

接下来我们筛选出 a 字符:

在这里插入图片描述

如上图,因为该数据库的检验规则为 utf8_ bin,进行区分大小写的方式进行严格匹配,所以筛选出来的字符 a 就是字符 a.

3. 操纵数据库

(1)查看数据库

		show databases;

在这里插入图片描述

(2)显示创建的语句

		show create database 数据库名;

例如:

在这里插入图片描述

说明:

  • MySQL 建议我们关键字使用大写,但是不是必须的;
  • 数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
  • / * !40100 default… * / 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话;

(3)修改数据库

语法:

		ALTER DATABASE db_name
		[alter_spacification [,alter_spacification]...]

alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

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

假设将我们上面创建的 test1 数据库的字符集改成 gbkalter database test1 charset=gbk;

在这里插入图片描述

如上图 test1 数据库的字符集就修改成了 gbk.

4. 数据库删除

语法:

		DROP DATABASE [IF EXISTS] db_ name;

例如我们删掉我们前面建的 test2 数据库:drop database test2;

如下:

在这里插入图片描述

如上图,test2 数据库就被删除了。

执行删除之后的结果:

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

5. 备份和恢复

(1)备份数据库

在备份数据库之前我们先需要退出 mysql.

语法:

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

其中密码部分我们可以不在命令行输入,当我们执行这条命令的时候命令行会提示我们输入。

例如我们把 test1 库备份到文件中:mysqldump -P3306 -uroot -p -B test1 > /home/lmy/test1.sql

在这里插入图片描述

这时,可以打开看看 test1.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。

接下来我们进入 mysql 中,把这个数据库删掉:

在这里插入图片描述

如上图,test1 库就被我们删除了,接下来我们进行还原。

(2)还原

语法:

		source 数据库备份的文件路径;

我们在 mysql 中输入指令:source /home/lmy/test1.sql; 即可在 mysql 中恢复 test1 库:

在这里插入图片描述

(3)拓展

如果备份的不是整个数据库,而是其中的一张表,怎么做?做法如下:

		mysqldump -uroot -p 数据库名 表名1 表名2 > 备份文件路径

如果同时备份多个数据库,如下:

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

如果备份一个数据库时,没有带上 -B 参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用 source 来还原。

6. 查看连接情况

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

语法:

		show processlist;

例如:

在这里插入图片描述

二、表的操作

1. 创建表

语法:

		CREATE TABLE table_name (
			field1 datatype,
			field2 datatype,
			field3 datatype
		) character set 字符集 collate 校验规则 engine 存储引擎;

在创建表之前需要指定数据库,即使用:use 数据库; 为该数据库创建表。

注意,数据库的数据类型我们暂时先不介绍,后续会介绍。

说明:

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

例如我们创建一个 users 表,里面存储用户的 id用户名密码生日

		create table users(
		    -> id int,
		    -> name varchar(20) comment '用户名',
		    -> password char(20) comment '密码',
		    -> birther date comment '生日'
		    -> ) character set utf8 engine MyISAM;

说明:不同的存储引擎,创建表的文件不一样。users 表存储引擎是 MyISAM ,在数据库目录中有三个不同的文件,我们可以进入该目录查看:cd /var/lib/mysql/d1,分别是:

在这里插入图片描述

其中,它们分别表示:

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

db.opt 则是该数据库对应的字符集和检验规则。

2. 查看表

上面我们已经创建好了一张 users 表,此时我们可以查看该数据库有哪些表:show tables;

在这里插入图片描述

3. 查看表结构

语法:desc 表明;

例如查看 users 表的结构:

在这里插入图片描述

以上就是表的结构中的介绍,我们后面会详细介绍每一列的功能的。

4. 修改表

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

		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);  # 删除

例如:

先在 users 表添加两条记录:

	mysql> insert into users values(1, 'a', 'b', '2000-01-01'), 
	    -> (2, 'c', 'd', '2000-01-02');

在这里插入图片描述

  • 在 users 表添加一个字段,用于保存图片路径:alter table users add assets varchar(100) comment '图片路径' after birther;

在这里插入图片描述

插入新字段后,我们查看原表的数据,对原来表中的数据没有影响:

在这里插入图片描述

  • 修改 name,将其长度改成 60: alter table users modify name varchar(60);

在这里插入图片描述

  • 删除 password 列: alter table users drop password;

在这里插入图片描述

我们再查看表中的数据,发现 password 这一列的数据都不见了:

在这里插入图片描述

所以删除字段一定要小心,删除字段及其对应的列数据都没了。

  • 修改表名为 employee: alter table users rename to employee; ,其中 to 可以省略

在这里插入图片描述

  • 将 name 列修改为 xingming: alter table employee change name xingming varchar(60); ,新字段需要完整定义

在这里插入图片描述

5. 删除表

语法:DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

例如:

在这里插入图片描述

再次查看:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录算法训练营 | day56 动态规划 583.两个字符串的删除操作,72.编辑距离

刷题 583.两个字符串的删除操作 题目链接 | 文章讲解 | 视频讲解 题目:给定两个单词 word1 和 word2,找到使得 word1 和 word2 相同所需的最小步数,每步可以删除任意一个字符串中的一个字符。 示例: 输入: "sea", &…

一键修复找不到msvcp140.dll无法继续执行代码的办法,有效修复

电脑出现“找不到msvcp140.dll无法继续执行代码”是什么情况?如果系统中没有这个文件或文件发生损坏,那么在启动某些应用程序或游戏时,可能会遇到错误消息,如“程序无法启动因为msvcp140.dll丢失在您的计算机上”或“找不到msvcp1…

Java方法重写及@Override注解(学习推荐版)

定义 所有类都继承了object类,例如重写object的toString()方法 规则 就近原则 重写的规则总结: ①子类重写的方法的方法名和形参列表与父类被重写的方法的方法名和形参列表相同。 ②子类重写的方法的权限修饰符不小于父类被重写的方法的权限修饰符 …

Java接收并解析HL7协议数据

一、前言 HL7协议相信医疗行业的IT人员都不陌生,笔者由于接触时间比较短,乍一听“协议”还是比较懵,不自觉就把它和“HTTP”、"SOAP”之类的网络协议挂上关联,可事实上这个HL7只是一种数据格式,传输方式也可以使用…

【基础知识】大数据组件YARN简述

YARN是一个分布式的资源管理系统。 YARN是Hadoop系统的核心组件,主要功能包括负责在Hadoop集群中的资源管理,负责对作业进行调度运行以及监控。 ResourceManager 负责集群的资源管理与调度,为运行在YARN上的各种类型作业分配资源。 非HA集…

FreeRTOS-07任务切换 对vPortSVCHandler和xPortPendSVHandler的理解

任务的基本单位是TCB块,相当于任务的身份证,其基本成员包括栈指针,栈所在地址,链表节点地址,如下: FreeRTOS.h typedef struct tskTaskControlBlock {volatile StackType_t *pxTopOfStack; /* 栈顶…

前缀和数组、差分数组、树状数组在Leetcode中的应用

文章目录 前缀和数组、差分数组、树状数组知识简单回顾Leetcode 1109. 航班预订统计Leetcode 307. 区域和检索-数组可修改LeetCode 面试题10.10. 数字流的秩LeetCode 1310. 子数组异或查询LeetCode 1409. 查询带键的排列 前缀和数组、差分数组、树状数组知识简单回顾 之前的文…

揭开`this`的神秘面纱:探索 JavaScript 中的上下文密钥(上)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

c语言编写http服务器(Linux下运行)

参考文章&#xff1a;https://blog.csdn.net/baixingyubxy/article/details/125964986?spm1001.2014.3001.5506 上面是详细讲解&#xff0c;我这篇是总结了他的代码&#xff0c;因为他没给整体代码 所有代码&#xff1a; #include <stdio.h> #include <stdlib.h&g…

Python Django Jet:优化 Django 后台管理

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com 大家好&#xff0c;今天分享 Python 中的 Django Jet 库。 Github项目地址&#xff1a;https://github.com/geex-arts/django-jet Django Jet 是一个强大的 Django 后台管理界面扩展&#xff0c;旨在提供更现代…

人工智能125个常用名词解释

1 什么是人工智能 人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;是指计算机系统通过模拟人类的思维和行为来完成特定任务的技术和方法。人工智能的研究涉及多个学科&#xff0c;包括计算机科学、数学、心理学、哲学等领域。 人工智能可以被分为…

SVM —— 理论推导

SVM 支持向量线性可分最大间隔超平面最大间隔超平面的推导支持向量分类间隔的推导最优化问题 对偶问题拉格朗日乘子法强对偶性 SVM 优化软间隔解决问题优化目标及求解 核函数线性不可分核函数的作用常见核函数 SVM 算法优缺点 支持向量机&#xff08;Support Vector Machine&am…

Collecting package metadata (current_repodata.json): failed(解决方案)

如果有重装过anaconda&#xff0c;在C盘的用户目录下&#xff0c;会有一个名叫.condarc的文件会自动生成。 当使用conda install和conda create命令会出现下面的问题&#xff1a;Collecting package metadata (current_repodata.json): failed 解决方案&#xff1a; 1.打开Anac…

Leetcod面试经典150题刷题记录 —— 双指针篇

双指针篇 1. 验证回文串Python3 2. 判断子序列Python3双指针 3. 两数之和 II - 输入有序数组Python3 4. 盛最多水的容器Python3双指针 5. 三数之和 1. 验证回文串 题目链接&#xff1a;验证回文串 - leetcode 题目描述&#xff1a; 如果在将所有大写字符转换为小写字符、并移除…

Spring Cloud + Vue前后端分离-第6章 通用代码生成器开发

Spring Cloud Vue前后端分离-第6章 通用代码生成器开发 6-1 代码生成器原理介绍 1.增加generator模块&#xff0c;用于代码生成 2.集成freemarker 通用代码生成器开发 FreeMarker 是一款模版引擎&#xff0c;通过模板生成文件&#xff0c;包括html页面&#xff0c;excel …

基于vue+element-plus+echarts制作动态绘图页面(柱状图,饼图和折线图)

前言 我们知道echarts是一个非常强大的绘图库&#xff0c;基于这个库&#xff0c;我们可以绘制出精美的图表。对于一张图来说&#xff0c;其实比较重要的就是配置项&#xff0c;填入不同的配置内容就可以呈现出不同的效果。 当然配置项中除了样式之外&#xff0c;最重要的就是…

腾讯云debian服务器的连接与初始化

目录 1. 远程连接2. 软件下载3. 设置开机自启动 1. 远程连接 腾讯云给的服务器在安装好系统之后&#xff0c;只需要在防火墙里面添加一个白名单&#xff08;ip 或者域名&#xff09;就能访问了。 防火墙添加本机WLAN的IPv4白名单&#xff0c;本地用一个远程工具连接&#xff…

C++设计模式之——命令模式

命令模式 概念创建步骤示例示例一代码实现运行结果 示例二代码实现运行结果 示例三示例代码运行结果 示例四代码实现运行结果 应用场景 概念 命令模式是一种行为型设计模式&#xff0c;它允许将请求封装为一个对象&#xff0c;从而使得可以参数化客户端请求、将请求排队或者记…

npm login报错:Public registration is not allowed

npm login报错:Public registration is not allowed 1.出现场景2.解决 1.出现场景 npm login登录时,出现 2.解决 将自己的npm镜像源改为npm的https://registry.npmjs.org/这个&#xff0c;解决&#xff01;

安防视频云平台/可视化监控云平台EasyCVR获取设备录像失败,该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。GB28181音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视…