一文汇总数据库基础知识点!(建议收藏)

简介: 在考研的时候,我有一门专业课是数据库,因此当时我对数据库的基础知识掌握的还算比较扎实,上周我再翻开当时考研时翻了无数遍的数据库书籍的时候,发现好多内容都忘掉了。刚好也决定开始写数据库相关的文章,就有了下面的内容。

听说微信搜索《Java鱼仔》会变更强哦!


本文收录于JavaStarter ,里面有我完整的Java系列文章,学习或面试都可以看看哦


(一)概述


在考研的时候,我有一门专业课是数据库,因此当时我对数据库的基础知识掌握的还算比较扎实,上周我再翻开当时考研时翻了无数遍的数据库书籍的时候,发现好多内容都忘掉了。刚好也决定开始写数据库相关的文章,就有了下面的内容。


(二)基本概念


DB:数据库DB是长期存储在计算机内、有组织的、统一管理的相关数据的集合。


DBMS:数据库管理系统是位于用户与OS之间的一层数据管理软件,它为用户或应用程序提供了访问DB的方法。


DBS:数据库系统DBS是实现有组织动态地存储大量关联数据,方便多用户访问的计算机硬件、软件和数据资源组成的系统,即采用数据库技术的计算机系统。


联系的元数:与一个联系有关的实体集的个数称为联系的元数。


概念模型:表达用户需求观点的DB全局逻辑结构的模型。


逻辑模型:表达计算机实现观点的DB全局逻辑结构的模型。逻辑模型主要有层次、网状、关系和对象模型4种。


外部模型:表达用户使用观点的DB局部逻辑结构的模型。


内部模型:表达DB物理结构的模型。


DDL:定义DB三级结构的语言


DML:对数据库进行查询操作的语言


DD:数据字典,存放三级结构定义的DB,对数据库的操作都要通过DD才能实现


主键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失。


外键:一个表中存在的另外一个表的主键称为此表的外键。


触发器:一个通过事件来触发而被执行的特殊的存储过程,比如对一个表数据的操作会触发另一个表的数据操作。


存储过程:是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可以调用多次。


视图:是一种虚拟的表,可以有选择性地展示部分数据,试图通常是有一个表或者多个表的行或列的子集。对视图的修改会影响基本表


临时表: 只在当前连接可见的表,关闭连接后会自动清除表空间。


create TEMPORARY table test222(id int(40)notnull primary KEY
);

内连接: 只连接匹配的行


左外连接: 包含左边表的全部行(不管右边的表中是否存在与它们匹配的行),以及右边表中全部匹配的行


右外连接: 包含右边表的全部行(不管左边的表中是否存在与它们匹配的行),以及左边表中全部匹配的行


全外连接: 包含左、右两个表的全部行,不管另外一边的表中是否存在与它们匹配的行。


交叉连接: 生成笛卡尔积-它不使用任何匹配或者选取条件,而是直接将一个数据源中的每个行与另一个数据源的每个行都一一匹配。


(三)数据库的范式


设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,越高的范式数据冗余度越低。


实际开发中涉及到的范式有三种:第一范式、第二范式、第三范式


3.1 第一范式


如果数据库中的每一列属性都是不可分解的原子值,那么说明这个数据库满足第一范式。


3.2 第二范式


第二范式在第一范式的基础上,消除了非主属性对主属性的部分函数依赖。简单来讲,就是表中的每一列都要和主键有关。而不能只与主键的某一部分相关


网络异常,图片无法展示
|


以这样一个数据为例,同一个订单会有多个商品,所以主键是订单id和商品id,但是商品名称仅依赖于商品id,不满足表中的每一列都要和主键有关,而不能只与主键的某一部分相关,因此只是第一范式。


修改成下表这样就满足了第二范式。


网络异常,图片无法展示
|


3.3 第三范式


第三范式在第二范式的基础上,消除了非主属性对主属性的传递函数依赖,简单来讲,就是每一列数据都和主键直接相关,而不能间接相关


比如一张学生表:


网络异常,图片无法展示
|


上面的所有属性均依赖于学号,满足第二范式,简单来讲就是通过学号能确定后面的所有属性,但是班主任性别是通过班主任姓名带出来的,就存在了学号->班主任姓名->班主任性别的传递依赖,因此不满足第三范式。


要想满足第三范式,就要消除传递依赖。


可以改成:


网络异常,图片无法展示
|


(四)sql的基本操作


4.1 数据库基本操作


#查看数据库
show databases
#创建数据库
create database db DEFAULT CHARSET utf8 COLLATE utf8_general_ci;#使用数据库
use db;

4.2 用户

#创建用户
create user '用户名'@'IP地址' identified by'密码';#删除用户
drop user '用户名'@'IP地址';#修改用户
rename user '用户名'@'IP地址'; to '新用户名'@'IP地址';;#修改密码
set password for '用户名'@'IP地址'= Password('新密码')

创建用户时:


用户名:创建的用户名称


IP地址:指定用户可以从哪个服务器登陆,本地用户localhost,任意远程机用“%”


密码:该用户登陆的密码


4.3 权限

#查看权限:
show grants for '用户'@'IP地址'#授权:
grant 权限 on 数据库.表 to '用户'@'IP地址'#取消授权:
revoke 权限 on 数据库.表 from'用户'@'IP地址'

权限:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL 例如:

GRANT SELECT,INSERTON student.user TO 'javayz'@'%';

通过下面的命令让指定用户可以给其他用户授权

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

4.4 对表的操作

#查询所有的表
show tables;#创建表
CREATETABLE `user` (  `id` int(11)NOTNULL auto_increment,                   # notnull表示不能为空,auto_increment表示自增
  `name` varchar(255) DEFAULT 'javayz',                 # default 表示默认值
  PRIMARY KEY (`id`)                                      # 把id列设置成主键
) ENGINE=InnoDB DEFAULT CHARSET=utf8;#清空表
truncate table 表名
#删除表
droptable 表名
#添加列
altertable 表名 add 列名 类型
#删除列
altertable 表名 drop column 列名
#修改列类型
altertable 表名 modify column 列名 类型;#修改列名、列类型
altertable 表名 change 原列名 新列名 类型;#添加主键
altertable 表名 add primary key(列名);#删除主键
altertable 表名 drop primary key;#添加外键
altertable 从表 add constraint 外键名称(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);#删除外键
altertable 表名 drop foreign key 外键名称
#修改默认值
ALTERTABLE user ALTER name SET DEFAULT 'javayz2';#删除默认值
ALTERTABLE user ALTER name DROP DEFAULT;

4.5 对数据的操作


基础增删改查:


#增
insertinto(列名,列名...)values(,,...)#删
deletefromwhere 条件
#改
updateset 字段='值'where 条件
#查
selectfromwhere 条件

其他条件:

#通配符like %匹配多个字符,_匹配单个字符
select*fromwhere name like'%java_'#limit 限制输出行数
select*fromlimit3   #前3行
select*fromlimit3,5;  #从第3行开始的5行
#order by 排序   
select*fromorderbyasc  #asc正序,desc逆序
#group by分组(group by 必须在where之后,order by之前)
select name fromgroupby name 
相关文章
|
7月前
|
存储 分布式计算 大数据
HBase分布式数据库关键技术与实战:面试经验与必备知识点解析
【4月更文挑战第9天】本文深入剖析了HBase的核心技术,包括数据模型、分布式架构、访问模式和一致性保证,并探讨了其实战应用,如大规模数据存储、实时数据分析及与Hadoop、Spark集成。同时,分享了面试经验,对比了HBase与其他数据库的差异,提出了应对挑战的解决方案,展望了HBase的未来趋势。通过Java API代码示例,帮助读者巩固理解。全面了解和掌握HBase,能为面试和实际工作中的大数据处理提供坚实基础。
452 3
|
存储 SQL 数据管理
数据库系统概论 ---- 第一章 -- 绪论(重要知识点)
数据库系统概论 ---- 第一章 -- 绪论(重要知识点)
数据库系统概论 ---- 第一章 -- 绪论(重要知识点)
|
SQL 存储 Java
Java数据库编程知识点总结
Java数据库编程知识点总结
80 0
|
7月前
|
SQL 存储 Java
Java数据库编程知识点总结
【4月更文挑战第6天】Java数据库编程涉及使用JDBC API与关系型数据库交互。关键知识点包括:JDBC作为标准API用于数据库访问;加载驱动并用DriverManager建立数据库连接;掌握SQL语句的编写与执行;使用PreparedStatement和CallableStatement执行预编译SQL及存储过程;ResultSet处理查询结果;理解事务管理确保数据一致性;批处理优化多SQL执行;连接池提升性能稳定性;以及异常处理如SQLException和ClassNotFoundException的捕获。
52 6
|
6月前
|
SQL 数据库
sql数据库练习题(涵盖大部分知识点)
sql数据库练习题(涵盖大部分知识点)
|
6月前
|
存储 关系型数据库 MySQL
mysql数据库练习题(涵盖几乎所有知识点)
mysql数据库练习题(涵盖几乎所有知识点)
|
7月前
|
SQL Oracle 关系型数据库
干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
干货!sqlserver数据库所有知识点总结整理,含代码(挺全的)
|
7月前
|
SQL 存储 安全
数据库基础的知识点
数据库基础的知识点
|
存储 SQL 人工智能
数据库系统概论 ---- 第二章 -- 关系数据库(2.1~2.3)(重要知识点)
数据库系统概论 ---- 第二章 -- 关系数据库(2.1~2.3)(重要知识点)
|
存储 SQL Oracle
数据库知识点
数据库知识点