【MySQL】数据库的SQL语句详解

目录

一、操作系统了解

二、关系型数据库与非关系型数据库的区别

三、关系型数据库的四种语言

四、DDL语言(数据库定义语言,管理创建对象如库、表、字段、索引等)

1、库的增删改查;

2、表的增删改查;

3、字段的增删改查; 

​编辑

4、六大约束属性以及应用场景

五、DML语言(数据库操作语言,数据库中的数据管理增删改)

数据库的数据增删改查

六、DQL语言(数据库查询语言,对数据库中的数据查询)

七、DCL语言 用于对用户权限的管理

1、账号的增删改查,密码的修改与查询

2、账号权限的设置

八、克隆数据表的两种方式与区别

九、临时表的创建和特点

十、外键约束

十一、忘记root密码 该如何处理

步骤一:先修改配置文件,在mysqld块下添加skip-grant-tables;

步骤二:重启服务,直接用mysql免密登录数据库;

步骤三:直接修改数据库的用户表中的对应密码数据;然后再返回配置文件删除skip-grant-tables,然后重启服务;

十二、清空数据

总结


一、操作系统了解

Windows做服务器:Windows Server2016

Linux系统的服务器:RedHat  Debian  SUSE)      MacOS

Linux系统   CentOS(yum dnf)     Ubuntu(apt apt-get)     OpenSUSE

信创标准  会让系统逐渐国产化

国产系统:

  • 华为 欧拉    
  • 阿里 龙蜥    
  • 腾讯 tencentOS    
  • 红旗    
  • 统信    
  • 麒麟(银河麒麟,中标麒麟->CentOS,优麒麟->Ubuntu)

二、关系型数据库与非关系型数据库的区别

关系型数据库:如MySQL MariaDB Oracle DB2 PostgreSQL(pgdb),以及国产的华为高斯,阿里云的RDS,还有阿里的oceanbase 腾讯的TDBA,人大金仓    达梦    greatSQL

sql关系型数据库的特点是:

  • 关系型数据库几乎通用sql语句;
  • 数据的存储类型是二维表格结构;可以创建库,库中创建表,表中数据存储结构为二维表格的结构化数据,分为行和列存储,行为一条记录,表示对象的一条信息,列为字段,表示一个对象的属性;
  • 关系型数据库通常用于业务数据管理,账户信息存储;

非关系型数据库常用代表:

  • 缓存型(key-value)  Redis   Memcached 
  • 文档型(document)  MongoDB
  • 索引型(search engine)  Elasticsearch
  • 时序型(time series)  Prometheus  InfluxDB
  • 列式型 (wide column) HBase

nosql非关系型数据库的特点:

  • 每种非关系型数据库有自己独特的语言;
  • 不同类型的NoSQL使用不同的数据存储结构,比如有键值对、文档、索引、时间序列等。

三、关系型数据库的四种语言

  • DDL:用于管理数据库对象(库、表、索引等)
  • DML:用于管理表数据
  • DQL:用于根据条件查询表数据
  • DCL:用于管理用户和权限

常用的数据类型:
int :整型   无符号[0,2^32-1],有符号[-2^31,2^31-1]
float :单精度浮点    4字节32位
double :双精度浮点    8字节64位
char :固定长度的字符类型
varchar :可变长度的字符类型

text :文本
image :图片
decimal(5,2) :5个有效长度数字,小数点后面有2位
datetime:时间
date:日期
time:时间

四、DDL语言(数据库定义语言,管理创建对象如库、表、字段、索引等)

1、库的增删改查;

create database 库名;  ##创建库
drop database 库名;  ##删除库
show databases;  ##查看有哪些库
use 库名;  ##切换库

2、表的增删改查;

create table [库名.]表名 (字段1 数据类型 [约束属性],字段1 数据类型 [约束属性],.....);
##创建数据表结构use 库名; ##先切换库
create table 表名 (字段1 数据类型 [约束属性],字段1 数据类型 [约束属性],.....);  ##创建数据表结构create table 表名 (字段1 数据类型,字段1 数据类型 ,....[约束属性]);drop table 表名;
drop table [库名.]表名;
##删除表 谨慎!!desc [库名.]表名;
##查询表结构 以表格形式显示
show create table [库名.]表名;
##以命令的形式显示表结构alter table [库名.]旧表名 rename [库名.]新表名;

 

3、字段的增删改查; 

alter table [库名.]表名 add 字段名称 字段数据类型 [约束属性];
##表中新增一个字段,一定要跟上数据的属性alter table [库名.]表名 add 约束属性;
##可以直接添加表的约束属性 如primary key(字段名) 或者 unique key(字段名) alter table [库名.]表名 change 旧字段名 新字段名 字段数据类型 [约束属性];
##修改一个字段的名称或者数据类型alter table [库名.]表名 drop 字段名;
##删除一个字段desc table [库名.]表名;
##表格形式查询表结构desc table [库名.]表名\G;
##纵向查询表结构show create table [库名.]表名;
##命令形式查看表结构

 

4、六大约束属性以及应用场景

  • primary key 表示主键约束 ;主键字段的值必须是唯一且不可重复,也不能为空,一个表中,只能有一个主键
  • unique key 表示唯一键约束;唯一键字段的值不能重复,但是可以为空,一个表中可以有多个唯一键;
  • not null 表示非空约束;表示该字段的值不能为空;
  • default 表示默认值约束;当该字段的数据为空时,使用默认值填充;
  • auto_increment 表示自增约束,字段如果没有设置值,那么数据会默认从1开始自增长,且自增字段必须为主键
  • foreign key 表示外键约束,用于确保外键表和主键表的数据完整和一致性
  • int(N) zerofill 表示N位数据零填充

五、DML语言(数据库操作语言,数据库中的数据管理增删改)

数据库的数据增删改查

insert into [库名.]表名(字段1,字段2,....)values(字段1的值,字段2的值,....)
insert into [库名.]表名 values(所有字段的值 一一对应);
##添加数据记录update [库名.]表名 set 字段名=字段值 where 条件表达式 [and/or 条件表达式2];
##修改数据的值delete from [库名.]表名 where 条件表达式 [and/or 条件表达式2];
##删除数据的值delete from [库名.]表名;
##清空数据表,只剩表结构

 

 

六、DQL语言(数据库查询语言,对数据库中的数据查询)

select * from [库名.]表名;
##查看表中的所有字段对应的所有值select 字段1,字段2,... from [库名.]表名 where 条件表达式 [and/or 条件表达式2];
##查询某些字段 满足条件的数据select * from [库名.]表名 limit N;
##查询前N行,包括第N行的数据select * from [库名.]表名 limit N,M;
##查询第N行以后,不包含第N行,后面M行的数据

七、DCL语言 用于对用户权限的管理

1、账号的增删改查,密码的修改与查询

create user '用户名'@'源地址' identified by '密码';
##创建用户rename user '用户名'@'源地址' to '新用户名'@'新源地址';
##修改用户名drop user '用户名'@'源地址';
##删除用户select user,host,authentication_string from mysql.user;
##查看有哪些用户信息

alter user 'liqi'@'localhost' identified by 'abc123';update mysql.user set authentication_string=password('123456') where user='liqi';set password for 'liqi'@'localhost' =password('abc123');三种修改密码的方式

 

 

2、账号权限的设置

show grants for '用户名'@'源地址';grant 权限列表 on 库.表 to '用户名'@'源地址';revoke 权限列表 on 库.表 from '用户名'@'源地址';

grant命令 在mysql 的5.7之前的版本 支持创建新用户以及权限 密码,

但是在8.0之后 只支持先创建用户 后给这个用户添加权限; 

八、克隆数据表的两种方式与区别

##方法一:
create table 新表 like 旧表;                 #克隆表结构
insert into 新表 (select * from 旧表);       #克隆表数据        可以实现表结构和表数据与旧表都一致##方法二:
create table 新表 (select * from 旧表);      #表数据和旧表一致,表结构和旧表不一定一致

 

九、临时表的创建和特点

create temporary table temp(id int primary key,name varchar(20),age int);create temporary table 表名 (....);       
临时表跟普通表一样可以进行增删改查,但是show tables是查不到的;临时表只能在当前会话中有效,退出当前会话或在其它会话中,临时表都会失效

临时表 创建的时候加上temporary 限制 ,show tables命令无法查看 ,该表只在当前环境有效,新开窗口即失效;临时表一般用于测试

十、外键约束

外键的定义:如果同一个属性字段X在表一中是主键,而在表二中不是主键,则字段X称为表二的外键。主键表和外键表的理解:
(1)以公共关键字作主键的表为主键表(父表、主表)
(2)以公共关键字作外键的表为外键表(从表、外表)注意:与外键关联的主表的字段必须设置为主键。要求从表不能是临时表,主从表的字段具备相同的数据类型、字符长度和约束。#创建主表 profession
create table profession(proid int primary key auto_increment,proname varchar(20));#创建从表 studentcreate table student(id int primary key,name varchar(10) unique key,age int,proid int);#为从表 student 表添加外键,并将 student 表的 proid 字段和 profession 表的 pid 字段建立外键关联。外键名建议以“FK_”开头。
alter table student add constraint FK_01 foreign key (proid) references profession(proid);desc student;#插入新的数据记录时,要先主表再从表
insert into profession values(1,'云计算');
insert into profession values(2,'大数据');
insert into student values(1,'zhangsan',18,1);
insert into student values(2,'lisi',19,1);
insert into student values(3,'wangwu',20,2);#删数数据记录时,要先从表再主表,也就是说删除主键表的记录时必须先删除其他与之关联的表中的记录。
delete from student where proid=1;
delete from profession where pid=1;#查看和删除外键约束
show create table student;
desc student;
alter table student drop foreign key FK_pro;
alter table student drop key FK_pro;

 

alter table student drop foreign key FK_01;
##删除外键alter table student drop key FK_01;
##还有个键值也需要删除

十一、忘记root密码 该如何处理

步骤一:先修改配置文件,在mysqld块下添加skip-grant-tables;

vim /etc/my.cof
[mysqld]
skip-grant-tables

步骤二:重启服务,直接用mysql免密登录数据库;

步骤三:直接修改数据库的用户表中的对应密码数据;然后再返回配置文件删除skip-grant-tables,然后重启服务;

update mysql.user set authentication_string=password('abc123') where user='root' and host='localhost';

十二、清空数据

清空数据有两种方式

delete from [库名.]表名;
处理方式是一行一行的删除,比较耗时,如果表中有自增字段,那么下次添加数据的时候,自增字段的值不会从1开始,而是从删除前的值开始truncate table [库名.]表名;
处理方式是创建一个同名且相同表结构,所有数据清空,原有的自增数据不会保留,添加数据的时候自增字段的值默认从1开始;(相当于格式化表)

总结

操作系统   Windows(Win7  Win10  Win11  Windows Server2016)     Linux/Unix(RedHat  Debian  SUSE)      MacOS
Linux系统   CentOS(yum dnf)     Ubuntu(apt apt-get)     OpenSUSE
信创标准  国产系统: 华为 欧拉     阿里 龙蜥     腾讯 tencentOS     红旗     统信     麒麟(银河麒麟,中标麒麟->CentOS,优麒麟->Ubuntu)数据库 分两大类: 关系型数据库 SQL     非关系型数据库 NoSQL关系型数据库:典型代表  MySQL   MariaDB   PostgreSQL(pgdb)  Oracle   SQL Server   Db2
信创        国产数据库  阿里云 RDB     华为 高斯     阿里 Oceanbase    腾讯 TDBA     人大金仓    达梦    greatSQL关系型数据库 SQL   操作命令:sql语句      存储结构:二维表格      存储的数据:结构化数据      使用场景:存储业务数据和账户信息
对象:  库 -> 表 -> 二维表格形式的结构化数据     列(字段):用来描述对象的一个属性行(记录):用来描述一个对象的信息非关系型数据库 NoSQL   存储结构:不同类型的NoSQL使用不同的存储结构,比如 键值对、文档、索引、时间序列等
缓存型  Redis   Memcached
文档型  MongoDB
索引型  Elasticsearch
时序型  Prometheus  InfluxDB
列式型  HBaseMysql基础操作
select version();
select user();
show databases;
use 库名;   show tables [from 库名];
describe 表名;   desc [库名.]表名;SQL语句 DDL  DML  DQL  DCL
DDL:用于管理数据库对象(库、表、索引等)
create database 库名;
use 库名;
create table 表名 (字段1 数据类型, 字段2 数据类型, ....[, primary key(字段)]);drop table [库名.]表名;
drop database 库名;修改表结构
改表名         alter table 旧表名 rename 新表名
增加字段       alter table 表名 add 新字段 数据类型 [约束属性];
修改字段       alter table 表名 change 旧字段 新字段 数据类型 [约束属性];
删除字段       alter table 表名 drop 字段名;show create table 表名;MySQL的六大约束特性:
primary key     主键约束     字段的值不能重复,不能为Null,一个表只能有一个主键
unique key      唯一性约束   字段的值不能重复,但能为Null,一个表可以有多个唯一键
not null        非空约束     字段的值不能为Null
default         默认值约束   字段的值如果没有设置则使用默认值自动填充
auto_increment  自增约束     字段的如果没有设置默认会从 1 开始每次自动递增 1,要求自增字段必须为主键
foreign key     外键约束     保证外键表与主键表相关联的表数据的完整性和一致性int(N) zerofill   零填充克隆表
create table 新表 like 旧表;                 #克隆表结构
insert into 新表 (select * from 旧表);       #克隆表数据        可以实现表结构和表数据与旧表都一致create table 新表 (select * from 旧表);      #表数据和旧表一致,表结构和旧表不一定一致清空表
delete from 表名;       #一条一条的删除记录,效率较慢;自增长字段仍然会按照清空表前的最大记录继续自增truncate table 表名;    #直接重建表,清空表效率更快;自增长字段会重新从 1 开始自增 临时表
create temporary table 表名 (....);       临时表跟普通表一样可以进行增删改查,但是show tables是查不到的;临时表只能在当前会话中有效,退出当前会话或在其它会话中,临时表都会失效外键约束
主键表: alter table 表名 add primary key (主键字段);
外键表: alter table 表名 add foreign key (外键字段) references 主键表名 (主键字段);插入新数据时,需要先在主键表插入数据再在外键表插入相关联的数据;删除数据时,需要先在外键表删除数据再在主键表删除相关联的数据alter table 表名 drop foreign key '外键别名';alter table 表名 drop key '键名';DML:用于管理表数据
insert into 表名 (字段1, 字段2, ....) values (字段1的值, 字段2的值, ....);
insert into 表名 values (所有字段的值);update 表名 set 字段1=值[, 字段2=值, ....]  where 条件表达式;delete from 表名 where 条件表达式;DQL:用于根据条件查询表数据
select * from 表名 [where 条件表达式];
select  字段1,字段2,....  from 表名 [where 条件表达式];select * from 表名\G      #纵向查看每行记录的字段的值select * from 表名 limit N;      #查看表的前N行的记录
select * from 表名 limit N,M;    #查看表的前N行之后的连续M行的记录(不包含第N行)DCL:用于管理用户和权限
用户管理:
create user '用户名'@'源地址'  identified by '密码';源地址可以是localhost/IP/网段/主机名/%rename user '用户名'@'源地址' to '新用户名'@'源地址';drop user '用户名'@'源地址';select user,host,authentication_string from mysql.user;select user();set password [for '用户名'@'源地址'] = password('密码');
alter user '用户名'@'源地址' identified by '密码';如何找回 root 密码?
1)修改MySQL配置文件,在 [mysqld] 配置项下面添加 skip-grant-tables 配置参数
2)重启mysqld服务,使用 mysql 密码直接登录数据库
3)执行命令 update mysql.user set authentication_string=password('密码') where user='root'; 修改 root 用户密码
4)还原MySQL配置,重启mysqld服务,使用 mysql -u用户名 -p密码 [-h mysql地址 -P mysql端口] 命令登录数据库验证权限管理:
grant 权限1,权限2,....  on 库名.表名 to '用户名'@'源地址' [identified by '密码'];   #5.7或之前版本支持创建新用户和授予权限,8.0版本只能用于授予权限all                   *.*show grant for '用户名'@'源地址';revoke 权限1,权限2,....  on 库名.表名 from  '用户名'@'源地址';all

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

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

相关文章

机场数据治理系列介绍(2):六图法开展数据治理的步骤与要点

目录 一、机场数据治理的六图法 1、何为六图法 二、应用数据治理六图法的相关工作步骤 1、制定战略目标 2、梳理业务情况 3、收集需求 4、构建数智应用地图 5、选择合适的算法 6、建立数据地图 7、持续改进和优化 三、相关要点 1、明确数据治理三张清单 2、持续构…

Chainlink 开发者故事:Krypton 从构思到产品的 Chainlink BUILD之旅

识别问题,构思解决方案,建立它,推出它,然后扩展它。这就是科技初创企业的操作手册。 现在,前Chainlink黑客马拉松获奖者,当前的Chainlink BUILD成员Krypton已经进行到了第四步:推出。Krypton团…

敏捷开发 - 知识普及

敏捷开发- Scrum 前言 知乎有一篇文章描写Scrum,我觉得比较好:https://zhuanlan.zhihu.com/p/631459977 简单科普下PM和PMO 原文来源:https://zhuanlan.zhihu.com/p/546820914 PM - 项目经理(Project Manager) ​ 需要具备以下能力 ​ 1.号召力 2.影响力 3.交流能力 4.应…

IDEA的facets和artifacts

在软件开发领域,IDEA 是指 JetBrains 公司的 IntelliJ IDEA,是一款流行的集成开发环境(Integrated Development Environment)。在 IntelliJ IDEA 中,"facets" 和 "artifacts" 是两个概念&#xff…

智能优化算法应用:基于材料生成算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于材料生成算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于材料生成算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.材料生成算法4.实验参数设定5.算法结果6.…

实习课知识整理3:首页商品列表的展示

对于一个购物商城的项目,主体还得是商品,这篇博客主要介绍如何将数据库中的信息渲染到页面上,这边后端是SpringBoot,前端是html配合thymeleaf模板 1. 编写查询数据库的方法 在这边我在页面上需要两部分的信息,一个是所有的商品&am…

Alnet网络分析与demo实例

参考自 up主的b站链接:霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 Fun_机器学习,pytorch图像分类,工具箱-CSDN博客 数据集下载 http://download.tensorflow.org/example_images/flower_photos.tgz 包含 5 中类型的花,每种…

论文降重方法同义词替换的效果对比与评价 快码论文

大家好,今天来聊聊论文降重方法同义词替换的效果对比与评价,希望能给大家提供一点参考。 以下是针对论文重复率高的情况,提供一些修改建议和技巧,可以借助此类工具: 标题:论文降重方法同义词替换的效果对比…

LIMS实验室管理软件多少钱 智慧实验室管理系统价格

随着实验室管理需求的日益复杂,实验室信息管理系统(LIMS)逐渐成为实验室管理的必备工具。然而,对于许多实验室而言,选择合适的LIMS系统是一项挑战,其中价格是一个重要的考虑因素。本文将以白码LIMS系统为例,探讨LIMS实…

LangChain 31 模块复用Prompt templates 提示词模板

LangChain系列文章 LangChain 实现给动物取名字,LangChain 2模块化prompt template并用streamlit生成网站 实现给动物取名字LangChain 3使用Agent访问Wikipedia和llm-math计算狗的平均年龄LangChain 4用向量数据库Faiss存储,读取YouTube的视频文本搜索I…

【模式识别】探秘分类奥秘:最近邻算法解密与实战

​🌈个人主页:Sarapines Programmer🔥 系列专栏:《模式之谜 | 数据奇迹解码》⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 🌌1 初识模式识…

智能优化算法应用:基于北方苍鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于北方苍鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于北方苍鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.北方苍鹰算法4.实验参数设定5.算法结果6.…

nodejs微信小程序+python+PHP医疗机构药品及耗材信息管理系统-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

RT-Thread启动过程

RT-Thread启动流程 一般了解一份代码大多从启动部分开始,同样这里也采用这种方式,先寻找启动的源头。 RT-Thread支持多种平台和多种编译器,而rtthread_startup()函数是RT-Thread规定的统一启动入口。 一般执行顺序是:系统先从启…

CSS3:绘制多边形

clip-path&#xff1a;该属性使用裁剪方式创建元素的可显示区域&#xff0c;区域内的显示&#xff0c;区域外的不显示。 构建一个三角形 <div class"mybox"></div><style>.mybox {width: 100px;height: 100px;background-color: yellow;clip-path…

JavaOOP篇----第十四篇

系列文章目录 文章目录 系列文章目录前言一、Hashcode的作用二、Java的四种引用,强弱软虚三、Java创建对象有几种方式?前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码…

Android可折叠设备完全指南:展开未来

Android可折叠设备完全指南&#xff1a;展开未来 探索如何使用Android Jetpack组件折叠和展开设备。 近年来&#xff0c;科技界见证了可折叠设备的革命性趋势。这些设备融合了便携性和功能性的创新特点&#xff0c;使用户能够在不同的形态之间无缝切换。在本博客中&#xff0c…

浅析海博深造

文章目录 深造作用 留学种类 选专业 择校 申请流程 申请方式 深造作用 1、个人能力提升&#xff08;学术专业、语言、新文化或新生活方式&#xff09; 2、更好的职业发展&#xff08;起点更高、结交新朋友或扩大社交圈&#xff09; 3、北京上海落户优惠 4、海外居留福…

前端问题记录

jenkins安装vue依赖报错 jenkins 安装依赖&#xff0c;报错cannot find module ‘/root/.jenkins/workspace/项目路径/node_modules/xxxx’&#xff0c;如图上 解决&#xff1a;执行 npm install vue/cli-service --unsafe-perm&#xff0c;再执行npm i

解决 MATLAB 遗传算法中 exitflg=4 的问题

一、优化问题简介 以求解下述优化问题为例&#xff1a; P 1 : min ⁡ p ∑ k 1 K p k s . t . { ∑ k 1 K R k r e q l o g ( 1 α k ∗ p k ) ≤ B b s , ∀ k ∈ K p k ≥ 0 , ∀ k ∈ K \begin{align} {P_1:}&\mathop{\min}_{\bm{p}}{ \sum\limits_{k1}^K p_k } \no…