zoukankan      html  css  js  c++  java
  • 数据库笔记整理-数据库概述-三大范式及数据库基本命令

    一、数据库概述

    数据库相关定义

    数据库: 存放数据的仓库,数据库中包含了数据和数据库对象, 例如表(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 FilesMySQLMySQL 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:ProgramDataMySQLMySQL 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;
    
    
    
    
    
    
    
    
    
  • 相关阅读:
    C语言之基本算法24—黄金切割法求方程近似根
    windows下PHP不能开启pgsql扩展的解决方法
    Linux 文件基本属性
    Android倒计时功能的实现
    hdu2444The Accomodation of Students (最大匹配+推断是否为二分图)
    Asp.net core使用IIS在windows上进行托管
    [Asp.net]web.config customErrors 如何设置?
    [Asp.net mvc]Html.ValidationSummary(bool)
    [C#基础]说说lock到底锁谁?(补充与修改)
    [web.config]如何灵活使用配置文件
  • 原文地址:https://www.cnblogs.com/z5452830/p/13977822.html
Copyright © 2011-2022 走看看