【MySQL入门指南】数据库基础DDL操作_数据库ddl操作-程序员宅基地

技术标签: 【MySQL学习笔记】  mysql  数据库  sql  

MySQL库操作

一、SQL语句

  • DDL(data definition language):数据定义语言,用来维护数据表、数据库的属性结构。代表指令有 create/drop/alter
  • DML(data manipulation language):数据操纵语言,用来修改文件内容
  • DCL(Data Control Language):数据控制语言,主要负责数据库的安全和权限管理

​ 在本文中,我们将重点介绍对数据库的增删查改操作。需要注意的是,我们只是修改数据库的属性结构,并没有修改数据库的内容,所以接下来介绍的SQL语句都属于DDL语句。

​ 不同版本的MySQL实际可能会有所不同,本教程所使用地MySQL版本为5.7

二、创建数据库

1.语法
CREATE DATABASE [IF NOT EXISTS] db_name [CHARACTER SET   charset_name] [COLLATE collation_name]

说明:

  • []表示可加可不加
  • CHARACTER SET: 指定数据库采用的字符集。没有则采用配置文件中默认选用的
  • COLLATE: 指定数据库字符集的校验规则。没有则采用配置文件中所默认选用的
  • create、database属于mysql中的关键字。mysql对关键字的大小写不敏感(注意仅仅是对关键字不敏感,但是比如对数据库名,数据表名还是敏感的),为了便于阅读,之后都用小写呈现

(字符集和校验集在后面会介绍)

2.案例
  • 创建一个名为 db1 的数据库

    create database db1;
    
  • 加上 if not exists。只有当目标数据库不存在时才会创建

    image-20230410162253905

  • 创建一个使用 utf-8 字符集的数据库

    create database db2 charset=utf8;  -- 写法1
    create database db2 character set utf8;  -- 写法2
    
  • 创建一个使用 utf-8 字符集,校验集为 utf8_general_ci 的数据库

    create database db3 charset=utf8 collate utf8_general_ci;
    create database db3 charset=utf8 collate=utf8_general_ci;
    
  • 创建一个名字为 create 的数据库。因此create是mysql中的关键字,如果我们需要将以它作为数据库名的话就需要加上 ``。

    create database `create`
    

​ 字符集和校验集如果没有被设置,则采用默认设置的;否则根据就近原则,采用用户所指定的。在一般情况下,都不推荐用户自己设置字符集和校验集

3.极其不推荐的方式

​ 当我们创建一个数据库的时候,在物理层面上,本质就是在 var/lib/mysql 路径下为我们为我们创建对应的文件夹:

image-20230410163949437

​ 如果我们手动的在这个路径下创建目录,虽然也会被mysql识别成数据库,但这样的做法是不推荐的。就好比你的领导的领导直接给你发任务,这样显然乱了套。

image-20230410164141431

image-20230410164214654

三、查看数据库

1.语法
show databases;   -- 显示所有的数据库
show create database db_nams  -- 显示创建一个数据库的指令

image-20230410164522960

image-20230410164354443

四、修改数据库

基本语法:

ALTER DATABASE db_name [alter_spacification……]

常用修改:

  • 修改字符集与校验集

    alter database db1 charset=gbk;
    

    image-20230411193031532

    ​ 对比修改前和修改后,我们发现虽然我们只修改了字符集,编码集也会自动调整为相对应的。而且数据库创建语句也会发生变化

    image-20230411193225025

  • 注意在mysql 5.7下是不支持修改数据库名称的。本身修改数据库名称的行为就是极其不推荐的,在开始时就应该明确,否则容易影响到上层业务。

五、删除数据库

drop database [if exists] db_ name;

删除数据库时,会将数据库中的所有内容都删除。需要慎重!

六、字符集与校验规则

1.是什么
  • 字符集是指用于表示字符的编码规则。在 MySQL 中,字符集决定了如何存储字符数据,以及如何将字符数据传递给客户端。MySQL 支持多种字符集,这些字符集的选择会影响到数据存储的可靠性、数据传输的正确性以及文本比较、排序等操作的结果。​
  • 校验规则是用于规定字符数据的比较方法。在 MySQL 中,校验规则决定了如何比较字符串,包括如何区分大小写、如何对不同字符进行排序等。MySQL 支持多种校验规则,这些规则在不同场合下可能会产生不同的比较结果。正确选择校验规则可以保证数据比较、排序等操作的正确性

image-20230411085554502

数据库文件夹中的 dp.opt 文件就保存着该数据库所采用的字符集和校验集

2.相关指令
  • 查看数据库默认使用的字符集以及校验规则

    show variables like 'character_set_database';
    show variables like 'collation_database';
    

    image-20230411084407360

  • 使用模糊查询看到更多内容

    show variables like 'character%';
    show variables like 'collation%';
    

    image-20230411084550805

  • 查看数据库支持的所有字符集。可以看到每个字符集默认匹配一个校验集

    show charset;
    

    image-20230411084742476

    (部分)

  • 查看数据库支持的所有校验集。一个字符集实际上可以对应多个校验集

    show collation;
    

    image-20230411084936410

3.校验规则的影响

​ 我们在前面提到,校验集用于字符数据之间的比较。校验集的不同也会影响大小写区分和排序等。

  • 创建两个不同字符集的数据库
create database db2 collate utf8_general_ci; -- 不区分大小写	
create database test2 collate utf8_bin; -- 区分大小写	
  • 分别插入以下数据
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');
  • 查询结果:
select * from person where name='a';

image-20230411091902442

  • 排序结果
select* from person order by name

image-20230411092130302

七、备份数据库

1.基本语法

​ 我们前面提到,数据库在物理层面上,本质就是 var/lib/mysql路径下的一个文件夹,而数据表则是文件夹中的一个文件。我们要想拷贝一个数据库,虽然也可以粗暴的使用cp指令复制文件夹来实现对数据库的复制,但同样这样的行为是极其不推荐的。

​ MySQL提供了一个命令行工具 mysqldump,专门用来备份和还原mysql数据库。其使用方法如下:

mysqldump -P 3306 -uroot -p password -B database > backup.sql

说明:

  • -P说明mysql服务端的端口号
  • -uroot 等价于 -u root,写法上都可以
  • -p说明数据库的密码
  • -B说明需要备份的数据库名
  • > backup.sql 表示将数据结果重定向到backup.sql文件中,否则会输出到屏幕上

​ 我们从下面的保存结果中不难发现,数据库备份本质上并不是为我们备份具体的数据,而是为我们保存创建数据库的历史SQL语句(MySQL会为我们做优化)。这样做除了可以备份数据本身之外,还可以包含数据库的完整结构、约束、触发器、存储过程等信息,这样在备份还原时可以更好的保证数据的一致性可靠性

image-20230411195515903

复原的方式如下(mysql下的指令):

source xxx  -- 复原xx路径下的文件
2.注意事项
  • 如何只备份数据库中的一张或多张表?

     mysqldump -u root -p 数据库名 表名1 表名2 > /mytest.sql
    
  • 如何同时备份多个数据库

    mysqldump -u root -p -B 数据库名1 数据库名2 ... > /mytest.sql
    
  • 如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库(create),然后使用数据库(use),再使用source来还原

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/whc18858/article/details/130122137

智能推荐

分布式光纤传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告_预计2026年中国分布式传感器市场规模有多大-程序员宅基地

文章浏览阅读3.2k次。本文研究全球与中国市场分布式光纤传感器的发展现状及未来发展趋势,分别从生产和消费的角度分析分布式光纤传感器的主要生产地区、主要消费地区以及主要的生产商。重点分析全球与中国市场的主要厂商产品特点、产品规格、不同规格产品的价格、产量、产值及全球和中国市场主要生产商的市场份额。主要生产商包括:FISO TechnologiesBrugg KabelSensor HighwayOmnisensAFL GlobalQinetiQ GroupLockheed MartinOSENSA Innovati_预计2026年中国分布式传感器市场规模有多大

07_08 常用组合逻辑电路结构——为IC设计的延时估计铺垫_基4布斯算法代码-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏12次。常用组合逻辑电路结构——为IC设计的延时估计铺垫学习目的:估计模块间的delay,确保写的代码的timing 综合能给到多少HZ,以满足需求!_基4布斯算法代码

OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版-程序员宅基地

文章浏览阅读3.3k次,点赞3次,收藏5次。OpenAI Manager助手(基于SpringBoot和Vue)_chatgpt网页版

关于美国计算机奥赛USACO,你想知道的都在这_usaco可以多次提交吗-程序员宅基地

文章浏览阅读2.2k次。USACO自1992年举办,到目前为止已经举办了27届,目的是为了帮助美国信息学国家队选拔IOI的队员,目前逐渐发展为全球热门的线上赛事,成为美国大学申请条件下,含金量相当高的官方竞赛。USACO的比赛成绩可以助力计算机专业留学,越来越多的学生进入了康奈尔,麻省理工,普林斯顿,哈佛和耶鲁等大学,这些同学的共同点是他们都参加了美国计算机科学竞赛(USACO),并且取得过非常好的成绩。适合参赛人群USACO适合国内在读学生有意向申请美国大学的或者想锻炼自己编程能力的同学,高三学生也可以参加12月的第_usaco可以多次提交吗

MySQL存储过程和自定义函数_mysql自定义函数和存储过程-程序员宅基地

文章浏览阅读394次。1.1 存储程序1.2 创建存储过程1.3 创建自定义函数1.3.1 示例1.4 自定义函数和存储过程的区别1.5 变量的使用1.6 定义条件和处理程序1.6.1 定义条件1.6.1.1 示例1.6.2 定义处理程序1.6.2.1 示例1.7 光标的使用1.7.1 声明光标1.7.2 打开光标1.7.3 使用光标1.7.4 关闭光标1.8 流程控制的使用1.8.1 IF语句1.8.2 CASE语句1.8.3 LOOP语句1.8.4 LEAVE语句1.8.5 ITERATE语句1.8.6 REPEAT语句。_mysql自定义函数和存储过程

半导体基础知识与PN结_本征半导体电流为0-程序员宅基地

文章浏览阅读188次。半导体二极管——集成电路最小组成单元。_本征半导体电流为0

随便推点

【Unity3d Shader】水面和岩浆效果_unity 岩浆shader-程序员宅基地

文章浏览阅读2.8k次,点赞3次,收藏18次。游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S..._unity 岩浆shader

广义线性模型——Logistic回归模型(1)_广义线性回归模型-程序员宅基地

文章浏览阅读5k次。广义线性模型是线性模型的扩展,它通过连接函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。广义线性模型拟合的形式为:其中g(μY)是条件均值的函数(称为连接函数)。另外,你可放松Y为正态分布的假设,改为Y 服从指数分布族中的一种分布即可。设定好连接函数和概率分布后,便可以通过最大似然估计的多次迭代推导出各参数值。在大部分情况下,线性模型就可以通过一系列连续型或类别型预测变量来预测正态分布的响应变量的工作。但是,有时候我们要进行非正态因变量的分析,例如:(1)类别型.._广义线性回归模型

HTML+CSS大作业 环境网页设计与实现(垃圾分类) web前端开发技术 web课程设计 网页规划与设计_垃圾分类网页设计目标怎么写-程序员宅基地

文章浏览阅读69次。环境保护、 保护地球、 校园环保、垃圾分类、绿色家园、等网站的设计与制作。 总结了一些学生网页制作的经验:一般的网页需要融入以下知识点:div+css布局、浮动、定位、高级css、表格、表单及验证、js轮播图、音频 视频 Flash的应用、ul li、下拉导航栏、鼠标划过效果等知识点,网页的风格主题也很全面:如爱好、风景、校园、美食、动漫、游戏、咖啡、音乐、家乡、电影、名人、商城以及个人主页等主题,学生、新手可参考下方页面的布局和设计和HTML源码(有用点赞△) 一套A+的网_垃圾分类网页设计目标怎么写

C# .Net 发布后,把dll全部放在一个文件夹中,让软件目录更整洁_.net dll 全局目录-程序员宅基地

文章浏览阅读614次,点赞7次,收藏11次。之前找到一个修改 exe 中 DLL地址 的方法, 不太好使,虽然能正确启动, 但无法改变 exe 的工作目录,这就影响了.Net 中很多获取 exe 执行目录来拼接的地址 ( 相对路径 ),比如 wwwroot 和 代码中相对目录还有一些复制到目录的普通文件 等等,它们的地址都会指向原来 exe 的目录, 而不是自定义的 “lib” 目录,根本原因就是没有修改 exe 的工作目录这次来搞一个启动程序,把 .net 的所有东西都放在一个文件夹,在文件夹同级的目录制作一个 exe._.net dll 全局目录

BRIEF特征点描述算法_breif description calculation 特征点-程序员宅基地

文章浏览阅读1.5k次。本文为转载,原博客地址:http://blog.csdn.net/hujingshuang/article/details/46910259简介 BRIEF是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度..._breif description calculation 特征点

房屋租赁管理系统的设计和实现,SpringBoot计算机毕业设计论文_基于spring boot的房屋租赁系统论文-程序员宅基地

文章浏览阅读4.1k次,点赞21次,收藏79次。本文是《基于SpringBoot的房屋租赁管理系统》的配套原创说明文档,可以给应届毕业生提供格式撰写参考,也可以给开发类似系统的朋友们提供功能业务设计思路。_基于spring boot的房屋租赁系统论文