MySQL-1

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.mzph.cn/news/239312.shtml

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

相关文章

Qt WebAssembly开发环境配置

目录 前言1、下载Emscripten SDK2、 安装3、环境变量配置4、QtCreator配置5、运行示例程序总结 前言 本文主要介绍 Qt WebAssembly 开发环境的配置。Qt for Webassembly 可以使Qt应用程序在Web上运行。WebAssembly(简称Wasm)是一种能够在虚拟机中执行的…

FFmpeg 简单文档

一、播放器框架 常用音视频术语 容器/文件(Conainer/File):即特定格式的多媒体文件,比如mp4、flv、mkv等。媒体流(Stream):表示时间轴上的一段连续数据,如一段声音数据、…

【圣诞】极安云科赠书活动第①期:CTF实战:从入门到提升

【圣诞】极安云科赠书活动第①期:CTF实战:从入门到提升 9787111724834 9787121376955 9787302556275 ISBN编号:9787111724834 书名:CTF实战:从入门到提升 定:99.00元 开本:184mm260&#xff…

Stable-diffusion-webui本地部署和简要介绍

Stable Diffusion 是一款基于人工智能技术开发的绘画软件,它可以帮助艺术家和设计师快速创建高品质的数字艺术作品。是2022年发布的深度学习文本到图像生成模型。它主要用于根据文本的描述产生详细图像,同时也可以应用于其他任务,如内补绘制、…

提示“由于找不到mfc140u.dll,无法继续执行代码”如何解决?

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是找不到某个动态链接库文件,比如mfc140u.dll。这个问题可能会导致某些应用程序无法正常运行或打开。 一、关于找不到mfc140u.dll文件造成会的问题 mfc140u.dll是Visual C中的一个…

【Amazon 实验①】Amazon WAF功能增强之实验环境准备

文章目录 1. 实验介绍2. 实验环境准备 1. 实验介绍 在真实的网络空间中,攻击者会使用大量广泛分布的僵尸网络、肉机等发起对目标的攻击。 其来源分布一般比较分散,因此难以简单防范。 本实验联合使用有多种AWS服务:Cloudfront、 Lambdaedge…

VPN理论入门及GRE、L2TP、IPsec(HCIP)

一、VPN概述 IPsec-VPN: 1、应用范围:用于分公司和总部之间。 2、作用:机密性、证书(身份认证) VPN概述 VPN概述:VPN(Virtual Private Network)是指依靠Internet服务提供商ISP&a…

一文读懂Java中的设计模式——代理模式,以翻译场景举例,特别通俗易懂!

代理模式概念 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。目的:为其他对象提供一种代…

01-基于粤嵌GEC6818实现屏幕的显示固定颜色进行自动切换

基于GEC6818实现屏幕颜色的切换 本文使用开发板GEC6818,实现屏幕显示特定颜色并且进行自动切换的功能。 文章目录 基于GEC6818实现屏幕颜色的切换一、 初始化开发板--(开发板是新的则可以省略很多步骤)1.1 **删除文件和文件夹**1.2 **查看磁盘…

【送书福利-第三十一期】《区块链安全理论与实践(安全技术经典译丛)》

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号:程序员洲洲。 🎈 本文专栏:本文…

手把手教你基于 FastGPT 搭建个人知识库

前言 大家好,我是潇潇雨声。我发现在使用 GPT 时,尽管它能够生成一些小红书文案和日志,但内容常常显得空洞缺乏深度。今天我想分享一个解决这个问题的方法,那就是基于开源项目 FastGPT[1]。 我们可以通过向 GPT 提供一些有针对性的…

Python---搭建Python自带静态Web服务器

1. 静态Web服务器是什么? 可以为发出请求的浏览器提供静态文档的程序。 平时我们浏览百度新闻数据的时候,每天的新闻数据都会发生变化,那访问的这个页面就是动态的,而我们开发的是静态的,页面的数据不会发生变化。 …

Floyd求最短路(Floyd算法)

参考:约会怎么走到目的地最近呢?一文讲清所有最短路算法问题-CSDN博客 有4个城市8条路,公路上的数字表示这条公路的长短,并且路是单向的,现在要求我们求出任意两个城市之间的最短路程,也就是求任意两个点之…

蓝桥杯2019年10月青少组Python程序设计省赛真题

1:有n个人围成一个圈,按顺序排好号然后从第一个人开始报数(从1到3报数),报到3的人退出圈子,然后继续从1到3报数,直到最后留下一个人游戏结束,问最后留下的是原来第几号输人描迹:输人一个正整数n 输出描迹:输出最后留下的是原来的第几号 [样例输人] [样例输出] 2: 3、 […

ACM32G1x3有那些优势?适用于那些产品上?

ACM32G1x3优势 • 320KB 程序Flash64KB SRAM,跑RTOS程序开发更加方便 • 从外挂Flash通过DMA搬运图片数据到PSRAM,无需打断程序运行 • 120MHz M33内核,处理性能佳 • 集成2路CAN接口,适合工控等需要CAN接口的场景 • QS…

[JS设计模式]Flyweight Pattern

Flyweight pattern 享元模式是一种结构化的设计模式,主要用于产生大量类似对象而内存又有限的场景。享元模式能节省内存。 假设一个国际化特大城市SZ;它有5个区,分别为nanshan、futian、luohu、baoan、longgang;每个区都有多个图…

代码随想录刷题题Day20

刷题的第二十天,希望自己能够不断坚持下去,迎来蜕变。😀😀😀 刷题语言:C Day20 任务 ● 理论基础 ● 77. 组合 1 回溯算法理论基础 1.1 回溯法 回溯法是一种搜索的方式,是递归的副产品&#x…

海外媒体发稿:雅虎全球发稿推广脱颖而出的10种方法-华媒舍

雅虎全球发稿是一项重要的推广手段,能够帮助企业和个人提升品牌知名度和曝光率。在众多的发稿中脱颖而出并不容易。本文将为您介绍10种让您的雅虎全球发稿在众多文章中脱颖而出的方法,帮助您取得更好的效果。 1. 深入研究目标受众 在撰写雅虎全球发稿前…

Python to_numeric函数参数解读与最佳实践!

更多资料获取 📚 个人网站:ipengtao.com Python中的to_numeric函数是pandas库提供的一个强大而灵活的工具,用于将数据转换为数字类型。本文将深入探讨to_numeric函数的各种参数和用法,通过丰富的示例代码帮助大家更全面地理解和运…

基于thinkphp+vue的大学生校园生活服务平台sb00r

大学生一体化服务平台可以提高大学生综合服务信息管理问题的解决效率,优化大学生综合服务信息处理流程,保证大学生综合服务信息数据的安全,它是一个非常可靠,非常安全的应用程序。 运行环境:phpstudy/wamp/xammp等 开发语言&#…