MySQL使用教程:数据库、表操作

目录

  • 1. 免密码登录MySQL
    • 1.1 免密码配置
    • 1.2 登录选项介绍
  • 2. MySQL基础配置:my.cnf
  • 3. 开机自启动设置(可选设置)
  • 4. 查看存储引擎
  • 5. 查看系统的编码规则和校验规则
  • 6. 数据库的操作
    • 6.1 查看数据库
    • 6.2 创建数据库 create database
    • 6.3 删除数据库 drop database
    • 6.4 使用数据库 use
    • 6.5 修改数据库 alter database
  • 7. 表的操作
    • 7.1 创建表 create table
    • 7.2 查看表结构 desc
    • 7.3 修改表 alter table
      • 7.3.1 修改表名称 rename
      • 7.3.2 添加字段(列)add
      • 7.3.3 修改字段属性 modify
      • 7.3.4 修改字段名称 change
      • 7.3.5 删除字段(列) drop
    • 7.3 删除表 drop table

1. 免密码登录MySQL

对于新人来说安装好的MySQL,登录是非常头疼的,因此在这里先来设置个免密码操作,后续会将登录设置,设置回来。

接下来进入正题:

1.1 免密码配置

首先免密码登录要直接对MySQL的配置文件进行修改,跳过密码认证环节,操作如下:

  • 先用 vim 打开 更目录下 etc 中的 my.cnf文件
vim /etc/my.cnf

在这里插入图片描述

  • 接下来在27行的下一行加上这么一行代码:
skip-grant-tables

在这里插入图片描述
输入:wq之后保存并且退出。

注意一定要将配置内容写对,否则无法生效。

  • 将MySQL服务(mysqld)重启,重启方式如下:
  • 方法一:终端输入两条指令,先将MySQL服务先停止,然后再启动
    systemctl stop mysqld
    systemctl start mysqld
  • 方法二:直接重启MySQL服务
    systemctl restart mysqld

1.2 登录选项介绍

接下来就是登录mysql了:

mysql -uroot -p   //这里使用的是root登录
  • -u选项的后面是登录MySQL用户名称,之间是否带空格影响都不大。
  • -p 选项表示使用密码登录

输入上述登录指令后,终端还是要你输入密码,此时只需要直接回车即可:

在这里插入图片描述
其他选项介绍:

  • -h 选项表示要指定连接的主机地址
mysql -h 127.0.0.1  -u root -p    //127.0.0.1表示本地环回地址
  • -G 选项表示访问特定主机的特定端口号
mysql -G 3306 -u root -p         //访问端口号为3306

上面提到的选项,在登录时可以不加,会有默认值。

例如:不加 -h 选项默认连接本地主机, 不加 -G 表示默认使用配置文件的端口号,配置文件会在接下来讲到。

2. MySQL基础配置:my.cnf

安装好的MySQL在使用前一些默认值是有一些问题的,在使用前我们需要将MySQL配置文件进行修改一下。

  • 用 vim 打开 etc 下的 my.cnf 文件:
vim /etc/my.cnf

在这里插入图片描述

  1. 绑定端口号:3306,这个是MySQL默认端口号
    在光标位置,加入这么一行代码:port=3306
    在这里插入图片描述
  2. 配置编码格式:utf8
    在光标位置,加入这么一行代码:character-set-server=utf8
    在这里插入图片描述
  3. 设置存储引擎:innodb
    在光标位置,加入这么一行代码:default-storage-engine=innodb
    在这里插入图片描述

配置好后重启MySQL服务即可,重启方式上面提到过这里不再赘述。

3. 开机自启动设置(可选设置)

终端输入两条指令:

systemctl enable mysqld
systemctl daemon-reload

提示:在MySql中每个语句写完后都需要带上分号。

4. 查看存储引擎

show engines;

在这里插入图片描述

5. 查看系统的编码规则和校验规则

  1. 查看编码规则:
show chaset;

在这里插入图片描述

  1. 查看校验规则:
show collation;

在这里插入图片描述

6. 数据库的操作

6.1 查看数据库

show databases;

在这里插入图片描述

  • 查看当前处于哪个数据库位置
select database();

在这里插入图片描述

  • 查看创建数据库时的细节
show create database 数据库名称;

在这里插入图片描述
/*!40100 DEFAULT CHARACTER SET gbk */ 这串代码大致意思为:

  1. !40100:如果当前数据库版本大于 40100 那么就执行后边代码。
  2. CHARACTER SET gbk:数据库创建时使用的编码规则为 gbk。

6.2 创建数据库 create database

  • 在Linux下,创建一个数据库实际上就是在 /var/lib/mysql 目录中创建了一个目录
  1. 简单创建数据库
create database 数据库名称;

在这里插入图片描述

  1. 防止重复创建数据库
create database if not exists 数据库名称;

表示当前数据库如果不存在,那么就会创建该数据库;否则不会创建。(带上该选项也是为了安全考虑,防止重复创建数据库造成数据库内容丢失)

在这里插入图片描述

  1. 创建数据库时指定编码集和校验集
  • 数据库编码集:未来数据库存储的编码集
  • 数据库校验集:支持数据库进行字段比较使用的编码,本质也是一种读取数据库中数据的采用的编码格式

数据库编码集和校验集的设置,是为了数据库无论对数据做任何操作时,都必须保证编码是一致的。

  • 指定 编码集 创建数据库

方法一:

create database student charset=utf8; //指定 utf8 为编码集

方法二:

create database student character set utf8; //指定 utf8 为编码集
  • 指定 编码集 和 校验集 创建数据库
create database student charset=utf8 collate utf8_general_ci; //指定 utf8 为编码集,utf8为校验集(不区分大小写)
create database student charset=utf8 collate utf8_bin; //指定 utf8 为编码集,utf8为校验集(区分大小写)

6.3 删除数据库 drop database

  • 在Linux下,删除数据库相当于在/var/lib/mysql 删除目录操作
drop database 数据库名称;

在这里插入图片描述
不建议随随便便删除数据库,因为删除数据库对应的级联、数据表的内容会被全部删除!!!

6.4 使用数据库 use

use 数据库名称;

这里输入 use 操作好比在 Linux 文件系统中 cd 进入一个目录下操作类似:
在这里插入图片描述

6.5 修改数据库 alter database

  • 修改数据库的 编码集 和 校验集
alter database 数据库名 charset=编码 collate 校验集;

在这里插入图片描述
将数据库的编码集设置为 gbk ,校验集设置为 gbk_chinese_ci。

7. 表的操作

7.1 创建表 create table

  • Linux下,在数据库内部创建表,实际上就是在当前目录(数据库)下创建一个文件(数据库表)

语法

create table if not exists 表名 (filed1 datatype comment 描述内容,filed2 datatype comment 描述内容,filed3 datatype comment 描述内容,... 
)charset=字符集 collate=校验规则 engine=存储引擎; #注意最后加分号
  1. if not exists 表示该表存在时不会创建,不存在才创建
  2. filed 表示列名
  3. datatype 表示表的列的类型
  4. comment 表示对字段内容进行描述

注意:字符集和校验集在没有指定时,会默认使用 my.cnf 配置文件里设置的。

创建表时,使用不同的存储引擎会在对应数据库目录下创建不同的表结构

举个例子:

  1. 首先在mysql中创建一个 student 学生表,然后进到 /var/lib/mysql/ 路径(需要获得权限),此时可以看到刚刚创建的 student 数据库:
    在这里插入图片描述
    在这里插入图片描述
    进入 student 目录:
    在这里插入图片描述

  2. 此时在 mysql 中创建分别使用不同的存储引擎创建表:
    第一张表使用 MyIsam 存储引擎
    在这里插入图片描述
    查看对应 student 目录下内容,对应 stu1 出现了 .MYD.MYI(表示这两个文件都是 MyIsam 存储引擎创建的)
    在这里插入图片描述

第二张表使用 InnoDB 存储引擎
在这里插入图片描述
查看对应 student 目录下内容,对应 stu2 出现了只有一个 .ibd(.idb 表示使用InnoDB存储引擎创建的文件)
在这里插入图片描述

7.2 查看表结构 desc

  • 表结构
desc dbases;

desc 表示单词(描述)的前四个字母
在这里插入图片描述
在这里插入图片描述

  • 查阅创建表时的详细信息
show create table 表名称 \G;

在这里插入图片描述

\G格式化显示,过滤分隔符。

7.3 修改表 alter table

7.3.1 修改表名称 rename

alter table 表名称 rename 新表名称

现在有这样的一张表:
在这里插入图片描述
将表名称修改为 student :
在这里插入图片描述

7.3.2 添加字段(列)add

alter table 表名称 add 字段名 字段类型(大小) comment '字段描述' after 指定列的所在位置;

这里 comment 和 after 不是必须设置,不加 after 创建的字段会生成到表的最后位置

举个例子,表中内容如下:
在这里插入图片描述
此时增加一个出生年月日的字段,要求加到年龄字段的后面

在这里插入图片描述
新增列内容是不存在的,所以显示NULL

7.3.3 修改字段属性 modify

alter table 表名称 modify 字段属性(大小) comment '字段描述';

提示:修改字段属性不会对表中已有的数据进行修改。修改字段属性实际上是覆盖(将新的字段属性覆盖原有的字段属性)

修改字段属性前 student 表的信息如下:
在这里插入图片描述

student 表字段属性:
在这里插入图片描述

将 student 表中的name字段属性 varchar(20) 更改为 varchar(50),不加comment进行字段修饰
在这里插入图片描述

此时再来查看一下student表的信息,会发现 name 字段的描述不见了。
在这里插入图片描述

在修改字段属性时,建议将原来的描述字段的信息也加上,避免修改后字段属性覆盖了原来描述字段的内容

在这里插入图片描述

7.3.4 修改字段名称 change

alter table student change 字段名 新字段名 字段类型(大小) comment '字段描述';

修改字段名称时也时要将原有的字段描述带上

student 表:
在这里插入图片描述

将表中的 name字段修改成 xingming :
在这里插入图片描述

7.3.5 删除字段(列) drop

alter table 表名称 drop 字段名称;

student 表:
在这里插入图片描述

将 age 字段删除:
在这里插入图片描述

注意:删除一个表中的字段会将表中对应字段的所有内容都删除,在进行删除操作时要慎重!!!

7.3 删除表 drop table

drop table 表名;

示例:

在这里插入图片描述

删除 person表:
在这里插入图片描述

数据库是所有业务中最靠近底层的后端的,修改表字段操作往往也会影响到上层软件,对表中的内容修改也需要将上层软件代码进行修改。因此,对数据库的表进行修改或是删除时都要认真考虑,慎重!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

航空实时监控

1、从Kafka中读取飞机数据,并进行清洗 此步骤在前面的“使用Spark清洗统计业务数据并保存到数据库中”任务阶段应该已经完成。如果没有完成,请参考源代码自行完成。核心类主要有三个:SparkStreamingApplication类、SparkUtil类和MapManager类…

3.1 SQL概述

SQL(Structured Query Language) 结构化查询语言,是关系数据库的标准语言 SQL是一个通用的、功能极强的关系数据库语言 功能:查询,数据库模式创建,数据库数据的插入与修改,数据库完整性、安全…

pytest之fixture结合conftest.py文件使用+断言实战

pytest之fixture结合conftest.py文件使用 conftest.py--存放固件固件的优先级pytest执行流程pytest之断言实战pytest结合allure-pytest插件生成美观的报告 conftest.py–存放固件 在一个项目的测试中,大多数情况下会有多个类、模块、或者包要使用相同的测试夹具。这…

如何使用PHP和RabbitMQ实现延迟队列(方式一)?

前言 今天我们来做个小试验,用PHP和RabbitMQ实现消息队列的延迟功能。 前期准备,需要安装好docker、docker-compose的运行环境。 需要安装RabbitMQ的可以看下面这篇文章。 如何使用PHP和RabbitMQ实现消息队列?-CSDN博客 一、安装RabbitM…

哪个品牌男裤子版型好看?男士春夏季裤子推荐!

最近逐渐开始天气变热,很多朋友都开始挑选换季的衣服了。不过不少朋友都表示现在的男生裤子实在太难选,不仅款式品牌多如牛毛,而且市面上还有不少质量不好的衣裤。 所以我这段时间特别购买了一批衣服回来测评并且上身试穿,今天就…

Vscode循环弹出窗口输入密码的窗口 ‘s password:

今天使用Vscode,连接远程服务器一直不断的弹出窗口,要求输入密码,导致无法显示远程文件。误以为是产品id没有上传成功,导致服务器内没有commid id对应的文件。参考vscode通过ssh链接服务器卡在downloading with wget,但是处理完仍…

java算法第32天 | 贪心算法 part02 ● 122.买卖股票的最佳时机II ● 55. 跳跃游戏 ● 45.跳跃游戏II

122.买卖股票的最佳时机II 本题中理解利润拆分是关键点! 不要整块的去看,而是把整体利润拆为每天的利润。假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。 相当于(prices[3] - prices[2]) (prices[…

STM32不使用中断实现定时器微秒级精确延时

我们在写代码的时候避免不了要使用延时函数,很多延时函数都是使用中断或者tick来实现的,tick的方式最大到毫秒ms级别,通过中断方式的通用定时器来实现,如果实现1us的延时那么每1us就来一次中断,很影响cpu的效率。 本文…

elementary OS7 Ubuntu 22.04中硬盘挂载报错

elementary OS7 Ubuntu 22.04中硬盘挂载报错 背景目标思路解决方法 背景 上周末安装elementaryos7的过程中将windows10的引导文件搞丢了,这两天准备修复一下,保险期间将固态硬盘上的文件备份到移动硬盘上,备份过程中出现报错的问题&#xff…

Halcon与C#联合开发——1.读取图片、图像二值化

在vs中引入halcon控件 修改目标平台为 x64 拖出三个控件 代码展示 using System; using System.Windows.Forms; //引用支持halcon的命名空间 using HalconDotNet;namespace _1.HalconDisplay {public partial class Form1 : Form {// HObject 是Halcon库中表示图像和其他图形…

基于springboot+vue+Mysql的超市进销存系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

深度学习:基于PyTorch的模型解释工具Captum

深度学习:基于PyTorch的模型解释工具Captum 引言简介示例安装解释模型的预测解释文本模型情绪分析问答 解释视觉模型特征分析特征消融鲁棒性 解释多模态模型 引言 当我们训练神经网络模型时,我们通常只关注模型的整体性能,例如准确率或损失函…

AWS EC2设置root登录

在使用亚马逊的服务器时,官方默认是使用密钥登录,跟国内的云服务器差别较大,本文记录下,如何开放AWS EC2的root登录。 一、通过网页版或者XShell登录服务器 这里略过 二、设置root账户密码 # 切换 root sudo -i # 设置或修改密…

考研数学|《1800》《1000》《880》《660》最佳搭配使用方法

直接说结论:基础不好先做1800、强化之前660,强化可选880/1000题。 首先,传统习题册存在的一个问题是题量较大,但难度波动较大。《汤家凤1800》和《张宇1000》题量庞大,但有些题目难度不够平衡,有些过于简单…

【开发篇】六、查询大量数据导致内存溢出

文章目录 1、溢出场景2、快照文件分析3、本地环境复现4、结论5、解决思路 记录一个问题,工作中有个数据处理服务OOM,查了下镜像的dockerfile,发现JVM参数如下。很明显,一个数据服务,里面经手大量的数据对象&#xff0c…

ArcGIS二次开发(一)——搭建开发环境以及第一个简单的ArcGIS Engine 程序

Arcgis10.2、Arcgis Engine10.2与Microsoft Visual Studio 2012的版本进行安装 1、推荐教程与安装包2、安装顺序3、安装成功测试VS新建项目可以创建ArcGIS项目,并且在VS中拖拽ArcGIS工具 4、搭建第一个简单的ArcGIS Engine 程序 ArcEngine和VS版本是有对应的&#x…

【SpringBoot整合系列】SpringBoot3.x整合Swagger

目录 产生背景官方解释:作用SpringBoot3整合Swagger注意事项swagger3 常用注解SpringBoot3.x整合Swagger1.创建工程(jdk:17,boot:3.2.4)2.引入pom依赖3.application.yml添加配置4.添加swagger3.0配置5.控制器层(Controller)6.模型层(Model)7.启动并测试【Get请求接口…

一口气搞懂分库分表 12 种分片算法,大厂都在用

前言 本文是《ShardingSphere5.x分库分表原理与实战》系列的第五篇文章,我们一起梳理下ShardingSphere框架中的核心部分分片策略和分片算法,其内部针为我们提供了多种分片策略和分片算法,来应对不同的业务场景,本着拿来即用的原则…

大学教材《C语言程序设计》(浙大版)课后习题解析 | 第三、四章

概述 本文主要提供《C语言程序设计》(浙大版) 第三、四章的课后习题解析,以方便同学们完成题目后作为参考对照。后续将更新第五、六章节课后习题解析,如想了解更多,请持续关注该专栏。 专栏直达链接:《C语言程序设计》(浙大版)_孟…

文件IO的方式读取jpeg图片的分辨率

1、读取jpeg图片分辨率的两种方式 1.1 使用libjpeg库 可以使用libjpeg库读取JPEG图像文件&#xff0c;并获取图像的分辨率&#xff08;宽度和高度&#xff09;&#xff0c;简单demo示例如下&#xff1a; #include <stdio.h> #include <jpeglib.h>int main() {st…