一、数据库概述

数据库相关定义

数据库: 存放数据的仓库,数据库中包含了数据和数据库对象, 例如表(table) ,视图(view),存储过程(procedure) 和触发器等都称为数据对象

在这个数据库体系中包含如下几个概念

1、数据(Data): 数据是描述事物的符号记录,是数据库的基本对象 ,例如 图像,视频,音频,记录信息 。

数据处理: 顾名思义就是对数据进行处理,包括对数据存储、计算、加工、检索的过程

2、数据库(DataBase): 数据库可分为为 关系型数据库(MySql ,Oracle、DB2 等)和非关系型数据库 (Redis ,MongoDB )

存储数据的仓库, 长期存储在计算机内有组织,有结构的大量的可共享的数据集合。

特点:

  • 永久存储
  • 有组织
  • 可共享

3、数据库管理系统(DataBaseManager System)

它是介于用户和操作系统之间的管理数据的软件, 它可以科学有效的组织和存储数据 。

它的作用:

数据定义功能

数据的组织和存储

数据的操纵功能

数据库的运行管理

数据库的建立和维护

数据库管理系统通常由DBA(数据库管理员 DataBase Administrator)管理

4、数据库系统(DataBase System)

把以数据应用为基础的系统统称为数据库系统,

它包含 数据库、计算机硬件,数据库管理系统和相关软件和管理人员

数据库表对应java的对象 数据库对象有_数据

数据库软件介绍

Oracle : 甲骨文公司产品 (收费)

MySql:被甲骨文收购(免费,开源)

SQL Server: 微软的数据库

DB2: IBM公司

数据建模

概念模型定义: 为了解决特定的问题,将人们所关心的某些方面,建立以数据字段为基础的 模型 , 面向人,按用户的观点对数据和信息建立模型 ,这里通常使用 ER模型(Entity -Ralation)

数据模型包括: 层次模型、 网状模型、关系模型(重点)

关系模型:

关系: 将一个没有重复行重复列的二维表称为一个关系, 二维表也叫关系表

元组: 在关系表中的 一条记录就是元素, 每一条记录对应一个元组

字段(属性): 一个关系中的 每一列的列头称为字段(属性) ,每一个属性都有一个属性名, 其属性的值称为属性值

数据库表对应java的对象 数据库对象有_数据库_02

域: 每一个属性的取值范围, 例如 性别属性 它的域就是男,女, 每一个属性的值都必须来自域的值

主键: 在一个关系表中, 用于唯一标识的,没有特定业务意义的可以定义为主键,例如 表的ID

外键: 来自主外键表的关系中(主表和子表) ,在子表中与主表关联的字段。 例如 班级表 和 学生表

主表: 在这个关系中 表示1的一方 是主表, 多的一方式子表 班级表是主表,学生表是子表

例如 学生和科目表的关系: 学生是主表,科目是子表 。


数据库表对应java的对象 数据库对象有_字段_03

数据库的三大范式

三大范式的作用: 用于在设计数据库表时,尽量减少数据表设计的字段冗余,和增强表的设计的合理性 ,在实际开发中 必须准寻第一,二范式,可以适当的不准寻第三范式。

  • 第一范式: 在一个关系表中所有的属性都是不可分割的独立单元。
  • 第二范式: 在满足第一范式的基础上, 每一个字段除了主键以外 都与该表主体直接相关

例如学生表中 可以定义 学生姓名,学生年龄,学生生日,不能定义学生的班级。

因为学生的班级不是与学生直接相关的 ,而是建立班级表关联学生表。

  • 第三范式: 在满足第二范式的基础上 , 除了主键以外的列 都不传递依赖于主键列,则满足第三范式

在实际开发中 第三范式作为可选规则

学生id 学生姓名 学生年龄 外键班级id 班级名称(传递依赖) ,

传递依赖的字段会增加数据表字段冗余 ,当修改“班级名称时”, 不仅要修改 班级表的班级名称,还要修改 学生表的班级名称,这个不合理的, 但有时候为了提高查询效率(减少表的关联),也可以不满足第三范式(增加冗余字段)。

二、安装卸载数据库

数据库版本 : MySQL5.0 、MySQL5.5、MySQL5.7 、MySQL8.0 (推荐)

在 我的电脑-》管理-》 管理进程服务 -》 MySQL80服务

mysql的默认管理员 root 密码自定义

mysql的默认端口号: 3306

连接mysql的方式

1、通过命令行连接

cmd进入到mysql的安装目录(C:\Program Files\MySQL\MySQL Server 8.0)的bin目录下

: mysql -hIP地址 -u用户名 -p秒

远程连接: mysql -h47.100.182.246 -uroot -p123456

本地连接时 ip可以写 localhost 或者 127.0.0.1

2、 可以采用第三方客户端连接, 可以通过命令行访问


mysql的核心配置文件: my.ini 8.0以前在安装目录下,8.0以后在数据文件的目录下

C:\ProgramData\MySQL\MySQL Server 8.0

三、数据库的基本命令

1、创建用户

create user 用户名 identified by '密码'

给用户重命名

rename user 用户名 to 新用户名

创建用户之后 需要给用户赋予权限

2、给用户赋予权限 (grant )

grant select on 数据库名.* on 用户名

-- 给用户名赋予查询 该数据库的所有对象的权限

撤销权限:

revoke select on 数据库名.* from 用户名

-- 给用户撤销 查询该数据库的权限

3、 删除用户 drop user 用户名

4、创建数据库:

create database 数据库名

使用数据库

use 数据库名

当使用指定数据库时,后面所有操作都是针对该数据库的

5、 显示所有数据库

show databases ;

显示数据库下所有的表

show tables;

设置编码格式 (没有乱码则不需要修改)

set character_set_results=’GBK’;

desc 表名: 显示该表的结构

导入数据

SQL语言

SQL(Structure Query Language)结构化查询语言,用于操作主流数据库,例如MySQL ,ORACLE,DB2等, 方便快捷的检索和管理数据库 。

SQL语言分类

1、数据定义语言(DDL Data Definition Language) : 用于定义数据库表结构,视图,用户等 对象, create 、alter 、drop

2、数据操纵语言(DML Data Manipulation Language); 用于操作数据和检索数据 ,包含 insert 、 delete 、 update 、 select

3、数据控制语言(DCL Data Controller Language): 给用户赋予权限 (grant) ,撤销权限 (revoke)

4、事务控制语言(TCL Data Transaction Language ):commit (提交事务)、rollback (回滚事务)

数据查询和检索 select

数据库操作中最常用的语句

基础语法:

select 字段名1 , 字段名2 ,... from 表名 [ where 条件赛选] ;

-- 注释  查询表记录
-- 查询单列 
select sid from t_student ;
-- 查询多列   查询指定sql 快捷键   选中sql ctr+shift+r
select sid,sname from t_student;
-- 查询所有列
select * from t_student;
select * from t_dept;
select * from t_man;

-- 去掉重复列  distinct  (效率较低)
-- 查询所有学生的年龄
select distinct(sage) from t_student;

-- 使用数学表达式   
--  将每个学生的分数 增加20分 并重命名列(as关键字)
select sscore as 分数 , sscore + 20   as  '增加20分后' from t_student;

-- 注意 在数学计算过程中,如果数据为空,会影响计算结果
-- 可以使用 判空处理  ifnull  如果字段为空 就表示0 
 
 select sscore as 分数 , ifnull(sscore ,0) + 20 as 加20后 from
 t_student;
 -- 给字段起别名时,如果出现特殊字符,可以使用“” 
 -- mysql中“” 和 ‘’的区别
 
select sname as '姓名'  ,sscore as "分 数" from t_student ;
-- 所有男生信息  where 字段名 ='值'   mysql推荐用''  
select * from t_student where  ssex="男";

-- 连接操作符  ,可以将多个字段连接到一个字段中显示 
concat(字段1,字段2)
select concat(concat(sname,'的'),SSCORE) as '学生的分数' from t_student ;

SELECT * FROM T_STUDENT;