javaweb-数据库部分

本文介绍了数据库基础知识,包括数据库概念、MySQL的安装与基本使用、DDL(数据定义语言)对数据库和表的操作、DML(数据操纵语言)如插入、更新和删除,以及DQL(数据查询语言)的查询技巧。此外,还详细讲解了约束、外键、数据库设计和事务的概念。
摘要由CSDN通过智能技术生成

第一节 数据库相关的概念

DataBase 简称DB 数据库管理系统DBMS

MySQL 是一种数据库管理系统(不要再乱说丢脸了)

SQL结构化查询语言 用来操作数据库DBMS只是起了一个管理的作用

第二节 MySQL的安装与基本使用

对应自己的电脑版本进行搜索学习

第三节 MySQL的使用

mysql -u(用户名) -p(登录密码) -h(登录ip 默认127.0.0.1)-p (默认端口号 3306默认)

关系型数据库:建立在关系模型(集合论的思维发展而来)基础之上的数据库
在这里插入图片描述
(每一种数据库可能在SQL上有一点点不同所以要注意)
(SQL不区分大小写 , 关键字建议大写)
1⃣️ create database db1; 创建数据库
(可以单行 或者 多行使用 以分号判断结尾)
2⃣️ show databases;
(查看当前有多少个数据库)
3⃣️-- (一个空格)或者 # 单行注释
/**/多行注释
在这里插入图片描述
DDL: 对数据库 和 表进行操作
DML 与 DQL: 对数据进行操作
DCL:对数据库 和 表的权限进行操作
接下来依次的进行介绍

第四节 具体操作

DDL

对数据库进行操作

增 create database 名称;(不能重名冲突) create database if not exists db1;
删 drop database 名称;(同理不能冲突)drop database if exists db2
改(使用) use 名称;
查 show databases;

对表进行操作

在这里插入图片描述增 create table (字段名 属性类型,字段名 属性类型); (最后一个不用带,号). string是varchar()
在这里插入图片描述
double(总长度,小数点后的位数)
date 只有年月日
char 和 varchar:定长存储固定 存储性能较高但是比较浪费
主要分为三种

  1. 数值
  2. 字符串
  3. 日期
    删 drop table 名称;
    改 :
    1. 修改表名 alter table 名称 rename to 新的名称;
    2. 添加列 alter table 名称 add 属性名 类型;
    3. 修改列类型 alter table 名称 modify 列名 类型;
    4. 修改列名 类型 alter table 名称 change 列名 新列名 类型;
    5. 删除列 :alter table 名称 drop 列名;
      查 show tables; desc 表名称;

DML

增: 第一种 对某一列进行数据插入:
Insert into 表名 (列名1,列名2)values (值1,值2) (值)
Insert into 表名 valuss (全部值),(全部值)
{均可以通过多个数值 批量处理}

改:UPDATA 表名 set 列名=值,列名=值, [where 条件];
{updata语句一旦没有添加where语句会将表内的所有行的元素进行修改!!!}

删:delete from 表名 where条件

DQL

在这里插入图片描述

基础查询

select 列名 from 表名;
(* 尽量少的使用)
{DISTINCT 用来去除一些查询到的重复的数据}
{as 关键字 }

条件查询

在这里插入图片描述
注意between and 关键字 (日期date类型也可以通过大小进行比较) 在某某之间
注意in关键字 进行多选一
注意在SQL里null值不能使用= != 进行比较 必须使用is null 或者 is not null

模糊查询 like。 _单个任意字符。 like 多个任意字符

排序查询

在这里插入图片描述
注意有多个排序条件时 采用的策略是短路比较

分组查询

在这里插入图片描述
聚合处理操作。特别注意null值 不参与所有聚合函数的运算

在这里插入图片描述
注意 where 和 having 的区别(注意三者之间的执行顺序)

分页查询

在这里插入图片描述
规定一次查询的数目

第五节 约束

在这里插入图片描述
主键可以理解为: 非空 唯一 代表标识该行数据
(duplicate 重复)

– 默认值的演示
INSERT INTO emp(id,ename,joindate,salary,bonus) VALUES (2,‘李四’,‘2000-05-12’,13020);
对于默认约束的插入正确形式应该是下面这种

自增长:auto_increment

当然这些约束可以在建表之后进行添加修改
在这里插入图片描述
只需要修改列数据类型的形式进行修改即可

第六节 外键约束和多表查询

外键

外键用来建立两个表之间的联系,保证数据的一致性和完整性

constraint约束
在这里插入图片描述
REFERENCES reference 引用 参考

数据库设计

ER图:
在这里插入图片描述

设计过程

在这里插入图片描述

表关系

在这里插入图片描述
其中一对一比较少见 拆表 (将常用和不常用进行区分)

这里的对应指的是数据字段的对应

一对多(多对一): 通过使用在多的一端建立外键来指向少的一端
多对多: 需要通过第三张中间表来完成 一般需要多个外键来指向 并添加一些额外信息
在这里插入图片描述
简化 属性 加快搜索速度
在这里插入图片描述

多表查询

在这里插入图片描述
直接是笛卡尔积

在这里插入图片描述

内连接
– 多表查询

SELECT
	t1.id,
	t1.dep_name,
	t2.ename 
FROM
	dept AS t1,
	emp AS t2 
WHERE
	t1.id = t2.dept_id;

外连接
在这里插入图片描述

子查询:
嵌套查询:
当一次查询无法得到我们想要的答案时就会 进行嵌套查询

-- 嵌套查询
	SELECT salary,bonus  FROM emp WHERE ename = '李四';
	SELECT ename,salary,bonus FROM emp where (salary+bonus) > 13020;

可以进行一次查询 将其修改成

SELECT ename,salary,bonus FROM emp where (salary+bonus) > (SELECT salary+bonus  FROM emp WHERE ename = '李四');

在这里插入图片描述

-- 嵌套查询的复杂情况 
	SELECT id FROM dept WHERE dep_name='研发部' OR dep_name='销售部';
	SELECT * FROM emp WHERE dept_id = 1 OR dept_id = 2;

变为

SELECT * FROM emp WHERE dept_id IN (SELECT id FROM dept WHERE dep_name='研发部' OR dep_name='销售部');

虚拟表 将一个表中满足条件的部分作为一个中间表(虚拟表)来进行查询

SELECT * FROM emp WHERE joindate > '2001-01-01';
SELECT * FROM (SELECT * FROM emp WHERE joindate > '2001-01-01') AS t1,dept WHERE t1.dept_id=dept.id;

事务

事务是 一组数据库操作命令 是一个操作序列

是一个不可分割的工作逻辑单元(很像操作系统中的原语)

在这里插入图片描述

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值