MySQL-1

news2024/12/23 11:35:40

1 数据库基础概念

  1. Data数据
    对客观事物的符号表示,如图形符号、数字、字母等,数据是数据库中存储的基本对象。
    2. DB数据库
    数据库(Database,简称DB)的定义:“按照数据结构来组织、存储和管理数据的仓库”

    3. DBMS数据库管理系统
    概念:数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,是用于建立、使用和维护数据库,简称DBMS。
    DBMS的作用:它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
    两大功能:DDL数据定义语言和DML数据操作语言(掌握)

    4. 数据库系统功能
    数据定义功能:
    提供数据定义语言(DDL)
    定义数据库中的数据对象
    数据操纵功能:
    ** 提供数据操纵语言(DML)**
    操纵数据实现对数据库的基本操作
    (查询、插入、删除和修改)

    5. 常见DBMS数据库管理系统软件
    关系型数据库:MySQL、Oracle、SQL Server、PostgreSQL、DB2…
    NO SQL数据库:Redis、Mongodb

    6. 关系型数据库
    数据库由一批数据构成的有序集合,这些数据被分门别类地存放在一些结构化的数据表(table)里,而数据表之间又往往存在交叉引用的关系,这种关系使数据库又被称为关系型数据库。

2 数据库基本知识

2.1 表

数据库由一批数据构成的有序集合,这些数据被分门别类地存放在一些结构化的数据表(table)里,而数据表之间又往往存在交叉引用的关系,这种关系使数据库又被称为关系型数据库。
数据库—>表—>数据
表包含列和行,列表示表的字段,行表示表的记录

2.2 MySQL数据类型

MySQL中定义数据字段的类型很重要,对于数据库的优化非常重要。
MySQL支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

数值列类型:整数和浮点数

MySQL支持所有标准SQL数值数据类型。

decimal(M,D)表示更精确的小数值
_decimal(_6,2)表示该参数精度6位,其中整数部分4位,小数部分2位,取值范围为-9999.99~9999.99



字符串类型:

字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。该节描述了这些类型如何工作以及如何在查询中使用这些类型。
CHAR类型和VARCHAR类型长度范围都是0~255之间的大小。
char(长度): 表示固定长度的字符,char(5)该列的数据必须5个长度
varchar(长度): 表示可变长度的字符,varchar(5)该列的数据长度可以在1-5个字符之间。
text:表示长文本数据

在这里插入图片描述

日期和时间类型

表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。
每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQL不能表示的值时使用"零"值。

TIMESTAMP
时间戳列类型以YYYYMMDDhhmmss的格式来表示值,其取值范围是19700101000000到2037年的某个时间,主要用于记录更改或创建某个记录


2.3列的特殊属性

NULL值

NULL是一种无类型的值,表示”空,什么也没有”
缺省为NULL,即插入值时可以不在此字段插入值,默认NULL值。
如果指定了NOT NULL,则必须在插入值时在此字段添入值。

自增AUTO_INCREMENT

针对数值型的列, 在需要产生唯一标志符号或者顺序值时候,可用此属性。
值一般从1开始,每行增加1,在插入NULL到一个AUTO_INCREMENT列时,MySQL会插入一个比该列中当前最大值大1 的值,
一个表中最多能有一个有此属性的列。
对于想使用此属性的列应该定义为NOT NULL,并定义为PRIMARY KEY 或者定义为UNIQUE键。
举例:create table a(i int auto_increment not null primary key);

默认值DEFAULT

可以通过此属性来指定一个缺省值,即如果没有在此列添加值,那么默认添加此值。

主键Primary Key(PK)

数据库主键,指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性。
主键主要是用与其他表的外键关联,以及本记录的修改与删除。
主键的选择原则: 该列值唯一,并基本固定。
如果由多个列同时设置成主键称为”联合主键”。

外键Foreign Key(FK)

数据库外键,表示了两个表之间的关系, 通过它可以强制表的参照完整性。
例如A表和B表存在关系:
A表中有一个非主键列1指向B表的主键列,此时A表中的列1就称为A表的外键。
A表中列1的值必须来源于B表的主键列的值。
B表为主表,A表为从表。


3 创建数据库和创建表结构

3.1创建数据库

方式1:通过DDL语句数据库

create database 数据库名;

方式2:通过可视化工具创建数据库



3.2 创建表结构

方式1:通过DDL语句表结构





方式2:通过可视化工具创建数据库



3.3 删除表结构

drop table 表名;

3.3 通过可视化工具对表进行操作



4 SQL基础CRUD操作

4.1 插入语句

insert into 表名(字段名,字段名, … ) values(字段值,字段值,…);

单条插入


批量插入

insert into 表名(字段名,字段名, … ) values(字段值,字段值,…),(字段值,字段值,…)(字段值,字段值,…),…;



4.2 MySQL重置自增序列的初始值

可以先清空表中的数据,并重置自增序列值:
不能使用delete语句删除表中的数据,只是删除数据,并不会重置自增序列值。
需要使用truncate语句删除表中的所有数据,才会重置自增序列值,
// 删除表内的所有数据
truncate table student;

4.3 MySQL创建表时设置自增序列的初始值

create table 表名(
id int auto_increment primary key not null comment ‘编号’
)auto_increment=初始值


4.4 更新语句

update 表名 set 列名=新值,列名=新值 where子句;
说明:
where 子句是判断语句,用来设定条件,限制只更新匹配的行
where 可以省略

4.5 删除语句

delete from 表名 where子句;
说明:
此语句表示删除表中的行, where 子句是判断语句,用来设定条件,限制只删除匹配的行
带where子句,删除匹配的行
不带where子句,删除表中的所有行,表不被删除
where 可以省略


4.6 drop、truncate、delete区别



4.7 关于MySQL的CURRENT_TIMESTAMP

在前面的表示例中,我们创建表时,”创建时间”和”修改时间”字段用来记录 添加记录时间和更新记录的时间,是需要我们自己维护的
表示每一次执行insert语句时,需要为create_time列,插入current_timestamp值
表示每一次执行update语句时,需要为update_time列,插入current_timestamp值





解决方式:
在创建时间字段的时候,为列设置default默认值属性:
**DEFAULT CURRENT_TIMESTAMP **表示当插入数据的时候,该字段默认值为当前时间
ON UPDATE CURRENT_TIMESTAMP表示每次更新这条数据的时候,该字段都会更新成当前时间
这两个操作是MySQL数据库本身在维护,所以可以根据这个特性来生成【创建时间】和【更新时间】两个字段,且不需要代码来维护


可以通过设计表,看看默认值的效果



4.8 查询语句

SELECT语句用于从一个或多个表中查询出需要的信息。
select列名1,列名2,… from表名 where 子句 group by子句 having子句 order by desc/asc limit a,b

在这里插入图片描述

4.9 where子句

一般而言,表中的记录总是远远多于我们想查询的记录数,这就需要我们在查询是通过一系列的条件来选择出我们想要获取的记录。设置记录应该满足的条件使用WHERE子句。
WHERE 列名或表达式 谓词 列名或表达式


常见条件



当对要搜索的内容不确定时,可以考虑使用LIKE进行模糊搜索



Navicat执行SQL语句有一个异常信息


解决方式:修改一下当前数据库的SQL_MODE

– 查看SQL_MODE
SELECT @@sql_mode;

– 修改SQL_MODE
SET sql_mode=(SELECT REPLACE(@@sql_mode,‘ONLY_FULL_GROUP_BY’,‘’));

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

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

相关文章

多媒体信息化建设,动态数据中心,深入理解分布式系统

目录 一、前言二、双活数据中心三、数据备份方式四、设计双活数据中心需要考虑的问题1、延迟和稳定性2、Quorum/ Tie-Breaker3、工作负载 五、动态数据中心六、深入理解分布式系统1、内容介绍2、作者简介 大家好,我是哪吒。 文末送5本《深入理解分布式系统》 一、…

Amazon Toolkit — CodeWhisperer 使用

tFragment--> 官网:https://aws.amazon.com/cn/codewhisperer/?trkcndc-detail 最近学习了亚马逊云科技的 代码工具,感慨颇多。下面是安装 和使用的分享。 CodeWhisperer,亚马逊推出的实时 AI 编程助手,是一项基于机器学习…

Linux服务器nginx部署Vue前端(详细版)

提示:适用于前后端项目的部署 文章目录 前言一、打包前端文件二、下载和部署Nginx三、配置conf文件启动nginx 前言 搜索到这篇文章想必你已经对Nginx比较了解,我也不对Nginx进行介绍赘述了,只需要明白Nginx本身也是一个静态资源的服务器&…

【MYSQL】MYSQL 的学习教程(三)之索引核心知识点

1. 什么是索引? 索引是一种能提高数据库查询效率的数据结构,一般存储在磁盘的文件中,它是占用物理空间的 适当的索引能提高查询效率,过多的索引会影响数据库表的插入和更新功能。 2. 索引的优劣势 优势: 提高数据…

GEM5 Garent CPU cache消息传递路径:1. NI部分

简介 我们仔细分析下图怎么连的,以及消息传递路径。 图来自https://www.gem5.org/documentation/general_docs/ruby/ 代码的连接 fs.py->ruby.py-> gem5/configs/ruby/MESI_Two_Level.py 中的 create_system( options, full_system, system, dma_ports, b…

STM32单片机项目实例:基于TouchGFX的智能手表设计(7)MVP架构下的交互逻辑设计

STM32单片机项目实例:基于TouchGFX的智能手表设计(7)MVP架构下的交互逻辑设计 目录 一、概述 二、MVP架构下的交互逻辑 一、概述 本文例程是基于 TouchGFX 的智能手表设计—Designer 软件 UI 设计的例程 0B-2_STM32U575_MVP_Interactive工…

【点选验证码识别】某招标网站反爬虫分析与验证码自动识别

文章目录 1. 写在前面2. 风控描述3. 验证码裁剪4. 验证码识别 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感兴趣…

Redis基础篇-002 初识Redis

1、认识NoSQL 1.1 概念 NoSQL是一个非关系型数据库。 常见的NoSQL有:Redis、MongoDB 1.2 NoSQL与SQL的区别 类别SQLNoSQL数据结构结构化非结构化数据关联关联非关联查询方式SQL非SQL事务特性ACIDBASE存储方式磁盘内存扩展性垂直水平使用场景1)数据结…

Uniapp + Vue3 封装请求工具挂载全局

新建request.js工具类 const http {// baseUrl 地址baseUrl: http://localhost:8080,// 请求方法request(config) {// config:请求配置对象,具体参照uniapp文档config beforeRequest(config)// 请求地址拼接config.url this.baseUrl config.url// 异…

WIN10安装gurobi给matlab使用(记录)

https://www.gurobi.com/downloads/gurobi-software/ 这是以前的matlab路径,需要修改成新的 使用校园网激活一下 运行gurobi_setup Google报错信息,发现mathwork官方的解释是:找不到相关的dll文件,所以mex无效。 解决方案&…

Unity | Shader基础知识(第八集:案例<漫反射材质球>)

目录 一、本节介绍 1 上集回顾 2 本节介绍 二、什么是漫反射材质球 三、 漫反射进化史 1 三种算法结果的区别 2 具体算法 2.1 兰伯特逐顶点算法 a.本小节使用的unity自带结构体。 b.兰伯特逐顶点算法公式 c.代码实现——兰伯特逐顶点算法 2.2 代码实现——兰伯特逐…

Windows下结束进程

可以用命令 netstat -ano | findstr :8088 直接找到端口号为8088的进程PID; 根据PID进程号结束进程 :taskkill /pid 14696 -t -f ;

研发提效必备技能:手把手教你基于Docker搭建Maven私服仓库

沉淀,成长,突破,帮助他人,成就自我。 大家好,我是冰河~~ 在研发的过程中,很多企业都会针对自身业务特点来定制研发一些工具类库,但是这些工具类库又不会对外公开,那如何在组织内部共…

如何使用支付宝的沙箱环境在本地配置模拟支付并发布至公网测试

文章目录 前言1. 下载当面付demo2. 修改配置文件3. 打包成web服务4. 局域网测试5. 内网穿透6. 测试公网访问7. 配置二级子域名8. 测试使用固定二级子域名访问 前言 在沙箱环境调试支付SDK的时候,往往沙箱环境部署在本地,局限性大,在沙箱环境…

oracle23安装并 配置内网代理(安装nginx oracle23)

安装nginx步奏如下 1.安装所需依赖 yum install -y gcc gcc-c pcre pcre-devel zlib zlib-devel openssl openssl-devel automake autoconf libtool make2. 解压nginx压缩包,进入解压后的nginx目录 tar -xvf ./nginx-1.24.0.tar.gzcd ./nginx3. 以下编译命令中增…

深度学习或机器学习的模型部署相关的初步了解及分析

机器学习-深度学习 部署相关资料文档 这是上班之后的第一个文档,由于项目原因需要去了解一些和模型部署相关的知识,所以就简单了解了一下相应的部署引擎和框架,也是刚刚开始学习,如果有什么写的不对的欢迎大家交流,看…

2024年3月电子学会青少年编程等级考试时间安排

1考试方式 1. 在线居家考试(全国); 2. 对于符合线下考试要求的考试服务网点,经地方实地调研报学会总部批准后,可组织线下考试。 2报名时间 报名时间:2023年12月21日-2024年3月12日16:00; 考…

Web API ------- requestAnimationFrame

官方文档 requestAnimationFrame 是什么 window.requestAnimationFrame() 告诉浏览器——你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画。该方法需要传入一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行 …

HTML输出特殊字符详细方法

以下是部分特殊字符代码表,它们的完整应用代码格式为:&#;用下面的四位数字替换,将得到对应的符号。(注意:应用这些代码,编辑器应该切换到HTML模式) ☏260f ☎260e ☺263a ☻263b ☼263c ☽…

【UML】第6篇 用例图(1/3)

目录 一、什么是用例图 二、参与者 2.1 什么是参与者 2.2 如何识别参与者 2.3 参与者之间的关系 从今天开始,就到了最干的各种的图的梳理和学习了,未来AI就能编码了,把业务建模和设计的基本功打好,也许能和AI和平相处呢。 一…