网页后端开发(基础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是数据库系统的核心组成部分,通过它可以对数据库进行定义、查询、更新及各种控制。
主要功能
数据定义:DBMS提供数据定义语言(DDL),用于定义数据库的结构、约束和权限。
数据操作:DBMS提供数据操作语言(DML),用于实现对数据的追加、删除、更新和查询。
数据库运行管理:包括并发控制、安全性检查、存取限制控制、完整性检查和事务管理等。
数据组织、存储与管理:分类组织、存储和管理各种数据,提高存储空间利用率和存取效率。
数据库保护:通过恢复、并发控制、完整性控制和安全性控制来保护数据库中的数据。
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)*每页展示记录数