2020-11-14

数据库概述

数据库相关定义

  数据库: 存放数据的仓库,数据库中包含了数据和数据库对象, 例如表(table) ,视图(view),存储过程(procedure) 和触发器等都称为数据对象
  在这个数据库体系中包含如下几个概念
   1、数据(Data): 数据是描述事物的符号记录,是数据库的基本对象 ,例如 图像,视频,音频,记录信息 。数据处理: 顾名思义就是对数据进行处理,包括对数据存储、计算、加工、检索的过程
  2、数据库(DataBase): 数据库可分为为 关系型数据库(MySql ,Oracle、DB2 等)和非关系型数据库 (Redis ,MongoDB )存储数据的仓库, 长期存储在计算机内有组织,有结构的大量的可共享的数据集合。
  特点:永久存储、有组织、可共享
  3、数据库管理系统(DataBaseManager System)
  它是介于用户和操作系统之间的管理数据的软件, 它可以科学有效的组织和存储数据 。
  它的作用:数据定义功能、数据的组织和存储、数据的操纵功能、数据库的运行管理、数据库的建立和维护
  数据库管理系统通常由DBA(数据库管理员 DataBase Administrator)管理
   4、数据库系统(DataBase System)把以数据应用为基础的系统统称为数据库系统,它包含 数据库、计算机硬件,数据库管理系统和相关软件和管理人员
在这里插入图片描述

数据库软件介绍

  Oracle : 甲骨文公司产品 (收费)
  MySql:被甲骨文收购(免费,开源)
  SQL Server: 微软的数据库
  DB2: IBM公司

数据建模

   概念模型定义: 为了解决特定的问题,将人们所关心的某些方面,建立以数据字段为基础的 模型 , 面向人,按用户的观点对数据和信息建立模型 ,这里通常使用 ER模型(Entity -Ralation)
  数据模型包括: 层次模型、 网状模型、关系模型(重点)
  关系模型:
  关系: 将一个没有重复行重复列的二维表称为一个关系, 二维表也叫关系表
  元组: 在关系表中的 一条记录就是元素, 每一条记录对应一个元组
  字段(属性): 一个关系中的 每一列的列头称为字段(属性) ,每一个属性都有一个属性名, 其属性的值称为属性值
在这里插入图片描述

  域: 每一个属性的取值范围, 例如 性别属性 它的域就是男,女, 每一个属性的值都必须来自域的值
  主键: 在一个关系表中, 用于唯一标识的,没有特定业务意义的可以定义为主键,例如 表的ID
  外键: 来自主外键表的关系中(主表和子表) ,在子表中与主表关联的字段。 例如 班级表 和 学生表
  主表: 在这个关系中 表示1的一方 是主表, 多的一方式子表 班级表是主表,学生表是子表
  例如 学生和科目表的关系: 学生是主表,科目是子表 。
在这里插入图片描述

数据库的三大范式

  三大范式的作用: 用于在设计数据库表时,尽量减少数据表设计的字段冗余,和增强表的设计的合理性 ,在实际开发中 必须准寻第一,二范式,可以适当的不准寻第三范式。
  第一范式: 在一个关系表中所有的属性都是不可分割的独立单元。
  第二范式: 在满足第一范式的基础上, 每一个字段除了主键以外 都与该表主体直接相关 。例如学生表中 可以定义 学生姓名,学生年龄,学生生日,不能定义学生的班级。因为学生的班级不是与学生直接相关的 ,而是建立班级表关联学生表。
  第三范式: 在满足第二范式的基础上 , 除了主键以外的列 都不传递依赖于主键列,则满足第三范式
  在实际开发中 第三范式作为可选规则
  学生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 as20from
 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;

  
  
  
  
  
  
  
  
  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值