数据库学习总结(MySQL)

news2024/11/24 0:52:14

一.为什么要使用数据库?

在我们平时存储数据的时候,往往采用文件存储即可,所以,为什么要使用数据库呢?

原因在于,文件存储数据有以下缺点:

  • 文件的安全性问题
  • 文件不利于数据查询和管理
  • 文件不利于存储海量数据
  • 文件在程序中控制不方便

为了解决上述问题,我们创造了更适合存储数据的软件——数据库.它的存储介质是磁盘内存,能更有效的管理数据。

数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器.

二.数据库

1.数据库的分类

数据库可以分为关系数据库和非关系数据库

关系数据库:

关系型数据库指的是使用关系模型(二维表格模型)来组织数据的数据库。 

常见关系型数据库管理系统(ORDBMS):

  1. Oracle
  2. MySql
  3. Microsoft SQL Server
  4. SQLite
  5. PostgreSQL
  6. IBM DB2

非关系数据库 :

非关系型数据库又被称为 NoSQL(Not Only SQL ),意为不仅仅是 SQL。通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定,常用于存储非结构化的数据。

常见的NOSQL数据库:

  1. 键值数据库:Redis、Memcached、Riak
  2. 列族数据库:Bigtable、HBase、Cassandra
  3. 文档数据库:MongoDB、CouchDB、MarkLogic
  4. 图形数据库:Neo4j、InfoGrid
关系数据库和非关系数据库的区别
关系数据库非关系数据库
使用SQL一般不使用
事务支持支持不支持
复杂操作支持不支持
海量读写操作效率低效率高
基本结构基于表和列,结构稳定灵活性比较高
使用场景业务方面的OLTP系统用于数据的缓存或基于统计分析的OLAP系统

 2.数据库的操作

2.1数据库的操作

2.1.1显示当前数据库

show databases;

2.1.2创建数据库

create database 数据库名;

2.1.3使用数据库

use 数据库名;

2.1.4删除数据库

drop 数据库名;

2.2常见数据类型

2.2.1数值类型

分为整型和浮点型(只列举较常用类型)

数据类型大小对应Java类型
BIT[ (M) ]
M 指定位数,默认 为1
常用 Boolean 对应 BIT ,此时
默认是 1 位,即只能存 0 和1
INT4字节
Integer
DECIMAL(M, D)
M/D 最大值+2
BigDecimal

2.2.2字符串类型

数据类型大小对应Java类型
VARCHAR (SIZE)
0-65,535 字节
String
TEXT0-65,535字节String

2.2.3日期类型

数据类型大小说明对应Java类型
DATATIME8字节
范围从 1000 9999 年,不会进行时区的检索及转换
java.util.Date
java.sql.Timestamp
TIMESTAMP4字节
范围从 1970 2038 年,自动检索当前时区并进行转换。
java.util.Date
java.sql.Timestamp

2.3表的操作

需要操作数据库中的表的时候,需要先使用该数据库

use 数据库名;

2.3.1查看表的结构

desc 表名;

2.3.2创建表

CREATE TABLE table_name (
 field1 datatype,
 field2 datatype,
 field3 datatype
);

2.3.3删除表

drop table 表名;

2.3.4新增

insert into 表名 values(值,值...);
insert into 表名(列名,列名...) values(值,值...),(值,值...)...;

2.3.5查询

1.指定列查询
select * from 表名;
2.指定列查询
select 列名,列名...from 表名;
3.表达式查询
select 列名+表达式 from 表名;
4.指定别名查询
select 列名+列名+... as 别名 from 表名;
5.去重查询
select distinct 列名 from 表名;
6.查询结果排序
select 列名,列名... from 表名 order by 列名1,order by 列名2...;
  6.1降序排序
     select 列名,列名... from 表名 order by 列名 desc;
  6.2升序排序
     select 列名,列名... from 表名 order by 列名 asc;

7.条件查询:where

比较运算符:

运算符说明
>,>=,<,<=大于,大于等于,小于,小于等于
=
等于, NULL 不安全,例如 NULL = NULL 的结果是 NULL
<=>等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1)
!=,<>不等于
BETWEEN a0 AND a1
范围匹配, [a0, a1] ,如果 a0 <= value <= a1 ,返回 TRUE(1)
IN(option,...)
如果是 option 中的任意一个,返回 TRUE(1)
IS NULL
是 NULL
IS NOT NULL
不是 NULL
LIKE
模糊匹配。% 表示任意多个(包括 0 个)任意字符; _ 表示任意一个字符

逻辑运算符:

运算符说明
AND
多个条件必须都为 TRUE(1) ,结果才是 TRUE(1)
OR
任意一个条件为 TRUE(1), 结果为 TRUE(1)
NOT
条件为 TRUE(1) ,结果为 FALSE(0)
1. WHERE 条件可以使用表达式,但不能使用别名。
2. AND 的优先级高于 OR ,在同时使用时,需要使用小括号 () 包裹优先执行的部分

8.分页查询:LIMIT

limit用来限制每次查询的结果是几个

 用offset可以指定从哪里开始查询

 2.3.6修改(update)

update 表名 set 列名=值,列名=值...where 条件;

2.3.7删除(delete)

delete from 表名;
delete from 表名 where 条件;

2.4数据库约束下的增删改查

例:建立student和class两个表

2.4.1not null

creat table student(id int not null,name varchar(20) not null);

2.4.2unique

create table student (id int unique,name varchar(20));

2.4.3default

create table student (id int unique,name varchar(20) default '无名氏');

2.4.4primary key

主键,身份标识,唯一且不为空,相当于unique 和not null 的综合

一个表里只能有一个主键,用一个列做主键,复合主键不常见

create table student (id int primary key,name varchar(20));

自增主键:

create table student (id int primary key auto_increment ,name varchar(20));

2.4.5foreign key 外键

创建了两张表

create table class(classId int primary key auto_increment,classNam e varchar(20));
create table student(studentId int primary key auto_increment,name varchar(20), classId int,foreign key(classId) references class(classId));

此时就要求student表中每个记录的classId得在class表中的classId存在

2.4.6聚合查询

查询过程中,表的行和行进行一定的运算

1.count 函数

2.sum求和

只针对数字列有效,字符串列无效

3.avg计算平均值

 计算总平均值

 4.max/min

2.4.7分组聚合

这些聚合函数,默认都是针对这个表里所有的类进行了聚合,有时候,还需要分组聚合,也就是,按照指定的字段,把记录分成若干组,每一组分别使用聚合函数.

1.group by

按照职位进行分组,查询平均工资

 分组的时候,还可以指定条件筛选,先搞清楚是分组前还是分组后

(1).分组前,筛选,使用where条件

求每个岗位的平均工资,但是刨除孙悟空

 (2).分组后,筛选,使用having条件

求每个岗位的平均工资,但是刨除老板

 (3).还可以同时使用

2.4.8联合查询/多表查询

笛卡尔积:把表进行排列组合

去掉笛卡尔积组成的表的多余项,就是多表查询 

 上述联合查询,其实都是内连接(inner join).MySQL还有一种联合查询,叫做外连接

 2.5索引

索引 index,即目录

2.5.1查看索引

show index from 表名

 2.5.2创建索引

create index 索引名 on 表名(列名);

 把表中的内容,根据name,又搞了一份目录出来

如果表中已经有很多的数据了,就不要再创建索引了

2.5.3删除索引

drop index 索引名 on 表名

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

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

相关文章

Revit构件显隐:参数和插件控制构件显隐性操作

一、如何通过参数来控制族中不同构件的显隐性? 在这里&#xff0c;将它分享给大家~ 首先&#xff0c;我们在项目中任意绘制一道墙&#xff0c;然后任意布置一个带有门把手的门&#xff0c;如下图&#xff1a; 接着&#xff0c;我们【双击】进入这个门族的编辑界面&#xff0c;…

C++ 互斥锁原理以及实际使用介绍

兄弟姐妹们&#xff0c;我又回来了&#xff0c;今天带来实际开发中都需要使用的互斥锁的内容&#xff0c;主要聊一聊如何使用互斥锁以及都有哪几种方式实现互斥锁。实现互斥&#xff0c;可以有以下几种方式&#xff1a;互斥量&#xff08;Mutex&#xff09;、递归互斥量&#x…

掌握虚拟专用网络配置

目录 一、防火墙的IPSEC VPN 二、DSVPN 一、防火墙的IPSEC VPN 总体拓扑如下&#xff1a;实现PC间的加密通信。 FW1的配置&#xff1a;划分接口配置地址。 定义感兴趣流&#xff1a; 注&#xff1a;什么是感兴趣流&#xff1f;答&#xff1a;感兴趣流是VPN的术语&#xff0…

银行数字化转型导师坚鹏:数字化思维创新与金融业转型升级

数字化思维创新与金融业转型升级 课程背景&#xff1a; 很多金融机构存在以下问题&#xff1a; 金融机构的员工不知道需要具备什么样的数字化思维 不清楚数字化思维对金融机构转型升级的重要影响&#xff1f; 不清楚数字化背景下如何进行金融机构转型升级&#xff1f; …

Linux 块设备 EMMC 驱动介绍

目录: 高质量文章导航-持续更新中 前置:硬件接口 EMMC(Embedded Multi-Media Card)是一种用于存储和传输数据的嵌入式存储器(芯片),通常用于移动设备和嵌入式设备中。Linux内核提供了一个通用的EMMC驱动框架,可以支持各种不同的EMMC设备。 EMMC总线采用了典型的主从…

通过Python的PIL库给图片添加图片水印

文章目录 前言一、素材准备1.原图2.水印图 二、使用PIL库给图片添加图片水印1.引入库2.定义图片路径3.打开原图4.打开水印图片5.计算水印图片大小6.计算原图大小7.调整水印图片大小7.1调整前7.2调整后 8.计算水印图片位置8.1左上8.2左下8.3右上8.4右下8.5中间 9.添加水印10.保存…

Windows11台式机连接Type-C触摸屏显示器

我的设备是GoBiggerR便携触控屏&#xff0c;有1个mini-HDMI和2个USB-C接口。家用的是台式机&#xff0c;玩一些游戏用触控比较方便&#xff0c;于是想把触控屏利用上。 先说结论&#xff0c;我的方案是使用arpara VR DisplayPort 1.4数据线。 arpara 5K VR头显配件3.5米数据线…

U-Boot 初次编译

1.在 Ubuntu 中创建存放 uboot 的目录 &#xff0c;比如我的是/home/hsj/linux/IMX6ULL/uboot,然后在此目录 下新建一个名为“alientek_uboot”的文件夹用于存放 uboot 源码。alientek_uboot 文件夹创建成功以后使用 FileZilla 软件将正点原子提供的 uboot 源码拷贝到此目录中.…

Docker 部署 MySQL 一主多从

服务器规划&#xff1a;使用docker方式创建&#xff0c;主从服务器IP一致&#xff0c;端口号不一致 主服务器&#xff1a;容器名 mysql-master&#xff0c;端口 3306从服务器&#xff1a;容器名 mysql-slave1&#xff0c;端口 3307从服务器&#xff1a;容器名 mysql-slave2&am…

springboot+vue幼儿园管理系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的幼儿园管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌…

删除Android手机自带应用

目录 1、下载手机adb插件 2、进入开发者模式 3、删除应用 4、之后记得关闭手机usb及开发模式 1、下载手机adb插件 Downloads - ADB Shell 之后路径行输入cmd&#xff0c;或者winr&#xff0c;进入该目录&#xff1a; 2、进入开发者模式 设置--系统--关于手机--快速多次点…

YOLOv7+双目实现三维跟踪(python)

YOLOv7双目实现三维跟踪&#xff08;python&#xff09; 1. 目标跟踪2. 测距模块2.1 测距原理2.2 添加测距 3. 细节修改&#xff08;可忽略&#xff09;4. 实验效果 相关链接 1. YOLOV5 双目测距&#xff08;python&#xff09; 2. YOLOV7 双目测距&#xff08;python&#x…

快速发展、持续领跑,软件顶级盛会第二届中国国际软件发展大会成功召开

2023年4月18日&#xff0c;第二届中国国际软件发展大会在北京国家会议中心召开&#xff0c;工业和信息化部党组成员、副部长王江平出席大会并致辞。 王江平副部长表示&#xff0c;党的十八大以来&#xff0c;我国软件产业快速发展&#xff0c;核心技术持续突破&#xff0c;产业…

LiveCharts2 初步认识

文章目录 1 LiveCharts2 是什么&#xff1f;2 LiveCharts2 可以做什么&#xff1f;3 简单使用LiveCharts2 &#xff0c;实现动态曲线图 1 LiveCharts2 是什么&#xff1f; GitHub&#xff1a;https://github.com/beto-rodriguez/LiveCharts2 官网&#xff1a; https://lvchar…

CANoe自带的诊断工程分析

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

基于matlab的长短期神经网络的三维路径跟踪预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的三维路径跟踪预测 MATALB代码 效果图 结果分析 展望 参考论文 背影 路径跟踪是指通过计算机算法&#xff0c;。长短期记忆模型对复杂&#xff0c;非线性运动的目标跟踪&#xff0c;解决目标跟踪困难&a…

回溯算法专题

回溯算法专题 框架篇全排列问题N 皇后问题如果只需要一个合法答案&#xff0c;怎么办&#xff1f; 快速排序LeetCode 912. 排序数组解题思路代码实现LeetCode 215. 数组中的第K个最大元素解题思路代码实现总结 不要纠结&#xff0c;干就完事了&#xff0c;熟练度很重要&#xf…

e与phi不互素 --- 四道题详记

文章目录 题一([MoeCTF2022]signin)题目描述&#xff1a;题目分析&#xff1a; 题二(unusualrsa5)题目描述&#xff1a;题目分析&#xff1a; 题三([0ctf 2016]RSA?)题目描述&#xff1a;题目分析&#xff1a; 题四(2022ctfshow卷王杯现代密码签到)题目描述&#xff1a;题目分…

【Python】re模块

一、re模块简介及操作方法 正则表达式其本身就是一种小型的&#xff0c;高度专业化的编程语言。在Python中&#xff0c;它被内 嵌在了re模块里面&#xff0c;正则表达式模式被编译成一系列的字节码&#xff0c;然后由用C编写的匹 配引擎执行。 1、re.search方法 re.search 扫描…

“王炸”组合竞逐「行泊一体」

去年开始&#xff0c;在中国市场&#xff0c;「行泊一体」的热度&#xff0c;不亚于当年特斯拉推出FSD&#xff0c;甚至更加火热。从上游芯片、传感器&#xff0c;到域控制器、智能驾驶系统供应商以及车企&#xff0c;都在公开场合不断普及这个组合功能。 「行泊一体」市场的启…