当前位置: 首页 > news >正文

网页后端开发(基础4--数据库MySQL)

 MySQL概述

数据库:DataBase(DB),是存储和管理数据的仓库。

数据库管理系统:DataBaseManagementSystem(DBMS),操纵和管理数据库的大型软件。
SOL:Structured Query Language,操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准.

MySQL基础设置

MySQL连接语法:mysql -u用户名 -p密码 [-h数据库服务器IP地址 -P端口号]

例如:mysql -uroot -p1234

退出MySQL

MySQL数据模型

关系型数据库:建立在关系模型基础上,由多张相互连接的二维表组成的数据库。

特点:
使用表存储数据,格式统一,便于维护。
使用SQL语言操作,标准统一,使用方便,可用于复杂查询

DBMS(数据库管理系统,Database Management System)是一种用于操纵和管理数据库的大型软件系统。它的主要功能包括建立、使用和维护数据库,确保数据库的安全性和完整性。DBMS是数据库系统的核心组成部分,通过它可以对数据库进行定义、查询、更新及各种控制。

主要功能

  1. 数据定义:DBMS提供数据定义语言(DDL),用于定义数据库的结构、约束和权限。

  2. 数据操作:DBMS提供数据操作语言(DML),用于实现对数据的追加、删除、更新和查询。

  3. 数据库运行管理:包括并发控制、安全性检查、存取限制控制、完整性检查和事务管理等。

  4. 数据组织、存储与管理:分类组织、存储和管理各种数据,提高存储空间利用率和存取效率。

  5. 数据库保护:通过恢复、并发控制、完整性控制和安全性控制来保护数据库中的数据。

SQL语句

SQL:一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准。

SQL分类

DDL(对数据库和表的结构进行处理)

对数据库的处理

查询所有数据库  show databases;
查询当前数据库  select database;
使用/切换数据库  use 数据库名;
创建数据库  create database [if not exists] 数据库名 [default charset utf8mb4];
删除数据库 drop database [if exists] 数据名;

示例:

连接数据库:

创建数据库:

创建重复数据库:(会产生报错,需要使用 [if not exists] )

查询所有数据库:

注意:information_schema  mysql  performance_schema  sys这四个是Mysql的系统数据库,尽量不要对这四个数据库进行操作。

使用/切换数据库:

查询当前数据库:

删除数据库:

注意:
上述语法中的database,也可以替换成Schema。
如:create schema dbo1;

MySQL8版本中,默认字符集为utf8mb4

图形化工具

使用命令提示符管理MySQL时,没有提示且操作比较繁琐,所以使用客户端工具。

MySQL客户端工具-图形化工具:SQLyog,Navicat,Premium,Intelly IDEA,DataGrip

DataGrip是JetBrains旗下的一款数据库管理工具,是管理和开发MySQL、Oracle、PostgreSQL的理想解决方案。

具体操作:

选择需要执行的语句,点击运行,运行代码。

且执行的语句不会丢失,可以使用下面方法找回:

可以使用图形化工具直接进行创建数据库:

可以使用图形化工具直接进行删除数据库:

刷新数据库:

表结构的数据类型

MySQL中的数据类型有很多,主要分为三类:数值类型、字符串类型、日期时间类型

数值类型:

字符串类型:

日期时间类型:

总结:

1.数值类型在定义的时候,后面加了unsigned关键字是什么意思?
unsigned表示无符号类型,表示只能取及正数
不加默认是signed,表示可以取负数


2.char与varchar的区别是什么?什么时候用char,什么时候用varchar
char是定长字符串,varchar是变长字符串
如果一个字段的长度是固定的,建议使用char;如:身份证号、手机号
如果一个字段的长度不是固定的,建议使用varchar;如:用户名、姓名

对表结构的创建

给表内添加数据:

查询表内数据:

对表结构的约束

约束:约束是作用于表中字段上的规则,用于限制存储在表中的数据。

目的:保证数据库中数据的正确性、有效性和完整性。

示例:

表的编号不能重复且不能为空。

手机号不能重复。

使用方法:

运行结果:

总结

示例:

对表结构的查询,修改,删除

注意:在删除表时,表中的全部数据也会被删除

查询表:

查询表结构:

查询建表语句:

添加表结构:

修改表的一个结构的名称:

删除表的某个结构:

修改整个表的名称:

删除整个表

DML(对表的数据进行处理)

        DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增、删、改操作。

添加数据(INSERT)

示例:

示例2:

示例3

示例4

总结:

1.插入数据时,指定的字段顺序需要与值的顺序是一一对应的。
2.字符串和日期型数据应该包含在引号中(单引号、双引号都可以)。
3.插入的数据大小/长度,应该在字段的规定范围内。


修改数据(UPDATE)

注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

示例1:

示例2:

修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。


删除数据(DELETE)

注意:
1.DELETE语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。
2.DELETE语句不能删除某一个字段的值(如果要操作,可以使用UPDATE,将该字段的值置为NULL)。

示例1:

示例2:

DQL(对表的数据进行查询)

DQL英文全称是Data Query Language(数据查询语言),用来查询数据库表中的记录。
关键字:SELECT

基本查询(select...from...)

注意:*号代表查询所有字段,在实际开发中尽量少用(不直观、影响效率)

创建表,并进行初始化

示例1

示例2

示例3

示例4

示例5

总结:

1.基本查询语法?
select 字段列表 from 表名
2,如何为查询返回的字段设置别名?

字段名 as 别名
3,如何去除查询返回的重复记录?
distinct

示例:select job from emp1;   不去重

select distinct job from emp1;  去重


条件查询(where)

示例1:

示例2:

示例3:

示例4:

示例5:

示例6:

示例7:

示例8:

示例9:

示例10:

示例11:

总结:

1.如何进行nu值的判断?
is null,s not null
2.模糊匹配中的通配符?
%(任意个字符),_(一个字符)
3如何组装多个查询条件?
and/or


分组查询(group by)

聚合函数

示例1:

示例2:

示例3:

示例4:

示例5:

示例6:

示例7:

注意:
1.nuli值不参与所有聚合函数的运算
2,统计数量可以使用:

count(*),count(字段),count(常量),推荐使用count(*)

分组查询

示例1:

示例1:

报错,因为分组与查询的字段不符。

示例2:

示例3:

示例4:

示例5:

示例6:

注意:


排序查询(order by)

排序查询
排序方式:升序(asc),降序(desc);默认为升序asc,是可以不写的。
注意:
如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序

示例1:

示例2:

示例3:

示例4:

注意:

下面排序查询的语法分别代表什么意思
         ...order by age;
//根据age进行升序排列
         ...order by age desc ,score asc; //根据age进行降序排列,如果age相同,则根据score进行升序排列
         ...order by age, score, update_time desc;//根据age进行升序排列。如果age相同,则根据score进行升序排列。如果score也相同,则根据update_time进行降序排列。


分页查询(limit)

示例1:

示例2:

示例3:

示例4:

DOL语句中的分页查询:
语法:Limit起始索引,每页展示记录数
注意:项目开发中,前端传递过来的是页码,需要转换为起始索引
公式:  (页码-1)*每页展示记录数

http://www.lqws.cn/news/444367.html

相关文章:

  • 第一章 空间解析几何与向量代数 ~ 向量的数量积与向量积
  • Linux head 命令
  • 穿不了 NAT 怎么办?用 TURN Server 把墙搬走!
  • 《Go语言圣经》map
  • C#的泛型和匿名类型
  • Nacos:微服务架构的神经中枢与配置大脑
  • 413. 等差数列划分
  • day09——Java基础项目(ATM系统)
  • Github 热点项目 [特殊字符]PHP性能革命!FrankenPHP让Laravel/Symfony飞起来!
  • 目标检测之YOLOV11自定义数据预处理——从原始标注到YOLO-OBB格式转换与验证
  • SecureCRT 安装、破解、汉化及配色方案优化指南
  • OpenSSL引擎 + PKCS11 + SoftHSM2认证
  • 【技术管理的第一次转身】从认知到落地的12个实战模块
  • 【算力网络】算网安全
  • MySQL: Invalid use of group function
  • Redis 的优势有哪些,它是CP 还是 AP?CAP 理论又是什么?
  • Java中的守护线程与非守护线程
  • 用 STM32 HAL/LL + Arduino 混合编程
  • LeetCode 662. 二叉树的最大宽度
  • F接口基础.go
  • JETBRAINS IDE 开发环境自定义设置快捷键
  • 单服务器部署多个Discuz! X3.5站点并独立Redis配置方案
  • redux以及react-redux
  • 使用springboot实现过滤敏感词功能
  • c++ STL---vector使用
  • 6.19_JAVA_微服务
  • Kernel K-means:让K-means在非线性空间“大显身手”
  • 煤矿井下Modbus转Profibus网关的传感器与PLC互联解决方案
  • 基于keepalived、vip实现高可用nginx (centos)
  • TensorFlow+CNN垃圾分类深度学习全流程实战教程