B026-MySQL基础

目录

      • 数据库概述
        • 数据库概念
        • 数据库的由来和发展
        • 常见的关系型数据库服务器(DBMS)
        • SQL概述
        • 表的概念
      • 数据库的安装与配置
        • 安装
        • 启动和连接MySQL
          • 启动MySQL服务
          • 连接MySQL
        • MySQL图形化管理软件-Navicat
        • 数据库安装失败解决方案
      • MySQL数据库操作
        • 数据库操作和存储引擎
        • MySQL常用列类型[Mysql数据类型---Java数据类型]
        • 表的操作
      • 查询操作

数据库概述

在这里插入图片描述

数据库概念

在这里插入图片描述
1.数据库(Database,简称DB)
是按照数据结构来组织、存储和管理数据的仓库.保存有组织的数据的容器(通常是一个文件或一组文件)
【算法+IO+文件】

2.数据库管理系统(Database Management System,简称DBMS) — mysql
① 专门用于管理数据库的计算机系统软件;
② 能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并对数据完整性、安全性进行控制;
③ 我们一般说的数据库,就是指的DBMS,例如我们马上学习的MySQL就是其中之一;

3.数据库应用系统(Database Application System)
使用数据库技术的系统,基本上所有的信息系统都是数据库应用系统,它通常由软件、数据库和数据管理员组成。我们开发一款软件,然后这款软件能使用到数据库(和数据库有关系,有通信),那么,这一款软件我们就可以称之为数据库应用系统。

数据库的由来和发展

见文档

常见的关系型数据库服务器(DBMS)
数据库公司特点
OracleOracle(甲骨文/神域)运行稳定,可移植性高,功能齐全,性能超群!适用于大型企业领域。
DB2IBM速度快、可靠性好,适于海量数据,恢复性极强。适用于大中型企业领域。
SQL SERVER微软全面,效率高,界面友好,操作容易,但是不跨平台。适用于于中小型企业领域。
MYSQLAB–>SUN–>Oracle开源,体积小,速度快。适用于于中小型企业领域。
SQL概述

SQL:结构化查询语言(Structured Query Language),是关系数据库的标准语言,它的特点是:简单、灵活、功能强大,包含6个部分

一、数据查询语言(DQL):query查询[掌握]–用的多
其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。

二、数据操作语言(DML):【掌握】–用的多
其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。

三、事务处理语言(TPL):java概念
它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。

四、数据控制语言(DCL):
它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。

五、数据定义语言(DDL):
其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。

六、指针控制语言(CCL):Sql编程!..
它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

表的概念

表的特点和常用术语:
表具有固定的列和任意的行,在数学上称为”关系”;
二维表是同类实体的各种属性的集合,每个实体对应于表中的一行,在关系中称为元组,相当于通常的一条记录;表中的列表示属性,称为Field,相当于通常记录中的一个数据项,也叫列/字段
在这里插入图片描述

数据库的安装与配置

安装

见文档

启动和连接MySQL
启动MySQL服务

查看是否启动:
方式一:控制面板 - 管理工具 - 服务 - 查找mysql
方式二:任务管理器 - 服务 - 打开服务 - 查找mysql
方式三:win+r 输入 services.msc - 查找mysql

关闭mysql方式:
1.在服务里右键mysql可以停止mysql
2.win+R - net stop MySQL

启动方式:
方式一:在服务里右键mysql可以启动mysql
方式二:win+R - net start mysql

连接MySQL

win+r - mysql -u(用户名) -p(密码) -h(host) -P(端口)
如输入 mysql -uroot -proot -hlocalhost -P3306 回车

在运行窗口或cmd窗口输入都可以
密码可防窥输入,-p后回车再输入将以*号显示

MySQL图形化管理软件-Navicat

直接安装

连接mysql
在这里插入图片描述

数据库安装失败解决方案

控制面板 - 程序和功能 - 卸载程序 - 卸载mysql

查看Navicat连接不上代表卸载成功

卸载残留文件:
C盘 - Program Files 里搜索 mysql文件夹 删除掉
C盘 - Program Files (x86) 里搜索 mysql文件夹 删除掉
C盘 - ProgramData(这是个隐藏文件夹) 里搜索 mysql数据文件 删除掉

重启电脑

重新安装

MySQL数据库操作

数据库操作和存储引擎

见文档

MySQL常用列类型[Mysql数据类型—Java数据类型]

常用对照
在这里插入图片描述
其他见文档

表的操作

两种创建表的方式,查看表结构和删除表,表的约束
见文档

查询操作

见文档和sql文件

-- 对表的查看 - 数据库查询语句SELECT 列名1,列名2,列名3,...(*) FROM 表名(视图 子查询)-->数据源; -- 不建议写 * (效率慢) 数据库优化方法SELECT * FROM product;  -- 查询所有货品(product) 信息SELECT * FROM product;-- 查询所有货品的id,productName,salePriceSELECT id,productName,salePrice  FROM product;-- 消除重复的数据SELECT DISTINCT  brand FROM product-- 实现数学运算-- 查询所有货品的id,名称和批发价(批发价=卖价*折扣)SELECT id, productName, salePrice*costPrice FROM product-- 查询所有货品的id,名称,和各进50个的成本价(成本=costPrice)SELECT id, productName, 50*costPrice FROM product;-- 查询所有货品的id,名称,各进50个,并且每个运费1元的成SELECT id, productName, 50*(costPrice+1) FROM product;-- 别名的使用-- 查询所有货品的id,名称,各进50个,并且每个运费1元的成本(使用别名)SELECT id, productName, 50*(costPrice+1) as 成本 FROM product;  -- 使用别名的第一种方式SELECT id, productName, 50*(costPrice+1) 成本 FROM product;  -- 使用别名的第二种方式-- 设置显示格式 CONCAT 函数		ex:列名:productSalePrice,行内容:罗技M90商品的零售价为:90.00SELECT CONCAT(productName,'商品的零售价为:',salePrice) AS productSalePrice FROM product;-- 过滤查询 比较运算符 ------------- 公式SELECT 列名1,列名2,... FROM 表名  WHERE  条件;  单条件SELECT 列名1,列名2,... FROM 表名  WHERE  条件1 AND 条件2;  多条件  AND () SELECT 列名1,列名2,... FROM 表名  WHERE  条件1 OR 条件2;  多条件  or ()-- 练习 -- 查询货品零售价为119的所有货品信息.SELECT * FROM product  WHERE salePrice=119;-- 查询货品名为罗技G9X的所有货品信息.SELECT * FROM product WHERE productName='罗技G9X';-- 查询货品名 不为 罗技G9X的所有货品信息.SELECT * FROM product WHERE productName<>'罗技G9X';-- 查询分类编号不等于2的货品信息SELECT * FROM product WHERE dir_id!=2;-- 查询货品名称,零售价,对于零售价小于等于200的货品SELECT productName,salePrice FROM product WHERE salePrice<=200;-- 查询id,货品名称,批发价,对于批发价大于350的货品SELECT id,productName,salePrice*cutoff AS pfj FROM product WHERE salePrice*cutoff>350;-- 思考:使用where后面使用别名不行,总结select和where的执行顺序SQL 的执行顺序  (面试题)from -> where -> SELECT -- 字符串大小写的区分 BINARYSELECT * FROM product WHERE  BINARY productName='罗技g9x'-- 逻辑运算  and or NOT(....)-- 选择id,货品名称,批发价在300-400之间的货品SELECT id,productName, salePrice*cutoff as pfj from product where salePrice*cutoff>=300 and  salePrice*cutoff<=400   -- 选择id,货品名称,分类编号为2,4的所有货品SELECT id,productName ,dir_id FROM product where dir_id=2 OR dir_id=4;-- 选择id,货品名词,分类编号不为2的所有商品SELECT id, productName ,dir_id FROM product where dir_id != 2;-- 选择id,货品名称,分类编号的货品零售价大于等于250或者是成本大于等于200select id,productName ,dir_id ,salePrice,costPrice from product where salePrice>=250 OR costPrice>=200;SELECT 列名1,列名2,... FROM 表名 WHERE 条件;  单条件select 列名1,列名2,... from 表名 where 条件1 and (or) 条件2; -- ============================= 特重要-- 范围查询  BETWEEN AND  between and SELECT 列名1,列名2,(*) FROM 表名  WHERE 列名  between 最小值  and 最大值 ------ 选择id,货品名称,批发价在300-400之间的货品SELECT id,productName,salePrice*cutoff pfj FROM product WHERE salePrice*cutoff>=300 AND salePrice*cutoff<=400; -- 没有用between and 的写法SELECT id,productName,salePrice*cutoff pfj FROM product WHERE salePrice*cutoff between 300 AND 400; -- 用between and 的写法-- 选择id,货品名称,批发价不在300-400之间的货品SELECT id,productName,salePrice*cutoff pfj FROM product WHERE salePrice*cutoff NOT between 300 AND 400;  -- not 的使用-- 集合查询  inSELECT 列名1,列名2 (*) FROM 表名 WHERE 列名 in(1,2,)-- 选择id,货品名称,分类编号为2,4的所有货品SELECT * FROM product where dir_id=2 or dir_id=4; -- 不要in的写法SELECT * FROM product where dir_id IN(2,4); -- 用in的写法-- 选择id,货品名称,分类编号不为2,4的所有货品SELECT * FROM product where dir_id NOT IN(2,4);-- 空值查询-- 查询商品名为NULL的所有商品信息SELECT * FROM product where productName  is  null -- 为空 SELECT * FROM product where productName ="";  -- 对空字符串的查询-- 模糊查询 LIKE    % (匹配零个或多个字符串) _(匹配一个字符串)  like -- 查询id,货品名称,货品名称匹配'%罗技M9_'  SELECT id,productName  FROM product  WHERE productName LIKE '%罗技M9_'-- 查询id,货品名称,分类编号,零售价大于等于200并且货品名称匹配'%罗技M1__'SELECT id,productName,dir_id,salePrice  FROM product  WHERE salePrice>200 AND productName LIKE '%罗技%'-- 正则表达式 -- 查找product_name字段中包含字母的所有数据SELECT * FROM product WHERE  productName  REGEXP'[a-zA-Z]'-- 排序  ORDER BY    DESC   ASC -- 选择id,货品名称,分类编号,零售价并且按零售价降序排序SELECT id,productName,dir_id,salePrice FROM product ORDER BY salePrice  DESC  -- DESC 降序SELECT id,productName,dir_id,salePrice FROM product ORDER BY salePrice   -- ORDER BY 默认 是 ASC-- 选择id,货品名称,分类编号,零售价先按分类编号排序,再按零售价排序 SELECT id,productName,dir_id,salePrice FROM product ORDER BY dir_id, salePrice-- 查询M系列并按照批发价排序(加上别名)SELECT  *, salePrice*cutoff pfj FROM product WHERE productName like '%M%' ORDER BY pfjSQL 的执行顺序  (面试题)    from-> where -> SELECT -> ORDER BY-- 查询分类为2并按照批发价排序(加上别名)      SELECT  *, salePrice*cutoff pfj FROM product WHERE dir_id=2 ORDER BY  pfj--  分页查询 LIMIT  (重点 慢慢来掌握)逻辑分页-- 一次性全部查出来 ,然后把数据交给浏览器,让浏览器自己去分页SELECT * from product物理分页-- 推荐   不一次查询完   LIMIT SELECT * FROM product limit ?,?  --  第一个?代表从哪一个开始查,第二个?代表查询多少条SELECT * FROM product limit 0,5  --  第一页SELECT * FROM product limit 5,5  --  第二页
--------------------------------------------------------------每页展示五条数据10,5        (1-1)*5=025,5        (2-1)*5=5310,5       (3-1)*5=104    15,5       (4-1)*5=15................. (n-1)*5-- 聚集函数-- 查询所有商品平均零售价SELECT AVG(salePrice) FROM product;-- 查询商品总记录数(注意在Java中必须使用long接收)SELECT COUNT(1) FROM product; -- 统计-- 查询分类为2的商品总数SELECT COUNT(1) FROM product WHERE dir_id =2-- 查询商品的最小零售价,最高零售价,以及所有商品零售价总和SELECT MIN(salePrice), MAX(salePrice),SUM(salePrice) FROM product;-- 分组查询 GROUP BY  (稍难的)-- 查询每个商品分类编号和每个商品分类各自的平均零售价SELECT AVG(salePrice) FROM product  GROUP BY dir_id-- 查询每个商品分类编号和每个商品分类各自的商品总数。SELECT  count(*),dir_id  FROM product  GROUP BY dir_id-- 查询每个商品分类编号和每个商品分类中零售价大于100的商品总数:SELECT  count(*),dir_id FROM product WHERE salePrice>100 GROUP BY dir_id -- 查询零售价总和大于1800的商品分类编号以及总零售价和:SELECT   sum(salePrice) ,dir_id FROM product  GROUP BY dir_id HAVING sum(salePrice)>1800-- 分组前的条件用where,分组后的条件用having-- 存储引擎MyISAM  不支持事务  表锁InnoDB   支持事务   行锁memory  不支持事务  表锁    不入库对事务要求高我们用InnoDB,对事务要求不高我们用MyISAM,对事务要求不高 且查询修改极其频繁 且数据不用入库(重启数据库数据就消失)我们用memory

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

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

相关文章

8.ROS的TF坐标变换(二):动态坐标变换、多坐标变换代码讲解(以LIO-SAM为例)

目录 1 ROS的动态坐标变换及代码解释 1.1 什么是ROS的动态坐标变换 1.2 CMakeLists.txt、package.xml基础配置 1.3 发布方代码实现 1.4 接收方代码实现 2 ROS的多坐标变换及代码解释 2.1 什么是ROS的多坐标变换 2.2 发布方代码实现 2.3 接收方代码实现 3 L…

图解系列--功能追加协议,构建Web内容

功能追加协议 1.消除 HTTP 瓶颈的 SPDY 1.1.HTTP 的瓶颈 使用 HTTP 协议探知服务器上是否有内容更新&#xff0c;就必须频繁地从客户端到服务器端进行确认。如果服务器上没有内容更新&#xff0c;那么就会产生徒劳的通信。 若想在现有 Web 实现所需的功能&#xff0c;以下这些…

线程与多线程编程

1. 线程 1.1 概念 线程又可以称为轻量级进程 &#xff0c;在进程的基础上做出了改进。 一个进程在刚刚启动时&#xff0c;做的第一件事就是申请内存和资源&#xff0c;进程需要把依赖的代码和数据&#xff0c;从磁盘加载到内存中这件事是比较耗费时间的&#xff0c;有的业务…

matlab simulink 永磁同步电机PI调速控制

1、内容简介 略 27-可以交流、咨询、答疑 2、内容说明 永磁同步电机调速控制 永磁同步电机PI调速控制 永磁同步电机PI调速控制、PMSM 3、仿真分析 略 4、参考论文 略 链接&#xff1a;https://pan.baidu.com/s/1AAJ_SlHseYpa5HAwMJlk1w 提取码&#xff1a;rvol 路…

科研者的福利!一个集论文、代码、数据集为一体的网站

Papers with Code 是一个总结了机器学习论文及其代码实现的网站。大多数论文都是有GitHub代码的。这个网站最好的地方就是对机器学习做了任务分类&#xff0c;检索对应的模型非常方便。早在18年Paper With Code创立时就轰动一时&#xff0c;仅创立一年就被Facebook收购。 Pape…

Spring AOP记录接口访问日志

Spring AOP记录接口访问日志 介绍应用范围组成通知&#xff08;Advice&#xff09;连接点&#xff08;JoinPoint&#xff09;切点&#xff08;Pointcut&#xff09;切面&#xff08;Aspect&#xff09;引入&#xff08;Introduction&#xff09;织入&#xff08;Weaving&#x…

Linux--初识和基本的指令(3)

目录 1.前言 1.指令 1.1 cat指令 1.2 echo指令 1.3 more 指令 1.4 less指令 1.5 什么时候使用less和more 1.6 head指令 1.7 tail指令 1.8 wc指令 1.9 与时间相关的指令 1.9.1 date指令 1.9.2 cal指令 1.10 16.find指令&#xff1a;&#xff08;灰常重要&#x…

千梦网创:熟悉抖音内容创作的切入方式

因为身边抖音网红的资源比较近&#xff0c;所以虽然一直没有露脸去做短视频运营&#xff0c;但是最近也是跟随朋友一起开始了短视频的学习之路。 在参观过一些“超级直播间”之后&#xff0c;我们敲定了未来的两个盈利方向&#xff0c;这两个方向可以将我们身边的资源极致利用…

MyBatis-逆向工程

1.简单生成 1.添加依赖和插件 <dependencies><!-- MyBatis核心依赖包 --><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.9</version></dependency><!-- MySQL驱动…

金蝶Apusic应用服务器deployApp接口任意文件上传漏洞复现 [附POC]

文章目录 金蝶Apusic应用服务器deployApp接口任意文件上传漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 0x06 修复建议 金蝶Apusic应用服务器deployApp接口任意文件上传漏洞复现 [附POC] 0x01 前言 免责声明…

【前端】-【electron】

文章目录 介绍electron工作流程环境搭建 electron生命周期&#xff08;app的生命周期&#xff09;窗口尺寸窗口标题自定义窗口的实现阻止窗口关闭父子及模态窗口自定义菜单 介绍 electron技术架构&#xff1a;chromium、node.js、native.apis electron工作流程 桌面应用就是…

常见的攻击防护

只做模拟机器使用&#xff0c;不使用真实机器 目录 一、 DHCP饿死和防护应对措施.................................. 1 1&#xff0c; 实验拓扑&#xff1a;...................................................... 2 2&#xff0c; 实验配置............................…

Web自动化测试怎么做?Web自动化测试的详细流程和步骤

1.什么是web自动化测试 自动化&#xff08;Automation&#xff09;是指机器设备、系统或过程&#xff08;生产、管理过程&#xff09;在没有人或较少人的直接参与下&#xff0c;按照人的要求&#xff0c;经过自动检测、信息处理、分析判断、操纵控制&#xff0c;实现预期的目标…

opencv阈值处理

阈值处理 二值化 自适应阈值 OTSU二值化

latex表格中内容过多如何换行【已解决】

最近在写论文的时候放了一个表格&#xff0c;但是表格看起来特别大&#xff0c;因为想让某些内容多的单元格完成换行操作 首先在main.tex引入makecell包 \usepackage{makecell} 然后回到表格找到你想换行的单元格&#xff0c;把\makecell{}加进去&#xff0c;然后在需要换行的…

基于物联网技术的基站能耗监控解决方案-安科瑞 蒋静

摘 要&#xff1a;随着社会的不断发展和进步&#xff0c;人们对通信基站的需求增加。随着通信基站大规模的建设和使用&#xff0c;基站内部的电源情况、供电安全保障或节能减排等问题&#xff0c;仍然是基站建设的着重问题。不管是建设者还是使用者&#xff0c;都应当注重用电安…

[socket 弹 shell] msg_box3

前言 题目比较简单&#xff0c;没开 Canary 和 NX. Arch: amd64-64-littleRELRO: Full RELROStack: Canary foundNX: NX disabledPIE: PIE enabledRWX: Has RWX segments 漏洞利用与分析&#xff1a; 白给的函数调用&#xff0c;其中 ptr 10 是用…

Long-Context下LLM模型架构全面介绍

深度学习自然语言处理 原创作者&#xff1a;cola 随着ChatGPT的快速发展&#xff0c;基于Transformer的大型语言模型(LLM)为人工通用智能(AGI)铺平了一条革命性的道路&#xff0c;并已应用于知识库、人机界面和动态代理等不同领域。然而&#xff0c;存在一个普遍的限制:当前许多…

模拟业务流程+构造各种测试数据,一文带你测试效率提升80%

我们做软件测试的时候&#xff0c;经常需要页面有点数据&#xff0c;特别是涉及到一些数据统计的测试用例的时候&#xff0c;更是需要源源不断的测试数据让前端页面生成对应的报表测试统计的数据正确性。 如果我们通过手工的方式操作业务流程来实现数据的构造的话&#xff0c;少…

【Cisco Packet Tracer】子网划分的计算及实验

子网划分&#xff1a;Internet组织机构定义了五种IP地址&#xff0c;有A、B、C三类地址。A类网络有126个&#xff0c;每个A类网络可能有16777214台主机&#xff0c;它们处于同一广播域。而在同一广播域中有这么多节点是不可能的&#xff0c;网络会因为广播通信而饱和&#xff0…