MySQL的基本操作

目录

引言

一、SQL语句简介

(一)SQL通用语法

(二)SQL分类

(三)数据类型

1.数值类型

2.字符串类型

3.日期/时间类型

4.修饰符

二、登录mysql服务

三、SQL语句操作

(一)DDL语句

1.数据库操作

2.表操作

(二)DML语句

1.添加数据

2.修改数据

3.删除数据

(三)DQL语句

1.基本查询

2.条件查询

3.聚合函数与分组查询

3.1聚合函数

3.2 分组查询

4.排序查询

5.分页查询

(四)DCL语句

1.管理用户

1.1 查询用户

1.2 创建用户

1.3 修改用户名与密码

1.4 删除用户

2.用户授权

2.1 查询权限

2.2 授予权限

2.3 撤销权限

四、拓展知识

(一)创建临时表与克隆表

1. 创建临时表

2.克隆表

(二)忘记密码解决

总结

(一)学习基本内容

(二)注意点

1.三种删除表的区别

2.数据插入

3.定长字符串与变成字符串的区别

4.主键与唯一键


引言

MySQL是一个广泛应用于网站开发、数据存储与管理的关系型数据库管理系统。本文将为您概述MySQL的一些核心操作,包括数据库和表的创建、数据的增删改查(CRUD)以及简单的SQL语句使用。

一、SQL语句简介

SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准计算机语言,它涵盖了数据定义、数据查询、数据操作(增删改)以及数据控制四大功能

(一)SQL通用语法

1.SQL语句可以单行或者多行书写,以分号结尾;

2.SQL语句可以使用空格/缩进来增强语句的可读性。

3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写

4.注释

单行注释:--注释内容或者#注释内容(MySQL特有)

多行注释:/*注释内容*/

(二)SQL分类

分类

全称

说明

DDL

Data Definition Language

数据定义语言,用来定义数据库对象(数据库,表,字段)

DML

Data Manipulation Language

数据操作语言,用来对数据库表中的数据进行增删改

DQL

Data Query Language

数据查询语言,用来查询数据库中表的记录

DCL

Data Control Language

数据控制语言,用来创建数据库用户、控制数据库访问权限

(三)数据类型

 主要分为三类:数值类型、字符串类型、日期时间类型

1.数值类型

2.字符串类型

注意:在这里主要了解什么是定长字符串与变长字符串

定长字符串(char):

定长字符串在创建时指定了固定长度,无论实际存储的字符数量是多少,它都会占用预设大小的空间。

例如,在SQL Server中,CHAR(n)就是定长字符串类型,其中n表示字符串的最大长度。即使你只存储了几个字符,剩余的空间也会被填充以达到预设长度,通常是用空格或特定字符填补。

变成字符串(varchar):

变长字符串根据实际内容动态分配存储空间,仅占用与存储内容长度相符的内存空间。

在SQL Server中,VARCHAR(n)表示变长字符串类型,n同样表示最大长度,但实际存储只会包含字符串的实际长度,不包括额外的填充字符。

比如

char(10):即使输入4个字符,依旧会占用10个字节,多余的字节使用tab或者空格补全

varchar(10):根据输入的字符确定占用字节,输入4个字符就占用4个字节

根据环境不同择优选,例如确定性别,使用char(1)即可,只会输入男、女,这样查询的时候不会混乱,如果使用varchar(10)虽然可以节省资源,但是,在查询时,会检索0-10所有字节,查询效率较慢

3.日期/时间类型

除此之外,还可以在字段信息中添加一些修饰符

4.修饰符

适用所有类型的修饰符:

名称含义
NULL数据列可包含NULL值,默认值
NOT NULL数据列不允许包含NULL值,*为必填选项
DEFAULT默认值
PRIMARY KEY主键,所有记录中此字段的值不能重复,且不能为NULL
UNIQUE KEY唯一键,所有记录中此字段的值不能重复,但可以为NULL
CHARACTER SETname 指定一个字符集

适用数值型的修饰符:

名称作用
AUTO_INCREMENT自动递增,适用于整数类型
UNSIGNED无符号

二、登录mysql服务

在安装好mysql服务后,需要使用客户工具去登录mysql

常见的mysql客户端工具有以下几种

MySQL Workbench

官方出品的集成开发环境,提供数据库设计、SQL开发、以及服务器管理等功能。

Navicat

包括Navicat for MySQL,是一款跨平台的图形化数据库管理工具,支持Windows、macOS和Linux,提供用户友好的界面,进行数据建模、查询、数据同步、备份还原等多种数据库管理操作。

DataDrip

同样是一款图形化数据库管理的工具

HeidiSQL

免费的MySQL客户端,特别适合Windows用户,界面简洁易用,支持快速的数据库管理和数据操作。

Mysql

mysql服务自带的客户端工具,也是日常使用的操作工具

Mycli

第三方的客户端工具,使用python安装,具有补全查询历史命令等功能,适用于mysql的初学者

在这里使用mysql自带的客户端工具进行登录,在之前章节进行编译安装时,执行了初始化的命令,所以在刚开始登录时,不许要输入密码,就可以直接登录

登录指令为mysql -u 用户名

登录root用户指令为 mysql -u root

这样并不安全,所以需要使用mysqladmin命令去创建密码

创建密码指令为:mysqladmin -u 用户名 -p password '新密码'

这样就可以登录了

三、SQL语句操作

(一)DDL语句

DDL(Data Definition Language,数据定义语言)是SQL中的一种语句集合,主要用于创建、修改和删除数据库中的结构对象,如数据库、表、视图、索引、触发器、存储过程等

常用语句有:CREATE(创建),DROP(删除),ALTER(修改)

1.数据库操作

1.1 查询所有数据库

1.2 创建新的数据库

 在创建数据库时,也可以添加条件判断语句,if not exists ,表示如果该名称的数据库存在则不建立,不存在则新建该数据库

1.3 使用数据库


 

1.4 删除库

2.表操作

2.1 创建表

语法格式有两种:

语法1

create table 表名 (字段1 字段1类型[comment 注释信息],字段2 字段2类型[comment 注释信息],字段3 字段3类型[comment 注释信息] ……);

语法2

create table 表名(字段1 字段1类型[comment 注释信息],

                             字段2 字段2类型[comment 注释信息],

                             字段3 字段3类型[comment 注释信息] 

                             ……) [comment 表注释信息];

注意:在最后一个字段信息后面不需要加,(逗号)

创建表之后,以下是对表的一些操作

2.2 查询表结构

 Field:字段名称

Type :字段类型 

Null  : 该字段是否可以设置为空值,NO表示不允许有控制

Key   :键,PRI表示为主键,UNI表示该字段为唯一键

Default :默认为空,即NULL

Extra :扩展,表示该表的字段可以继续进行扩展

可以在当前数据库中查看其它数据库的表

语法为:desc [数据库名.]表名

此语法同样适用于其它的SQL语句

2.3 查询建表语句

2.3 删除表

2.4 添加字段

2.5 修改字段

2.6 修改字段类型

ALTER TABLE 表名 MODIFY COLUMN 字段名 类型;  -- 修改列的数据类型

一般不推荐使用,容易丢失数据,同类型数据之间可以使用

例如:TINYINT修改为INT,同样属于整数值

(二)DML语句

DML(Data Manipulation Language,数据操纵语言)是SQL中用于操作数据库表中数据的指令集。它主要涵盖以下几种类型的语句

插入数据(INSERT):在表中插入新的数据

更新数据(UPDATE):更新表中现有的数据

删除数据(DELETE):删除表中的数据

1.添加数据

注意:

插入数据时,指定的字段顺序需要与值的顺序是一一对应的。

字符串和日期型数据应该包含在引号中。

插入的数据大小,应该在字段的规定范围内。

2.修改数据

不加WHERE条件,默认是修改指定表当中的所有行的entry的值

只修改某一行的值,可以添加where条件进行筛选

注意:在指定某一行是,最好指定条件为设置修饰符为PRI的主键,确保表中无重复信息,导致将其它行的信息一并修改

3.删除数据

注意:
DELETE 语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据

DELETE 语句不能删除某一个字段的值。

删除指定信息

删除所有信息

(三)DQL语句

DQL (Data Query Language) 是SQL语言中专门用于查询数据的部分,它的主要目的是从数据库中检索满足特定条件的数据,而不改变数据库的状态
它的语句只有一个:SELECT

在数据库操作中,查询的频率要远远高于增、删、改操作,在访问页面时,页面中所有的信息都需要通过select查询出来,在生产环境中,也同样要多于其它操作

1.基本查询

1.1多字段查询

注释:*为通配符,表示所有

1.2 字段别名

给某一字段设置别名,比如查看年龄时。age并不直观,可以使用as设置别名为年龄,这样查看就会更加直观

1.3 消除重复数据

查询某一个字段,并消除重复的记录

1.4 垂直显示

在查看表格时,可以添加\G,将表格的横向信息纵向显示出来。这是MySQL命令行客户端的一个特殊终止符,告诉MySQL以垂直布局显示查询结果,每一列的内容都会另起一行显示,便于阅读和分析。

2.条件查询

2.1 基本条件

2.2 使用逻辑运算

查找entry = 2024-01-01并age不等于20的信息

3.聚合函数与分组查询

3.1聚合函数

统计数量,使用count函数,但是需要注意的是,在统计数量时,NULL值并不会纳入统计范围,统计数量时需要注意,如果没有要求,只统计总数,将count()是字段设置为not null的字段

也可以加上判断条件,比如统计所有gerder值为男的age值的和

3.2 分组查询

4.排序查询


 

注意:如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。

按照age值大小排序

5.分页查询

注意:

起始索引从0开始,起始索引=(查询页码-1)*每页显示记录数。

分页查询是数据库的方言(数据库与数据库之间不同的语法),不同的数据库有不同的实现,MySQL中是LIMIT。

如果查询的是第一页数据,起始索引可以省略,直接简写为limit 10。


(四)DCL语句

DCL(Data Control Language)是SQL语言中的一个重要组成部分,它主要负责对数据库系统的访问权限和安全性进行管理。DCL语句主要用于授予或撤销用户对数据库对象(如表、视图、序列、存储过程等)的操作权限,以及管理事务和数据库的安全策略。

常用语句有:GRANT,REVOKE,COMMIT,ROLLBACK

1.管理用户

注释

①主机名可以使用IP地址、网段、主机名的形式,本地用户可以使用127.0.0.1或者locathostbi表示,通配符%表示允许任意地址,任意主机访问。

②密码输入明文时,在插入mysql.user表中会由mysql自动进行加密,或者使用SELECT PASSWORD('密码');获取密文,再在语句中添PASSWORD '密文'

1.1 查询用户

可以登录mysql服务的用户都存放在mysql数据库中的user表当中

可以通过:select * from mysql.user\G;直接查看用户

默认有四个用户,目前只使用root用户进行登录操作

1.2 创建用户

创建一个用户名称为dcl的用户,只能后在当前主机localhost访问,访问密码为123456

'用户名':指定将创建的用户名.
':指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录
可用通配符%
'密码':若使用明文密码,直接输入'密码',插入到数据库时由Mysql自动加密;
若使用加密密码,需要先使用SELECT PASSWORD('密码');获取密文,再在语句中添PASSWORD '密文';
若省略“IDENTIFIED BY"部分,则用户的密码将为空(不建议使用)
 

创建完用户之后,就可以在本地主机进行登录了

如果使用第三软件,如datagrip等软件不能进行连接

mycli为第三方客户端工具

1.3 修改用户名与密码

1.3.1 修改用户名并重新指定用户可登录的主机范围

这是该用户就可以使用第三方登录了

1.3.2 修改用户密码

使用set指令修改密码

修改当前用户的密码:SET PASSWORD = PASSWORD(‘新密码’);

修改其它用户的密码:SET PASSWORD FOR ‘用户名’@‘主机名’ = PASSWORD(‘新密码’);

使用alter指令修改密码

1.4 删除用户

2.用户授权

首先了解一下权限的分类

权限说明
all,all privileges所有权限
insert插入数据
select 查询数据
update 更新表的数据
delete删除表中数据
create 创建库,表
drop删除库,表
index建立索引
alter更改表属性
create temp orary tableslock tables 锁表
create view 创建视图
show view显示视图
create routine创建存储过程
alter routine修改存储过程
event事件
trigger on创建触发器

首先建立一个用户,只有在本地主机登录的权限,在尝试创建数据库时会失败

2.1 查询权限

使用show grantsd for '用户名'@'主机名' 指令

USAGE权限只能用于数据库登陆,不能执行任何操作; USAGE权限不能被回收

2.2 授予权限

想要rat用户拥有创建库与不表的权限,需要使用grant指令去授予权限

grant  create  on *.* to 'rat'@'localhost';

grant :这是SQL语句中的权限授予命令。

create:这是要授予的特定权限,允许用户创建新的数据库和表。

on *.*  :星号 *.* 表示所有数据库(第一个星号)中的所有表(第二个星号)。这意味着用户可以在任何数据库中创建表。

to 'rat'@'localhost';:这部分指定了用户名为 'rat' 的用户,且该用户只能从本地主机(localhost)登录并使用这些权限。

执行这条命令后,用户 'rat' 将能够在本地主机上创建新的数据库和表

但此时,该用户对已存在数据库的并没有任何访问权限

可以通过设置权限列表为all,授予该用户所有权限

2.3 撤销权限

有赋予权限,就会有对应的权限的收回,使用REVOKE指令

此时该用户除了登录,不能执行其它任何操作

四、拓展知识

(一)创建临时表与克隆表

1. 创建临时表

临时表创建成功之后,使用SHOWTABLES命令是看不到创建的临时表的,临时表会在连接退出后被销毁。如果在退出连接之前,也可以执行增删改查等操作,比如使用DROP TABLE语句手动直接删除临时表。

2.克隆表

查看需要复制的表的结构与数据

使用like指令进行克隆:create table 克隆表名 like 目的表名;

比如需要克隆emp表,新建的表名为emp_copy,指令为:create table emp_copy like emp;

使用:insert into emp_copy select * from emp;指令复制表中的信息

也可以使用:create table emp_1 (select * from emp);指令直接生成新的表

(二)忘记密码解决

忘记root密码的解决办法

首先在/etc/my.cnf文件中的mysqld段添加skip-grant-tables语句,表示登录mysql不使用授权表

重启服务后就可以直接不使用密码登录

而后清空root用户密码

skip-grant-tables注释或删除之后重启服务

设置新密码登录

总结

(一)学习基本内容

1.SQL语句的语法分类以及数据类型

2.对mysql数据的增删改查的基本操作

3.用户的权限赋予及撤销

(二)注意点

1.三种删除表的区别

drop table table_name
1)属于DDL
2)不可回滚(无法恢复)
3)不可带where
4)表内容和结构删除
5)删除速度快

truncate table table_name
1)属于DDL
2)不可回滚
3)不可带where
4)表内容删除
5)删除速度快

delete from table_name
1)属于DML
2)可回滚(可恢复)
3)可带where
4)表结构在,表内容要看where执行的情况
5)册删除速度慢,需要逐行删除

2.数据插入

插入数据时,指定的字段顺序需要与值的顺序是一一对应的。

字符串和日期型数据应该包含在引号中。

插入的数据大小,应该在字段的规定范围内。

3.定长字符串与变成字符串的区别

char(10):即使输入4个字符,依旧会占用10个字节,多余的字节使用tab或者空格补全

varchar(10):根据输入的字符确定占用字节,输入4个字符就占用4个字节

4.主键与唯一键

主键,所有记录中此字段的值不能重复,且不能为NULL,每张表中只能有一个主键

唯一键,所有记录中此字段的值不能重复,但可以为NULL,每张表中可以有多个唯一键

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

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

相关文章

hexo怎么修改默认主题?

npm install 主题 修改_config.yml文件的theme 复制一份_config.yml 改名为_config.主题.yml hexo clean hexo g hexo s就这么简单 选主题 https://hexo.io/themes/ 比如 fluid npm install --save hexo-theme-fluid修改主题 配置新主题 执行新主题 hexo clean hexo g hexo…

python爬虫之xpath+多进程爬取百度贴吧实战

文章目录 抓取百度贴吧的某一个帖子的评论内容前言先查看贴吧的robots.txt页面结构分析评论者头像,用户抓取评论内容的抓取评论下回复内容的抓取 源码实现贴吧抓取过程源码实现多进程的实现 抓取百度贴吧的某一个帖子的评论内容 前言 本项目实战是用来学习用&#…

网络: 数据链路层

数据链路层: 数据帧的封装与传输 以太网数据帧 源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的;帧协议类型字段有三种值,分别对应IP、ARP、RARP;帧末尾是CRC校验码 以太网 "以太网" 不是一种具体的网络, 而是一种技术标准; 既…

CCLinkie转Modbus RTU在纺纱设备领域应用

在纺纱设备领域,CCLinkie转Modbus RTU网关可以发挥重要作用。这种网关的主要功能是将CC-Link IE Field总线协议转换为Modbus RTU协议。这种转换在许多自动化设备中都很有用,特别是那些已经使用Modbus RTU协议的系统。 以下是CCLinkie转Modbus RTU网关在纺…

【项目管理后台】Vue3+Ts+Sass实战框架搭建二

Vue3TsSass搭建 git cz的配置mock 数据配置viteMockServe 建立mock/user.ts文件夹测试一下mock是否配置成功 axios二次封装解决env报错问题,ImportMeta”上不存在属性“env” 统一管理相关接口新建api/index.js 路由的配置建立router/index.ts将路由进行集中封装&am…

用户分享 | 飞凌嵌入式i.MX9352开发板外设功能测试

本篇试用报告由发烧友 jinyi7016 提供,感谢jinyi7016的支持。 1、网络测试 飞凌嵌入式OK-MX9352-C开发板有两个千兆网口,其中eth0是静态IP,地址为192.168.0.232,这个地址比较大,也是为了避免与局域网内的其他设备冲突…

蓝桥杯单片机备战——关于573问题的填坑

一、遇到的问题 还记得我前面在封装继电器外设的时候遇到的这个问题嘛,当时我怀疑的是138译码器在切换通道的时候会出现其他暂态导致已经锁定的573解锁。 其实不然,之所以会这样还是因为代码问题,也可以说是573反应时间太快了。下面我就分析…

unity学习(63)——预制体

1.运行发现预制体初始化的时候存在问题 这里有许多技巧,需要细看。 2.预制体在MapHandler.cs的定义如下 3.把MapHandler绑到相机上,在相机的属性栏中找到赋值部分。 4.size设置成2,然后把模型拖拽到1号索引位置上 5.运行之后预制体确实成功实…

Java类的多态作用及解析

多态是面向对象编程中一个重要的特性。简单来说,多态就是指同一个方法在不同的对象上有不同的实现。通过多态,我们可以在运行时根据对象的实际类型来动态地调用相应的方法,从而提高代码的灵活性和可扩展性。 以下是 Java 类中多态的一些作用…

leetcode 3075

leetcode 3075 题目 例子 思路 孩子的幸福值最低也是0&#xff0c;所以选择最大的值&#xff0c;被选孩子的幸福值最高。需要使用排序算法 代码实现 class Solution { public:long long maximumHappinessSum(vector<int>& happiness, int k) {//升序sort(happine…

python之实验二颜色空间转换与分割

1&#xff0e;编写python代码&#xff0c;使用skimag拆分并显示图像RGB空间的三个通道 (我直接用的包中自带的图像) from skimage import data from matplotlib import pyplot as plt import numpy as npif __name__ "__main__":# 载入RGB测试图像image data.astro…

OKR与敏捷开发、精益创业等方法如何协同工作?

在快速变化的市场环境中&#xff0c;企业需要更加灵活和高效地应对各种挑战。目标与关键成果法&#xff08;OKR&#xff09;、敏捷开发以及精益创业等方法&#xff0c;作为现代企业管理的重要工具&#xff0c;各自在推动企业发展、提高团队效率、优化产品迭代等方面发挥着不可或…

使用appuploder上架App Store流程

使用appuploder流程笔记 1.如何没有账号去apple官网注册一个&#xff0c;地址&#xff1a;https://developer.apple.com/account 2.下载解压appuploder&#xff0c;双击打开&#xff0c;用刚刚注册的账号登录&#xff0c;下载地址&#xff1a;http://www.applicationloader.n…

逻辑手册器件解读,需要注意的参数

逻辑器件手册解读 可以实现的功能 上图第一个芯片实现的功能是逻辑电平的转换&#xff0c;1.8V的逻辑电平经过逻辑器件之后转换为3.3V&#xff0c;可以看出逻辑器件的输出最高电平是跟随供电电压的。 第二个芯片实现的是"与的逻辑",两个不同的高电平信号经过逻辑器件…

inputStream.avaliable()方法网络操作读取不全BUG

一、问题描述 公司有个需求&#xff0c;就是调用方&#xff08;我&#xff09;需要把pdf文件转为Base64字符串作为参数传递为被调用方&#xff0c;以下是大致转换过程&#xff1a; URL url new URL("http://xxxx.pdf");HttpURLConnection uc (HttpURLConnection) …

抓住眼前的机会:自我决策与成长的探索

在人生的旅途中&#xff0c;我们常常会遇到各种各样的机会。它们如同璀璨的星辰&#xff0c;在夜空中闪烁着诱人的光芒。然而&#xff0c;机会并非总是会自动降临在我们头上&#xff0c;更多的时候&#xff0c;它们需要我们去主动寻找、去勇敢抓住。那么&#xff0c;当机会摆在…

Python 可视化和分析高维数据库之hiplot使用详解

概要 在机器学习和数据科学领域,处理高维数据是一项挑战。为了更好地理解和分析高维数据,需要使用一些强大的工具来可视化和探索数据特征。HiPlot 就是这样一款强大的 Python 库,它简化了高维数据的可视化和分析过程,帮助用户快速发现数据中的规律和趋势。本文将深入介绍 …

同时配置 jdk8、jdk17 两个环境

下载jdk17 网址&#xff1a;jdk17 - 官网&#xff0c;如下&#xff1a; 下载 jdk8 网址&#xff1a;jdk8 - 官网 如下&#xff1a; 配置环境变量 在安装jdk17 和 jdk8 的时候&#xff0c; 系统会自动在 Path 中配置路径C:\Program Files\Common Files\Oracle\Java\javapa…

CVX安装新版本Mosek求解器

在使用连续凸近似&#xff08;SCA&#xff09;求解优化问题时遇到了报错 Problem status : ILL_POSED Solution status : PRIMAL_ILLPOSED_CER并且最后给出的结果为NaN。 在CVX论坛中找到一条回答 具体链接如下&#xff1a; The status is failed 因为我使用的是CVX自带的…

基于ssm的新能源汽车在线租赁管理系统论文

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;新能源汽车在线租赁当然也不能排除在外。新能源汽车在线租赁是以实际运用为开发背景&#xff0c;运用软件工程开发方法&…