数据库使用

一.数据库分类

1.关系型数据库(EDMS)以数据表为核心

1.1关系数据库代表作

  • Oracle:在大型项目中使用(收费)
  • MySQL:Web 项目中使用最广泛的关系型数据库(免费)
  • Microsoft SQL Server:在微软项目中使用
  • SQLite:轻量化数据库,主要用于移动平台

1.2关系型数据库的核心要素

  • 数据行(一条数据)
  • 数据列(字段)
  • 数据表(数据行的集合)
  • 数据库(数据表的集合,一个数据  库中有n个数据表)

2.非关系型数据库(不存在数据表的概念)

2.1 将数据以kye,value,文本,图片等形似存储的数据构成

1.Redis       2.MongoDB 

(非关系型数据库不常用)

二.SQL介绍

SQL(结构化查询语言),通过SQL语言对数据库进行操作

1.SQL语言的分类

  • DQL:数据查询语言,对数据库进行查询(必须熟练掌握)
  • DML:数据操作语言,对数据进行增加,修改,删除(insert,update,delete)
  • DCL:数据控制语言,进行授权与权限回收(grant,revoke)
  • DDL:数据定义语言,进行数据库,数据表的管理(create,drop)

(在MySQL中,默认对SQL语法不区分大小写)

三.MySQL介绍

  • MySQL是一个关系型数据库管理系统,属于Oracle(甲骨文)旗下
  • MySQL社区版是免费使用的
  • 官方网站:www.mysql.com

1.MySQL的特点

开源,社区版免费,支持多平台多语言,使用性广泛,是学习数据库开发与使用的首选

数据库连接工具:Navicat (不免费,由于数据库软件处于服务器中,想要操作数据库,就必须使用工具远程连接数据库)

四.数据类型与约束

1.常用数据类型

  • 整数:int,有符号范围(-2147483648 -2147483647),无符号(unsigned)范围(0-4294967295)
  • 小数:decimal (例:decimal(5,2)表示共存5位,小数占2位,整数占3位
  • 字符串:varchar ,范围(0-65533),例如;varchar(3)表示最多存在三个字符,一个中文或者一个字母都占一个字符
  • 日期时间:datetime ,范围(1000-01-01 00:00:00~9999-12-31 23:59:59)例如:‘2020-01-01 12:29:59'

2.约束

  • 主键(primary key):能唯一标识表中的每一条记录的所属组

0

  • 非空(not null):此字段不允许填写空值

0

  • 唯一(unique):此字段不允许重复

0

0

  • 默认值(default):当不填写此值时会使用默认值,如果填写时以填写为准

0

  • 外键(foreign key):一个表中的一个字段引用另一个表的主键

五.数据库的操作

1.创建数据库

  • 语法格式

创建数据库

create database 数据库名 【charset】【字符编号】【collate】【校验规则】;

创建结果查看

show create database 数据库名;

  • 举例说明

创建一个叫python的数据库

create database python charset=utf8 collate=utf8_general_ci;

查看创建结果

show create database python;

0

2.数据库的使用

  • 语法格式

使用(打开)数据库;

use 数据库名;

查看当前使用的数据库

select database();

  • 举例说明

使用(打开)数据库;

use python

0

3.修改数据库

  • 语法格式

alter database 数据库名

default character set 字符名

default collate 校对规则名;

  • 举例说明

创建testpython数据库,字符集为gd2312

create database testpython charset = gd2312

修改testpython的指定字符集修改为utf8mb4,默认校对规则修改为utf8mb4_general_ci;

alter database testpython

default character set utf8mb4

defaulr collate utf8mb4_general_ci;

0

4.删除数据库

  • 语法格式

drop database 数据库名;

  • 举例说明

删除python数据库

drop database python;

0

5.数据库其他操作

  • 查看所有数据库

show database;

  • 备份数据库(重点!!!!!)图形法

在测试工作中,为了防止对数据库产生错误操作或产生垃圾数据,都需要在操作前,适当对数据库进行备份操作

0

  • 恢复数据库 图像法

0

  • 备份数据库 命令法

1,在服务器打开输入命令连接数据库:mysql -u数据库用户名 -p密码

0

2,在服务器打开输入格式:mysqldump - uroot -p 数据库名 > 数据库名.sql

3,提示输入:数据库密码

0

  • 恢复数据库 命令法

1,在服务器打开输入输入格式:mysql p - uroot -p 数据库名 < 数据库名.sql

2,提示输入:数据库密码

0

六.数据表的操作

1.创建数据表

语法格式:

  • 创建表

create table 表名(

字段名 类型 约束,

字段名 类型 约束

);

  • 举例说明

创建学生表,字段要求:姓名(长度为10)

create table students(

name varchar(10)

);

0

直接获取创表语句的方法

0

  • 查看表

语法格式

show create table  表名;

0

2.查看表结构(字段)

语法格式

desc 表名;

0

3.删除表

  • 语法格式

格式一:drop table 表名;

格式二:drop table if exists 表名;

  • 举例说明

0

七.数据操作-增删改

1.添加数据

1.1添加一行数据

  • 格式一:所有字段设置值,值的顺序与表中字段的顺序对应

说明:主键列是自动增长,插入时需要占位,通常使用0或者default或者null来占位,

后以实际数据为准

insert nto 表名 values(...);

例:插入-一个学生,设置所有字段的信息

0

  • 格式二:部分字段设置值,值的顺序与给出的字段顺序对应

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

例子

0

1.2添加多行数据

  • 方式一:将单行插入语句,多句执行,每句分号隔开

举例说明:

insert nto students values(0, '王五', 28,1.78);

insert into students (name,height) values('赵六', 1.68);

0

  • 方式二:写一条insert语句,设置多条数据,数据之间用英文逗号隔开

格式一: insert into 表名 values(...),(...);

例:插入多个学生,设置所有字段的信息

insert into students values(0, ' 亚瑟3' ,23,167.56),(0, '亚瑟4' ,23,167.56);

0

格式二: insert into 表名(列1....) values(值1...),(值1......);

例:插入多个学生,只设置姓名

insert into students (name) values('老夫子5'),('老夫子6');

0

2.修改字段值

●语法格式

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

●举例说明

例:修改id为5的学生数据,姓名改为狄仁杰,年龄改为20

update students set name='狄仁杰' ,age=20 where id=5

0

3.删除表记录

●语法格式

格式一: delete from 表名 where 条件;

●举例说明

例:删除id为6的学生数据

delete from students where id=6;

0

  • 逻辑删除:

对于重要的数据,不能轻易执行 delete 语句进行删除。因为一旦删除,数据无法恢复,这时可以进行逻辑删除。 1、给表添加字段,代表数据是否删除,一般起名 isdelete, 0代表未删除,1代表删除,默认值为0 2、当要删除某条数据时,只需要设置这条数据的 isdelete 字段为1 3、以后在查询数据时,只查询出 isdelete 为0的数据

0

  • 语法类型

1、给学生表添加字段(isdelete),默认值为0,

如果表中已经有数据,需要把所有数据的i sdelete字段更新为0

update students set isdelete=0

2、删除id为1的学生

update students set isdelete=1 where id=1

3、查询未删除的数据

select * from students where isdelete=0

0

  • 其他数据删除方式

格式一;delete from 表名 删除所有数据,但是不重置主键字段的计数

例:delete from stubents;

格式二: truncate table 表名 (删除表的所有数据,保留表结构)

例:删除学生表的所有数据

truncate table students;

格式三: drop table 表名;(删除表,所有数据和表结构都刪掉)

例:删除学生表

drop table students;

0

Truncate、Delete、 Drop 的区别

1、Delete删除数据时,即使删除所有数据,其中的自增长字段不会从1开始

2、Truncate 删除数据时,其中的自增长字段恢复从1开始

3、Drop 是删除表,所有数据和表结构都删掉

八.数据操作-查询(重点)

0

1.基础查询

0

0

2.复杂查询

  • 条件查询:按照一定条件筛选需要的结果

语法格式:

select 字段1,字段2,... from 表名 where 条件;

条件构成:

where后面支持多种运算符, 进行条件的处理

  1. 比较运算

0

  1. 逻辑运算

逻辑运算符:

and(与)

or(或)

not(非)

0

  1. 模糊查询

like

% 任意多个任意字符

_ 表示一个任意字符

0

  1. 范围查询

in 表示在一个非连续的范围内,格式为 in(...,...)

between ... and ... 表示在一个连续的范围内

0

  1. 空判法

判空 is null

判非空 is not null

0

  • 排序:按照一定的排序规则筛选所需结果

1.1 语法格式

select * from 表名 order by 列1 asc/desc,列2 asc/desc,. ..

(将数据按照列1进行排序,如果某些列1的值相同,则按照列2排序,以此类推)

默认按照列值从小到大排列

asc(从小到大排列,即升序)

desc(从大到小排列,即降序)

0

  • 聚合函数:对一组数据进行计算得到-一个结果的实现方法

1.1常用的聚合函数

count(): 查询总记录数

0

max(): 查询最大值

min0: 查询最小值

0

sum(): 求和

avg(): 求平均值

0

  • 分组:在同一属性(字段)中,将值相同的放到- -组的过程

1.1简单分组

语法格式

select 字段1,字段2,聚合() from 表名 group by 字段1,字段2...;

0

1.2分组后筛选:

语法格式:

select 字段1,字段2,聚合() from 表名 group by 字段1,字段2... having 字段1,字段2聚合()

having后面的条件运算符与where的相同

0

1.3 where与having

●where是对from后面指定的表进行数据筛选,属于对原始数据的筛选

●having是对group by的结果进行筛选

●having 后面的条件中可以用聚合函数,where 后面不可以

0

例:查询班级平均年龄大于22岁的班级有哪些

select class from students group by class having avg(age)>22;

  • 分页: 对大批量数据进行设定数量展示的过程

语法格式

select * from 表名 limit 起始行,数据行

从start开始,获取count条数据

start索引从0开始

分页格式

limit典型的应用场景就是实现分页查询

已知:每页显示m条数据,求:显示第n页的数据

select * from students limit (n-1)*m,m

0

  • 连接查询:将不同 的表通过特定关系连接的过程

0

内连接:inner join

查询的结果为两个表匹配到的数据

语法格式:

selecr * from 表1 inner join 表2 on 表1 ,列=表2,列

0

0

左连接: left join

查询的结果为两个表匹配到的数据加左表特有的数据,对于右表中不存在的数据使用null

语法格式:

selecr * from 表1 left join 表2 on 表1 ,列=表2,列

0

0

右连接: right join

查询的结果为两个表匹配到的数据加右表特有的数据,对于左表中不存在的数据使用null

语法格式:

selecr * from 表1  right join 表2 on 表1 ,列=表2,列

0

0

  • 自关联:将同一表通过特定关系连接的过程

前提: >数据表只有一张2>数据爱中至少有两个字段之间有某种联系

方式:通过给表起别名的形式,将原本只有张的数据表 变为两张,然后通过对应宇段实现连接查询即

结合连接查询

0

0

0

  • 子查询:在-个查询套入另一个查询的过程

子查询:在-个select语句中,嵌入了另外-个select语句,那么嵌入的select语句称之为子查

询语句

作用:子查询是辅助主查询的,要么充当[条件],要么充当[数据源]

0

九.数据库拓展内容

1.ER模型

E表示entry, 实体:描述具有相同特征事物的抽象[数据表]

属性:每个实体的具有的各种特征称为属性[数据(表内的字段)]

R表示relationship, 联系:实体之间存在各种关系,关系的类型包括包括一对一、一对多、多对

多[表和表之间的联系])

0

2.主键与外键

0

设置主键

0

删除主键

0

设置外键

说明:通过外部数据表的字段,来控制当前数据表的数据内容变更,以避免单方面移除数据,导致关联

表数据产生垃圾数据的一种方法

注意:如果大量增加外键设置,会严重影响除数据查询操作以外的其他操作(增/删/改)的操作效率,因

此在实际项目中很少会被采用,但是在面试中容易被问到,

0

删除外键

0

十.索引

索引概念

说明:可以大幅度提高查询语句的执行效率

注意:如果大量增加索引设置,会严重影响除数据查询操作以外的其他操作(增/删/改)的操作效率,不

方便过多添加.

0

设置索引

0

删除索引

0

案例

0

  • 35
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值