数据库和表的操作

news2024/11/17 5:32:44

文章目录

  • 前言
  • 一、库的操作
    • 创建数据库
    • 字符集和校验规则
    • 操纵数据库
      • 查看数据库
      • 显示创建语句
      • 修改数据库
      • 删除数据库
      • 备份和恢复
      • 数据库还原
      • 查看连接情况
  • 二、表的操作
    • 创建表
    • 查看表结构
    • 修改表
      • 修改表名
      • 添加一列
      • 修改某一列属性
      • 删除某一列
    • 删除表


前言


一、库的操作

创建数据库

语法:

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: 指定数据库字符集的校验规则
    我们看到创建一个目录后,Linux的/var/lib/mysql下也会出现对应的目录。
    在这里插入图片描述
    我们也可以在创建数据库时进行判断,如果当前数据库已存在,那么就不再创建。
    在这里插入图片描述
    我们还可以在创建数据库时,指定这个数据库的字符集和校验规则。
    下面为创建一个使用utf8字符集的数据库。使用下面的两种方式都可以指定数据库的字符集。
    在这里插入图片描述
    下面创建一个使用utf8字符集,并且校对规则为utf8_general_ci的数据库。
    在这里插入图片描述
    当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_general_ ci

字符集和校验规则

创建数据库的时候还可以设置两个编码集:

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

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

我们可以通过下面的命令来查看系统默认字符集以及校验规则。

show variables like 'character_set_database';  //查看默认字符集
show variables like 'collation_database';   //查看默认校验规则

在这里插入图片描述
可以看到数据库默认的字符集和配置文件中的一致。
在这里插入图片描述

我们可以通过下面的命令来查看数据库支持的字符集。字符集主要是控制用什么语言。比如utf8就可以使用中文。

show charset;

在这里插入图片描述
我们可以通过下面的命令查看数据库支持的字符集校验规则。字符集效验规则可用于数据库比较数据时使用。

show collation;

在这里插入图片描述
下面我们来体会校验规则对数据库的影响。
我们创建一个数据库,校验规则使用utf8_general_ci(该校验规则不区分大小写)。然后再创建一个表,并且向表里面插入数据。
在这里插入图片描述
然后我们查看表中name为’a’的数据。我们看到name为’a’和’A’的数据都被显示出来了。
在这里插入图片描述
下面我们再创建一个数据库,这个数据库的校验规则使用utf8_ bin(该校验规则区分大小写)。
在这里插入图片描述
然后我们查看表中name为’a’的数据。然后我们看到只有name为’a’的数据被查询到。即校验规则会对数据库的数据比较造成影响。
在这里插入图片描述
下面我们将两个数据库的person表中的数据进行排序。在test1中,不会区分大小写,所以会将’a’和’A’都放到一起。而在test2中会区分大小写,所以排序时会按照ASCII码进行排序。
在这里插入图片描述

操纵数据库

查看数据库

show databases;

在这里插入图片描述
查看自己当前在哪个数据库中,可以使用下面的命令。

select database();

在这里插入图片描述

显示创建语句

我们看到显示的创建数据库时的语句和我们自己输入的不一样,这是因为数据库将我们输入的语句进行了规范化。
MySQL 建议我们关键字使用大写,但是不是必须的。
数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
/*!40100 default… */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话。

show create database 数据库名;

在这里插入图片描述

修改数据库

对数据库的修改主要指的是修改数据库的字符集,校验规则。
下面为将 test5 数据库字符集改成 gbk。

alter database test5 charset=gbk;

在这里插入图片描述
下面为将test5数据库的校验规则改为gbk_chinese_ci。

alter database test5 collate gbk_chinese_ci;

在这里插入图片描述
我们看到当我们修改了数据库后,查看数据库创建时的语句时,发现语句也被更改了。
在这里插入图片描述

删除数据库

drop database if exists 数据库名;

当数据库被删除后,数据库内部看不到对应的数据库。对应的数据库文件夹被删除,级联删除,里面的数据表全部被删。
在这里插入图片描述

备份和恢复

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

例如下面将数据库test4备份当前目录下的test4.sql。

mysqldump -P3306 -uroot -p -B test4 > test4.sql

在这里插入图片描述
我们查看test4.sql这个文件可以看到其实就是把我们整个创建数据库,建表,导入数据的语句都装载这个文
件中。
在这里插入图片描述

数据库还原

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

例如下面我们将数据库test4删除,然后再使用备份文件test4.sql恢复数据库test4。

source /home/drh/pro/test4.sql

在这里插入图片描述
在这里插入图片描述
如果我们备份的不是整个数据库,而是一张表时,可以使用下面的语句。

mysqldump -u root -p 数据库名 表名1 表名2 > /home/drh/pro/test.sql

如果我们同时备份多个数据库时,可以使用下面的语句。

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

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

查看连接情况

我们可以通过下面的语句来查看数据库连接情况。这个语句可以告诉我们当前有哪些用户连接到我们的MySQL。

show processlist

在这里插入图片描述

二、表的操作

创建表

语法:

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

说明:

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

下面我们创建两个字符集为utf8,校验规则为utf8_general_ci,但是存储引擎不同的数据表。我们看到不同的存储引擎,创建表的文件不一样。
user1 表存储引擎是 MyISAM ,在数据目中有三个不同的文件,分别是:

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

user2表存储引擎是 innoDB ,在数据目中有两个个不同的文件,分别是:

user2.frm
user2.ibd

如果我们创建表时没有指定存储引擎,那么就会使用配置文件中的默认存储引擎。
在这里插入图片描述

查看表结构

查看当前数据库中的所有表

show tables;  //查看当前数据库中的表

在这里插入图片描述

查看某一个表的详细信息。

desc 表名;

在这里插入图片描述
我们还可以通过下面的命令查看创建表时的语句。我们看到据库记录的表创建语句和我们输入的不一样,这是因为数据库记录的是优化后的语句

show create table 表名 \G;  //加上\G可以格式化显示

在这里插入图片描述

修改表

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

修改表名

修改表user1的名称为user。其中to可以省略。

//修改表user1的名称为user
alter table user1 rename to user;

在这里插入图片描述

添加一列

下面为在user表中添加一列用来记录用户头像路径,并且这一列在birthday后面。

alter table user add image_path varchar(128) comment '用户头像路径' after birthday;

在这里插入图片描述

修改某一列属性

下面我们修改name列的长度为60。我们可以看到修改列属性为覆盖式修改。并且当修改表后,数据库中记录的表创建语句也会跟着更改。
在这里插入图片描述

删除某一列

下面我们删除user表中的password这一列。

alter table user drop password;

在这里插入图片描述

删除表

语法:

DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ...

下面我们删除表user2。

drop table user2;

在这里插入图片描述

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

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

相关文章

基于springboot+vue的个人健康管理系统(有文档、Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

大创项目推荐 深度学习猫狗分类 - python opencv cnn

文章目录 0 前言1 课题背景2 使用CNN进行猫狗分类3 数据集处理4 神经网络的编写5 Tensorflow计算图的构建6 模型的训练和测试7 预测效果8 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 **基于深度学习猫狗分类 ** 该项目较为新颖&a…

小魔推行业玩法:生活美容怎么做短视频矩阵?

如今每个实体老板都想让自己生意做的更好,那就需要有更多获取流量的方式,获得大量的同城曝光;在市场内卷的状况下,通过短视频来做门店引流无疑是绝佳的方式,让更多同城的用户知晓自己的门店,这个时候通过小…

flask web服务器:运行在云服务器上的最简单的web服务器

上期文章我们分享了flask的基础知识以及如何安装flask,当你安装完成flask后,我们就可以打造自己的web服务器了。 首先我们打印最简单的hello world,并在浏览器中显示 from flask import Flask app Flask(__name__)app.route(/) def index():return he…

【网络安全】【密码学】【北京航空航天大学】实验二、数论基础(中)【C语言和Java实现】

实验二、数论基础(中) 一、实验内容 1、扩展欧几里得算法(Extended Euclid’s Algorithm) (1)、算法原理 已知整数 a , b ,扩展的欧几里得算法可以在求得 a , b 的最大公约数的同时,找到一对…

顺序图作业

顺序图作业 一. 简答题(共7题,100分) (简答题) 交互是什么?请举 2-3 个交互的实际例子。 正确答案: 一次交互就是指在特定语境中, 为了实现某一个目标, 而在一组对象之间进行交换的一组 消息所…

字体包大小缩小的软件

Fontmin - 字体子集化方案https://ecomfe.github.io/fontmin/#app

JAVA制造业MES生产管理系统源码 MES源码

JAVA制造业MES生产管理系统源码 MES源码 开发环境:jdkeclipsetomcatmavenmysql 开发工具:MyEclipse 系统说明: MES制造执行系统,其定位于制造执行系统的Java开源版本,系统包括系统管理,车间基础数据建模&am…

Oracle DBCA工具图形化方式检测不到ASM磁盘组(解决各种报错)

本例环境: 操作系统OEL 6.5数据库版本:11.2.0.4 问题:DBCA建库的时候,检测不到ASM磁盘组 因素一: 可能是在授权的时候执行了 chown –R 775 /u01/app等修改权限。 分析:数据库无法连接ASM,这应该是权限…

代码随想录算法训练营第2天 | 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II

数组理论基础 文章链接:https://programmercarl.com/%E6%95%B0%E7%BB%84%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 977.有序数组的平方 题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/description/ 思路1.暴力排序 将每个数平…

国科 GK7201V200 SOC芯片

1.概述 GK7201V200 芯片是国科推出的新一代高集成度、高画质、低码率、低功耗的 AI IP Camera SoC 芯 片。 芯片集成 ARM Cortex A7 处理器,支持专业的 ISP 图像处理单元,H.265/H.264 视频编码,满足客户 差异化业务需求。同时集成了 Ethe…

国产六核CPU商显板,三屏异显,米尔基于全志D9360开发板

芯驰D9-Pro 自主可控、安全可信的高性能商显方案 采用国产CPU:集成了6个ARM Cortex-A551.6GHz 高性能CPU和1个ARM Cortex-R5800MHz; 高性能的高安全HSM安全的处理器,支持TRNG、AES、RSA、SHA、SM2/3/4/9; 它包含100GFLOPS 3D G…

打印的前后顺序

面试题经常会有 <script>console.log(1)setTimeout(function(){console.log(2)})console.log(3)let pnew Promise((resolve,reject) >{console.log(4)resloved(hhhhhh)})p.then(res >{console.log(res)console.log(5)},res >{console.log(7)})console.log(6)&l…

如何进行大数据系统测试

大数据系统常见的架构形式有如下几种&#xff1a; Hadoop架构&#xff1a; Hadoop Distributed File System (HDFS)&#xff1a;这是一种分布式文件系统&#xff0c;设计用于存储海量数据并允许跨多台机器进行高效访问。 MapReduce&#xff1a;作为Hadoop的核心计算框架&#…

JBOD详解

JBOD是存储领域中一类重要的存储设备。 英文全称Just a bunch of disks, 中文也称之为硬盘存储扩展柜。 它是传统存储系统赖以生存的根基之一&#xff0c;如果没有JBOD&#xff0c;那一下子就会省去很多部件&#xff1a;后端HBA、SAS扩展器/FC成环器、线缆、JBOD控制模块等等…

高周期的伦敦金交易机会转到低周期做 不可以吗?

一般的市场观点认为&#xff0c;交易信号出现在越高的时间周期上就越准确&#xff0c;成功的概率就越高。而低时间周期的信号&#xff0c;要推动高时间周期行情的发展&#xff0c;那几乎是不可能。因此多数人认为从高周期转到低周期&#xff0c;然后去捕捉高周期行情机会&#…

强化学习应用(二):基于Q-learning的无人机物流路径规划研究(提供Python代码)

一、Q-learning简介 Q-learning是一种强化学习算法&#xff0c;用于解决基于马尔可夫决策过程&#xff08;MDP&#xff09;的问题。它通过学习一个价值函数来指导智能体在环境中做出决策&#xff0c;以最大化累积奖励。 Q-learning算法的核心思想是通过不断更新一个称为Q值的…

GIS数据

version: 0.2 文章目录 1. GIS 数据类型2. 矢量2.1 Shapefile2.1.1 Wiki介绍2.1.2 重点总结2.1.3 样例 2.2 GeoJSON2.2.1 Wiki介绍2.2.2 重点总结2.2.3 样例 3. 栅格3.1 GeoTIFF3.1.1 Wiki介绍3.1.2 重点总结3.1.3 样例 4. 矢量栅格4.1 GeoPackage4.1.1 Wiki介绍4.1.2 重点总结…

3dmax灯光缓存参数怎么设置?解析来了!

细分&#xff1a;用来决定灯光缓存的样本数量&#xff0c;样本数量以此数值的平方来计算。数值越高&#xff0c;效果越好&#xff0c;速度越慢。一般出图建议1000到1800之间已经足够了。 采样大小&#xff1a;用来控制灯光缓存的样本尺寸大小&#xff0c;较小的数值意味着较小…

FastAdmin西陆教育系统(xiluEdu)开源代码

应用介绍 一款基于FastAdminThinkPHPUniapp开发的西陆教育系统&#xff08;微信小程序、移动端H5、安卓APP、IOS-APP&#xff09;&#xff0c;以下是教育系统所包含的一些功能&#xff1a; 视频课程&#xff1a;教育系统提供在线视频课程&#xff0c;学生可以通过网络观看教师…