Mysql数据库学习

1、数据库基本认知

一:数据库分类

关系型数据库:SQL

主要有MySQL,Oracle,Sql Server等,其主要通过表与表之间,行与列之间的关系进行数据的存储。可以通过外键来建立表之间的关联。

非关系型数据库:NoSQL

主要有HBase,MongoDB等,其数据是非关系的,且不使用SQL作为主要的查询语言。

NoSQL与SQL之间的对比

NoSQL与关系型数据库对比

二:MySQL介绍

Mysql是一个具体的关系型数据库管理系统(RDBMS),其支持使用SQL来进行数据的增删改查等操作。Mysql具有许多的优势,包括可移植性,安全性,可跨平台等,适用于各个规模的应用和项目。

三:MySQL基本概念

前言

此处所展示的是MySQL数据库基本的系统库

注意:当你初次打开MySQL服务时,会看见mysql,performance_schema,sys,information_schema这四个基本的系统库【不可进行删除修改等操作,即:不要动着四个系统库】。

基本理论

整个数据库的基本组成

【库】 => 表 => 字段(列) => (名字+数据类型+约束) =>  数据
1:数据库(database)

数据库是按照数据结构来组织,存储和管理结构化数据的仓库,这些数据可以是文本、数字等。在MySQL中,一个数据库由多个表、视图等对象组成。

2:表(table)

表是数据库中的基本存储单元,用于存储数据。表由行(记录)和列(字段)组成。

3:字段(field)

字段是表中的一列,用于存储某一类型的数据。每个字段都有一个唯一的名称和数据类型,以及可能的其他属性(如默认值、是否允许为空等)。

4:数据(Data)

数据是实际存储在表中的内容或记录,是表的实例化的表现。

权限列表

##权限列表:对象级别(库,表):增:create删:drop改:alter查:show数据级别(表内的数据):增:insert删:delete | truncate改:update查:select

2、数据库的常规操作

DCL操作

何为DCL?

数据库控制语言,用于【设置或更改】数据库【用户或角色权限】的语言

DCL具体操作

A、*管理用户操作
【创建用户】语法:create user '用户名'@'主机名' identified BY '密码';案例:create user 'tang'@'localhost' identified by '123456';注意点:连接本地机时,主机名  =>  localhost远程连接时,主机号   =>  %【删除用户】语法:drop user '用户名'@'主机名';案例:drop user 'tang'@'localhost';【获取当前登录用户者的信息】语法:select current_user();
B、*权限操作
1.查看权限:语法:show grants for '用户名'@'主机名'案例:show grants for 'tang'@'localhost';
2.授予权限:授予部分权利:语法:grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';案例:grant create on yb.yb_score to 'tang'@'localhost';授予全部权利:语法:grant all on 数据库名.表名 to '用户名'@'主机名';案例:grant all on yb.yb_score to 'tang'@'localhost';
3.撤销权限:语法:remove 权限列表 on 数据库名.表名 from '用户名'@'主机名';案例:revoke create on yb.yb_score from 'tang'@'localhost';

DDL操作(面向对象级别)

必备知识

1.数据类型
文本字符串类型:char(N) | varchar(N) ✔ | text(N)
整数类型:tinyint | smallint | int(N)/int ✔ | bigint
浮点类型:float | double | money | numeric
定点数值类型:decimal(m,n)【m:整数加小数的长度,即总长;n:精度】 ✔
位类型(boolean值):bit【只有0(false)和1(true)】 ✔
日期时间类型:date【年月日】 ✔ |time【时分秒】 ✔ | datetime ✔ | timestamp【自带默认值】 ✔
2.约束
目的:数据的完整性1.类型2.长度3.是否允许为空:可以为空:NULL / 不可为空:not NULL4.默认值:default 默认值[VALUE]5.唯一键:unique key6.主键(唯一且不能为空):primary key =>没有意义的字段做主键,以不变应万变单一主键组合主键7.外键(从表中的外键引用主表中的主键,主外键的数据类型与约束必须一致):foreign key8.零填充:zerofill => 高位自动补零【若为1号,则以00001形式】9.自增列(面向数值):auto_increment【组合使用:auto_increment primary key】10.无符号数值:unsigned【正数】

A、*库的操作:

【建】库
语法:create database if not exists 库名;
案例:create database if not exists test;

【查】看所有的库
show databases;

【删】库
语法:drop database if exists 库名;
案例:drop database if exists test;

【进入】库

重点完成这步之后才可在库里面进行建表等操作

语法:use 库名;
案例:use test;

B、*表的操作:

【建】表
基本语法:create table TABLE_NAME(FIELD_NAME字段名 DATA_TYPE1数据类型 CONSTRAINT1约束 (comment '注释'),FIELD_NAME字段名 DATA_TYPE2数据类型 CONSTRAINT2约束 (comment '注释'),FIELD_NAME字段名 DATA_TYPE3数据类型 CONSTRAINT3约束 (comment '注释'),...);
案例:create table student(stu_no int(6) zerofill auto_increment primary key,stu_name varchar(10) not null,stu_pid varchar(20) not null unique key,is_party_menber bit not null default 0);

【查】表

1显示当前数据库中所有的表

基本语法:show tables;

效果展示:

2展示表结构的结构定义

基本语法:desc 表名;
案例:desc student;

效果展示:

【改】表
基本语法:alter table 表名;一般在【表外】添加一个外键的约束:
案例:添加stu_age属性,表示学生年龄alter table studentadd column stu_age int; 

【删】表
基本语法:drop table if exists 库名.表名
案例:drop table if exists test.student;

DML操作(面向数据级别【增,删,改】)

1.何为DML

对数据进行操作的语言

2.注意点

所有修改与删除都是基于主键,主键不可删改

3.具体操作

*添加数据

基本语法

insert into TABLE_NAME(FIELD_NAME_1,...,FIELD_NAME_N) values
(VALUE_1,...,VALUE_N)[,(VALUE_1,...,VALUE_N)]\*N;

案例讲解

A.常规操作:insert into student(stu_no,stu_name,stu_pid,is_party_menber,stu_age) values(1,'henry1','321234655476578965',1,23),(2,'henry2','321234655476578964',0,24),(3,'henry3','321234655476578963',0,16),(4,'henry4','321234655476578962',1,18),(5,'henry5','321234655476578961',0,17);

B.在两张表之间进行数据的迁移:1.建立一个附表:create table student_copy(stu_no int(6) zerofill auto_increment primary key,stu_name varchar(10) not null,stu_pid varchar(20) not null unique key,is_party_menber bit not null default 0,stu_age int);2.将数据导进附表insert into student_copy(stu_no,stu_name,stu_pid,is_party_menber,stu_age)select * from student;

*修改数据
基本语法:1、简化描述:update 表明 set 字段名=值 [ where 条件子句 ]2、具体描述:update TABLE_NAME set 字段名_1 = 值1,.....,字段名_N = 值Nwhere 条件【primary_key|unique_key = VALUE;】案例:update student set stu_pid = '123456' where stu_no = 3;

*删除数据

A、delete

基本语法:delete from 表名 where 条件【 primary_key|unique_key = VALUE;【最多一次删一条数据】 】
案例:delete from student_copy where stu_no = 3;

B、truncate

基本语法:truncate table 表名;
案例:truncate table student_copy;

区别:

* delete【可恢复,位置扔占着】
* truncate【不可恢复】

DQL操作(面向数据级别【查】)

A、*简单查询

1、基本语法
select 字段名1 [as] 别名,字段名2 [as] 别名,...
from 表 | 子查询
where 条件
order by 字段名 asc|desc
limit OFFSET,SIZE

说明:limit用于【行区间的裁剪】(分页),不可用于子查询中。其通俗讲解:跳过前 OFFSET 条记录,然后返回接下来的 SIZE 条记录

2、别名介绍

2.1解释

别名就是非表的原始部分

2.2基本语法

[as] 表达式别名

说明】:as可添加,也可不添加

2.3别名的用处

表达式字段  => 表达式别名
多表关联    => 表别名

2.4基本案例

select stu_name name from student;

3、where条件格式
名词介绍:EXP:表达式VALUE:值VALUE_BIG: 比较大的值VALUE_SMALL: 比较小的值基本格式:1.等于:EXP【表达式】 = VALUE;2.不等于:EXP <> VALUE;3.表字段为空值|不为空:EXP is [not] NULL4.关系运算符:EXP >[=] VALUE;EXP <[=] VALUE;EXP between VALUE_SAMLL and VALUE_BIG 等同于 EXP >= VALUE_SMALL and EXP <= VALUE_BIG5.范围:EXP in (VAL_1,...,VAL_N | SUBQUERY)【in为范围,满足在范围中的一个即可】6.逻辑运算符:与:and或:or非:not7.模糊查询:【面向字符串】EXP [not] like '通配符LIKE_EXP'【通配符的位置没有硬性要求】通配符:% : 任意个任意内容 【姓张:name like '张%'】_ : 一个任意内容 【姓张且名字为两个字:name like '张_'】

B、*分页查询

背景介绍

针对student表而言,现有5条数据

pageNumber:页码(哪一页)
pageSize:页容(每一页显示多少条数据)
1、情景一
1.基本语法:select cell(count(1)/pageSize) from 表名;案例:条件:每一页放三条数据,查看一共有几页语句:select ceil(count(1)/3) as total_page from student;

2、情景二
2.基本语法:select * from 表名 limit (pagenNumber-1)*pageSize,pageSize;案例:查某一页的数据条件:查找第一页的数据语句:select * from student limit 0,3;

C、*分组聚合查询

1、基本语法:select 字段名1 [as] 别名,字段名2 [as] 别名,...from 表 | 子查询where 条件									针对表的原始行,进行初步的筛选group by (字段名 as 别名)*N					  多字段分组:左为主,右为次having 条件									针对聚合后的值,进行二次筛选,产生聚合后的新列order by 字段名 asc|desclimit OFFSET,SIZE2.注意点:group by分组后,SELECT 子句中只能包含【被 GROUP BY 列出的列】或者【聚合函数】,否则,会报错。

D、*子查询

1.基本语法
select 字段名1 [as] 别名,(select...) [as] 别名, ...	✔
from 表 | 子查询	✔
where 条件【如:exists (select ...)|expA in (select expB ...)】	✔
group by 字段名
order by 字段名 asc|desc
limit OFFSET,SIZE

说明】:
一:exp 可以表示为 field【字段】,partof(field)【字段的一部分】,concat(fa,fb,…) 【拼接后的】,cal(field)【数值】,…
二:打✔处,表示可以运用子查询
三:【group by】通常与【聚合函数】一起使用

2.具体讲解

数据准备

2.1:对于select的子查询

案例(两表联系):select fk_talent_id,(select talent_name from talents where talent_id=fk_talent_id) as talent_name,subject,scorefrom score;

**2.2:对于from的子查询 **

案例(数据表可以由子查询代替):selectfk_talent_id,scorefrom (select fk_talent_id,scorefrom scorewhere subject in ('Java','JavaScript')) as Torder by score DESClimit 0,2;

2.3:对于where的子查询

案例:select fk_talent_id as id,subject,scorefrom scorewhere score > (select min(score)from scoreWHERE score >= 90);

E、*连接查询

1.原则:即可【子查询】又可【连接查询】,【首选连接查询】
2.解释:多表联合查询join:横向拼接表,宽变大
3.操作:两个主要形式:1.内连接(交集,两表都有的数据):基本语法:select A.内容,....,B.内容,... =>字段别名:提高筛选的性能from tablea as Ainner join tableb as Bon A.主键=B.外键 (and A.fa = VALUE;) 多表√ 两表√ =>【连接条件】where A.fa = VALUE; 两表√ =>合并后进行【条件筛选】2.外连接(全集):左外连接:【主表全集,主表都展示】基本语法:select A.内容,....,B.内容,... =>字段别名:提高筛选的性能from tablea as M =>左表【主表】left [outer] join tableb as S =>从表on M.主键|外键=B.外键|主键 (and A.fa = VALUE;) 多表√ 两表√ =>【连接条件】where A.fa = VALUE; 两表√ =>合并后进行【条件筛选】右外连接:【主表全集,主表都展示】基本语法:select A.内容,....,B.内容,... =>字段别名:提高筛选的性能from tablea as M =>从表right [outer] join tableb as S =>主表on M.主键|外键=B.外键|主键 (and A.fa = VALUE;) 多表√ 两表√ =>【连接条件】where A.fa = VALUE; 两表√ =>合并后进行【条件筛选】全外连接:full join【mysql不支持】笛卡尔积【典型:比赛时间表】基本语法:select A.内容,....,B.内容,... =>字段别名:提高筛选的性能from tablea as Across join tableb as Bon A.主键|外键=B.外键|主键 (and A.fa = VALUE;) 多表√ 两表√ =>【连接条件】where A.fa = VALUE; 两表√ =>合并后进行【条件筛选】

F、*联合查询

1.解释:纵向拼接表,高变大查询字段的数量与类型必须相同,字段名是以第一张表为准。‘
2.union与union all的区分:联合 UNION:去重,排序,效率低联合所有 UNION ALL:不去重,不排序,效率高 √
3.相关知识点:行转列与类转行。案例:列转行:方法:使用union all 来合并两个或多个select语句如:select stu_name, JavaEE as score,'JavaEE' as subject from temp_wide_scoreunion allselect stu_name, Hadoop as score,'Hadoop' as subject from temp_wide_scoreunion allselect stu_name, Spark as score,'Spark' as subject from temp_wide_scoreunion allselect stu_name, Python as score,'Python' as subject from temp_wide_scoreunion allselect stu_name, Project as score,'Project' as subject from temp_wide_score;类转行:注意:根据实际需求结合【聚合函数】使用操作:方法一:使用case..when..then语句如:select user_id,sum(case when subject='语文' then score end) as '语文',sum(case when subject='数学' then score end) as '数学',sum(case when subject='英语' then score end) as '英语'from tb_score  group by user_id;方法二:使用if()函数如:select user_id,sum(if(subject='语文',score,0)) as '语文',sum(if(subject='数学',score,0)) as '数学',sum(if(subject='英语',score,0)) as '英语'from tb_scoregroup by user_id;

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

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

相关文章

分享一个 MySQL 简单快速进行自动备份和还原的脚本和方法

前言 数据备份和还原在信息技术领域中具有非常重要的作用&#xff0c;不论是人为误操作、硬件故障、病毒感染、自然灾害还是其他原因&#xff0c;数据丢失的风险都是存在的。如果没有备份&#xff0c;一旦数据丢失&#xff0c;可能对个人、企业甚至整个组织造成巨大的损失。 …

uniapp H5端使用百度地图

1、登录百度地图开放平台 https://lbsyun.baidu.com/&#xff08;没有账号则先去创建一个百度账号&#xff09; 2、进入百度地图开放平台控制台&#xff08;导航栏“控制台”&#xff09;&#xff0c;点击“应用管理”-“我的应用” 3、选择“创建应用”&#xff0c;应用模块选…

msvcr110.dll丢失的解决方法,亲测有效的几种解决方法

最近&#xff0c;我在启动一个程序时&#xff0c;系统突然弹出一个错误提示&#xff0c;告诉我电脑缺失了一个名为msvcr110.dll的文件。这让我感到非常困惑&#xff0c;因为我之前从未遇到过这样的问题。经过一番搜索和尝试&#xff0c;我总结了5种靠谱的解决方法。下面分享给大…

高效运维:标准化与智能化的运维流程管理实践

高效运维&#xff1a;标准化与智能化的运维流程管理实践 在信息化建设日益深化的今天&#xff0c;运维流程管理已成为企业确保其信息系统稳定、高效运行的关键手段。通过系统化、标准化的运维流程管理&#xff0c;企业能够有效预防系统故障&#xff0c;提升服务质量&#xff0…

React的路由(ReactRouter)-路由导航跳转

1.第一步 // createBrowserRouter路由 RouterProvider组件 import {createBrowserRouter,RouterProvider} from react-router-dom // 创建router实例对象&#xff0c;并配置路由对应关系 const routercreateBrowserRouter([{path:/login,element:<div>我是登录页</di…

vue3-登录小案例(借助ElementPlus+axios)

1.创建一个vue3的项目。 npm create vuelatest 2.引入Elementplus组件库 链接&#xff1a;安装 | Element Plus npm install element-plus --save 在main.js中引入 import ElementPlus from "element-plus";import "element-plus/dist/index.css";ap…

python--序列化模块json与pickle

什么叫序列化&#xff1f; 将原本的字典、列表等内容转换成一个字符串的过程就 叫做序列化。 多用的两个序列化模块&#xff1a;json与pickle json&#xff0c;用于字符串 和 python数据类型间进行转换 pickle&#xff0c;用于python特有的类型 和 python的数据类型间进行转换 …

Scania斯堪尼亚SHL题库综合能力性格测试真题题型解析及面试经验

一、走进Scania斯堪尼亚 Scania是一家成立于1891年的瑞典公司&#xff0c;专注于重型卡车和巴士的制造&#xff0c;以其模块化系统和环保设计闻名。作为全球领先的运输解决方案提供商&#xff0c;Scania不仅提供高质量的车辆&#xff0c;还提供相关服务和融资解决方案。公司秉…

Ruby langchainrb gem and custom configuration for the model setup

题意&#xff1a;Ruby 的 langchainrb gem 以及针对模型设置的自定义配置 问题背景&#xff1a; I am working in a prototype using the gem langchainrb. I am using the module assistant module to implemente a basic RAG architecture. 我正在使用 langchainrb 这个 ge…

实战|记一次java协同办公OA系统源码审计

前言 因为笔者也是代码审计初学者&#xff0c;写得不好的地方请见谅。该文章是以项目实战角度出发&#xff0c;希望能给大家带来启发。 审计过程 审计思路 1、拿到一个项目首先要看它使用了什么技术框架&#xff0c;是使用了ssh框架&#xff0c;还是使用了ssm框架&#xff…

C#基于SkiaSharp实现印章管理(2)

上一篇文章最后提到基于System.Text.Json能够序列化SKColor对象&#xff0c;但是反序列化时却无法解析本地json数据。换成Newtonsoft.Json进行序列化和反序列化也是类似的问题。   通过百度及查看微软的帮助文档&#xff0c;上述情况下需自定义转换类以处理SKColor类型数据的…

搜维尔科技:【研究】触觉手套比控制器更能带来身临其境、更安全、更高效的虚拟体验

自然交互可提高VR模拟的有效性。研究表明&#xff0c;触觉手套比控制器更能带来身临其境、更安全、更高效的虚拟体验。 以下是验证 医疗培训中的触觉技术 “ 95.5%的参与者表示触摸是 XR 教育的重要组成部分&#xff0c;90.9% 的参与者表示 XR 触觉将提供一个安全的学习场所。…

经典文献阅读之--MobileViT(轻量级、通用且移动友好的网络框架)

Tip: 如果你在进行深度学习、自动驾驶、模型推理、微调或AI绘画出图等任务&#xff0c;并且需要GPU资源&#xff0c;可以考虑使用UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU&#xff0c;按时收费每卡2.6元&#xff0c;月卡只需要1.7元每小时&…

尚品汇-(七)

&#xff08;1&#xff09;在网关中实现跨域 全局配置类实现 包名&#xff1a;com.atguigu.gmall.gateway.config 创建CorsConfig类 Configuration public class CorsConfig {Beanpublic CorsWebFilter corsWebFilter(){// cors跨域配置对象CorsConfiguration configuration…

私有化部署ChatGPT:潜力与挑战

背景 以ChatGPT为代表的大语言模型服务在2023年初开始大规模爆发&#xff0c;AI技术从来没有如此接近普通民众。随着以Microsoft&#xff0c; Google&#xff0c; Meta &#xff08;Facebook&#xff09;为代表的科技巨头在AI技术领域相继发布重量级产品和服务&#xff0c;国内…

声场合成新方法:基于声波传播的框架

声场合成是指在房间内的麦克风阵列上&#xff0c;根据来自房间内其他位置的声源信号&#xff0c;合成每个麦克风的音频信号。它是评估语音/音频通信设备性能指标的关键任务&#xff0c;因为它是一种成本效益高的方法&#xff0c;用于数据生成以替代真实的数据收集&#xff0c;后…

武汉星起航:挂牌上海股权交易中心,自营店铺销售额迎飞跃式增长

2023年10月30日&#xff0c;对于武汉星起航电子商务有限公司而言&#xff0c;无疑是一个载入史册的重要日子。这一天&#xff0c;公司成功在上海股权托管交易中心挂牌展示&#xff0c;正式登陆资本市场&#xff0c;开启了全新的发展篇章。这一里程碑式的跨越&#xff0c;不仅彰…

IDEA中Maven--下载安装自己适配的版本---理解

Maven解释&#xff1a; Maven是一个强大的项目管理工具和构建工具&#xff0c;主要用于Java项目。它能够帮助开发团队管理项目的依赖、构建项目、发布文档和报告&#xff0c;并能够自动化许多重复的任务。 Maven的主要作用包括&#xff1a; 依赖管理&#xff1a;Maven能够管理…

6.2 通过构建情感分类器训练词向量

在上一节中&#xff0c;我们简要地了解了词向量&#xff0c;但并没有去实现它。在本节中&#xff0c;我们将下载一个名为IMDB的数据集(其中包含了评论)&#xff0c;然后构建一个用于计算评论的情感是正面、负面还是未知的情感分类器。在构建过程中&#xff0c;还将为 IMDB 数据…

第二期书生·浦语大模型实战营优秀项目一览

书生浦语社区于 2023 年年底正式推出了书生浦语大模型实战营系列活动&#xff0c;至今已有两期五批次同学参加大模型学习、实战&#xff0c;线上课程累计学习超过 10 万人次。 实战营特设项目实践环节&#xff0c;提供 A100 算力支持&#xff0c;鼓励学员动手开发。第 2 期实战…