day-3-3-2

数据库概论

数据库是指长期存储在计算机内有组织可共享的数据集合。数据库中的数据以及数据之间的关系按照一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并在一定的范围内可以被多个用户共享

数据模型:层次模型、网状模型、关系模型,据说下一代是对象模型

关系型数据库是建立在关系数据模型基础上的数据库,借助集合代数的概念和方法处理数据库中的数据,同时也是一个被组织成具有描述的二维表格,表格的实质就是装载数据项的收集器,这些表格中的数据能以不同的方式被存取或者重新召集,而不需要更新组织数据库的表格。

目前常见RDBMS主要有Oracle收费【运行稳定、性能优异、大型企业级应用开发首选】、MySQL免费【开源免费、体积小、速度快、适用于中小型企业应用开发】、DB2收费【速度快、可靠性好、适用于海量数据存储,主要用于在使用IBM组件时】、SQLServer【主要在.net应用】、Sybase【电信行业历 史原因使用】

DBMS数据库管理系统

是位于用户和操作系统之间的一层数据管理软件。科学地组织和存储数据,高效地获取和维护数据 基础功能:数据定义功能DDL、数据操纵功能DML、数据库的运行管理、数据库的建立和维护功能

数据库特点:

  • 数据库中的数据尽可能不重复,以最优化的方式为多种应用服务
  • 数据结构独立于应用
  • 对数据的CRUD由统一软件进行管理和控制DBMS

数据模型

数据模型从应用开发的角度上来说可以分为2个不同的层次

  • 概念模型或者逻辑模型,从用户的观点来对数据和信息进行建模,可以使用ER图进行描述

    • E实体(矩形),属性列采用椭圆表示,采用无定向线连接实体和属性
    • R关系(菱形框),数据和数据之间的关系有三种:1:1、1:n或者n:1、n:m
    • 容易出现的错误:不能分析出主外键(主键是标识属性,不可能有外键)
  • 物理模型。在概念模型的基础上考虑各种具体的技术实现因素,进行数据库体系结构设计。需要确定所有的表和列,定义主外键,基于用户需求考虑范式的问题

    数据库选型—SQL语句

关系模式—带表头【元数据】的二维表格。具体存储位置对用户透明

学号姓名年龄性别
1赵小胖18
2张毅16
关系模型的特点
  • 建立在严格的数学概念之上【唯一】
    • 实体和各类联系都用关系表示
    • 数据的操纵对象是关系,返回结果也是关系
  • 关系模型的存取路径对用户透明,优点在于数据独立性、高安全性,简化编程
  • 缺点:存储路径对用户透明导致查询效率不如非关系型数据库

SQL

SQL结构化查询语言是一种数据库操作的非过程式编程语言,用于存取数据以及查询、更新和管理关系型数据库系统,一般脚本文件后缀为.sql

经过ANSI和ISO标准化组织结构进行标准化,但是各个数据库管理系统都对标准SQL规范进行了编改和扩充,扩展部分各个数据库不通用,标准部分通用

SQL的特点:

  • 统合统一、高度非过程化
  • 面向集合的操作方式
  • 以同一种语法结构提供两种使用方法,命令行方式交互和嵌入主语言
  • 语法简单,其中只有94个英文单词,核心功能只有6个单词【insert update delete select】

NoSQL

NoSQL泛指非关系型数据库,主要用于针对超大规模和高并发的社交SNS类型网站的解决方案

常见的NoSQL数据库有4种类型:

  • key-value数据库,使用hash表存储数据。例如Redis
  • 列存储数据库,主要针对分布式的海量数据,例如HBase
  • 文档型数据库,主要存储版本化的文档信息,例如MongoDB
  • 图形化数据库,主要用于计算数据之间的关系,例如Neo4j

NoSQL适用场景

  • 数据模型比较简单
  • 需要灵活性很强的IT系统中
  • 对数据库性能要求较高
  • 不需要高度数据一致性

SQL vs NoSQL

  • 复杂查询SQL数据库比较擅长

  • SQL数据库不适合分层次的数据存储,NoSQL可以很好的实现数据的分层次存储,更适合大数据

  • 对于要求数据严格一致性的应用中SQL非常使用,而且稳定,能够保证数据操作的原子性和一致性;而NoSQL对事务的处理能力有限,一般保证最终一致性

  • SQL厂商支持,而NoSQL是社区支持

  • 性能对比中,NoSQL明显优于SQL数据库,一般NoSQL都充分的利用系统的内存资源

  • NoSQL数据库开发方便,不用考虑数据关系和格式

MySQL数据库

MySQL使用的是SQL语句,体积小、速度快、免费开源的关系型数据库

MySQL可以支持6万多张表,约50亿行的企业级数据库应用

  • 每个表可以最多支持64个索引,每个所以可以由1-16个列构成,最大索引宽度为为1000字节
  • 正常字符串的比较不区分大小写
  • MySQL数据库最大限制取决于操作系统对文件大小的限制,不是MySQL内部限制

使用MySQL8

  • MySQL8比MySQL5.7快2倍

MySQL体系结构概述

MySQL是由SQL接口、解析器、优化器、缓存、存储引擎

1、客户端向MySQL服务器发送一个SQL语句

2、服务器首先检查缓存,如果命中则立刻返回存储在缓存中的结果,否则下一步

3、服务器首先进行SQL语句解析、预处理,再由优化器生成对应的执行计划

4、MySQL服务器根据执行计划,调用存储引擎的API执行查询

5、最后将查询结果返回客户端,同时缓存查询结果

MySQL基本使用

windows

1、下载https://dev.mysql.com/downloads/mysql/

MySQL本来是完全免费的产品,被Oracle收购后,现在分为3个不同的版本:

  • MySQL企业版,收费或者试用
  • MySQL社区版,免费的
  • MySQL高级集群版,收费
  • MySQL经典版,老版本,免费
在线安装

需要网络支持

  • 选择安装类型,这里选择使用
  • 选择需要安装的产品和特征
  • 开始执行环境配置
绿色安装

解压压缩文件mysql-8.0.15-winx64.zip,将解压得到的目录可以移动到任何位置

执行初始化操作,首先进入mysql的bin目录,在cmd窗口中执行命令

mysqld --initialize --console

注意:如果data目录已经存在,则需要删除data目录后再执行命令

在执行初始化操作过程中会显示一个临时生成的口令

使用 mysqld --install 将mysql添加到系统服务中,默认当机器启动时会自动启动mysql服务

使用net start mysql启动数据库服务

使用命令mysql -uroot -p打开客户端连接已经启动的数据库服务,这里需要输入上面生成的临时口令

修改口令 alter user 'root'@'localhost' identified with mysql_native_password by '新口令'

关闭服务器 net stop mysql

删除mysql系统服务 mysqld --remove

常用命令

启动客户端:在bin目录下 mysql -uroot -p123456

命令格式为: mysql -u用户名 -p口令 -P端口号 -h主机名称 。在实际应用中,不建议直接使用-p口令的这种格式

如果正常启动,则可以看到命令提示符mysql>

如果需要在任意目录都可以打开客户端,则需要将bin的绝对目录添加到path系统环境变量中

查看所有的数据库 show databases;

注意information_schema、mysql、sys、performance_schema都属于系统数据库,不要直接操作这些数据库

切换当前数据库 use 数据库名称;

查看当前数据库下的所有数据表show tables;

查看某个数据表的结构定义desc 数据表名称;

放弃正在输入的命令\c

显示命令清单 \h

退出客户端 \q ,也可以使用 exit 或者quit

查看服务器的状态信息 \s 退出客户端 quit

SQL语句

在MySQL中可以将SQL分为4大类

  • DDL数据定义语言,create创建、alter修改、drop删除、truncate截断
  • DML数据操纵语言,insert插入、update修改、delete删除
  • DQL数据查询语言,select查询
  • DCL数据控制语言,grant授权、revoke回收权限

DDL数据定义语言

用于定义数据库对象的操作语句

数据库操作
创建操作

注意:DATABASE 不能改名。一些可视化工具可以改名,它是建新库,把所有表复制到新库,再删旧库完成

语法规则 create database 数据库名称 default character set utf8 ,一般默认编码字符集为 latin1

create database test default character set utf8; -- 创建数据库,名称为test,默认编码字符集为utf-8

-- 如果数据库已经存在,则再次创建会报错
create database if not exists test default character set utf8; -- 如果test已经存在则不执行创建操作,同时不会报错

如果数据库创建成功,则自动在数据文件夹data下新增一个test目录

删除操作

语法规则 drop database 数据库名称;

drop database test; -- 删除指定数据库;如果数据库不存在则报错

drop database if exists test; -- 如果存在则删除,如果不存在也不报错
查看操作
  • 所有数据库show databases;

    mysql中允许同时打开多个数据库,不同的数据库管理系统不一样

  • 切换当前数据库 use 数据库名称;

    use test; -- 如果数据库存在则切换到指定的数据库test下进行操作;如果不存在则报错
    
  • 查看当前操作的数据库

    select database();
    
  • 查看数据库的创建语句

    show create datbase test;
    

注意:要操作表格和数据之前必须先说明是对哪个数据库进行操作,否则就要对所有对象加上“数据库名.”。

更改数据库字符集
ALTER DATABASE 数据库名 CHARACTER SET 字符集; #比如:gbk、utf8等
默认系统数据库

系统数据库就是供DBMS使用的数据库,如果损坏则会导致DBMS无法正常启动,所以一般不建议直接操作

  • information_schema记录所有数据库和数据库中表的信息
  • mysql记录时区、权限之类的配置信息
  • sys保存和锁、统计相关的信息
  • performance_schema用于实现对运行过程的资源的使用情况的统计
数据表的操作

创建数据表基本语法: create table数据表的名称(数据列的名称 数据类型 约束规则,......)engine= 存储引擎名称 default charset utf8;

create table tb_student( -- 这里可以加入if not exists表示不存在时才进行创建。注意在一个数据库中的表名称不允许重复。按照阿里的规范,要求基表名称必须使用【tb_表】
	id bigint primary key auto_increment,
	name varchar(20) not null,
	sex boolean default 1 -- 在mysql数据库中有一些属性数据类型的别名
) engine=innodb default charset utf8; -- 实际上从MySQL5.5开始默认存储引擎就是innodb,但是一般建议还是添加上存储引擎的设置

数据表创建完成,则会发现在data/test目录下出现一个文件tb_student.ibd

一般使用的存储引擎engine常见的有innodb和myisam两种,如果使用myisam则会创建两个文件

1、.myd数据信息文件,其中包含表的数据;2、.myi索引信息文件,是用于提高查询效率的索引数据

查看表中的列定义 desc tb_student;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K7tEQOfw-1663731037874)(E:\java\blog\week12\img\1.png)]

查看具体的列定义 show create table tb_student;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BtLPQhBA-1663731037876)(E:\java\blog\week12\img\2.png)]

标识符命名

数据库涉及的字符规范,注意不是语法规则,属于建议性质的规则

  • 采用a-z英文字母、数字0-9和下划线_组成,共63个字符,不能出现其他字符,除非是注释

    • 不区分大小写
    • 使用中文字符实际上是不会有语法错误的,但是不建议
  • 一般命名长度不要超过30个字符的系统限制,变量名称由于需要使用@标识符,所以长度限制为29

  • 数据库对象、变量的命名都采用英文字符,禁止使用中文命名,绝对不允许在对象名称中间出现空格

    • 如果在命名过程中破坏规则实际上引入反引号就好`,注意不是单引号
    • create table t 1(id int);
  • 小心保留字,尽量保证命名中不采用保留字,避免容易产生冲突
    则,属于建议性质的规则

  • 采用a-z英文字母、数字0-9和下划线_组成,共63个字符,不能出现其他字符,除非是注释

    • 不区分大小写
    • 使用中文字符实际上是不会有语法错误的,但是不建议
  • 一般命名长度不要超过30个字符的系统限制,变量名称由于需要使用@标识符,所以长度限制为29

  • 数据库对象、变量的命名都采用英文字符,禁止使用中文命名,绝对不允许在对象名称中间出现空格

    • 如果在命名过程中破坏规则实际上引入反引号就好`,注意不是单引号
    • create table t 1(id int);
  • 小心保留字,尽量保证命名中不采用保留字,避免容易产生冲突

  • 注意开发中字段名称和类型名称的一致性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、常用控件简介在数据库开发实践中,有一些功能反复使用,如一些字段的值,常常就那几个,这时,要程序记住这些值可提高用户的工作效率,这类控件有两个TCmbrec和TDBCmbrec,分别继承TCombox和TDBCombox,重载DblClick和DoEnter过程,并加了Filename、Section、Field和Caption属性。其使用方法参见“三、控件的使用”的说明。对于某些数据表来说,字段数很多,打开浏览时,屏幕放不下,需要用横向滚动条来移动查看,为了清楚浏览数据记录,希望在滚动过程中,某些字段不要移动;其二,如果数据表字段很少且比较规范,希望在数据表表格上编辑数据,编辑过程中每个字段都具有上述TDBCmbrec的功能;其三,对于综合查询或在一个画面上一个数据源对应于几个数据显示时,希望能够自动翻译其字段名。这些功能需求可使用TRxDBGrid和Tdbgrdrec控件来实现,都继承于TDBGrid控件,前者实现DBGrid的固定列显示、自动翻译和字段格编辑;后者实现字段格编辑。其中,TRxDBGrid增加了Filename、Section、Field、TranslateFileName、FixedCols等属性,重载DblClick和DoEnter等过程;Tdbgrdrec增加了Filename、Section、Field属性,重载DblClick和DoEnter过程。二、控件安装 上面介绍的控件,写在两个.pas文件中,DBCtrl.pas只包含TRxDBGrid控件;DBAdvanceComponent.pas包括Tcmbrec、TDBCmbrec、Tdbgrdrec等控件。安装步骤为:·第一步,打开Delphi,然后选择“Component”|“Install Components”菜单项;·第二步,在“Install Component”对话框的“Unit file name”栏中,使用“Browse”按钮将控件文件加进来;·第三步,单击“OK”按钮;·第四步,在弹出的“Confirm”对话框中,单击“Yes”按钮,安装该控件文件;·第五步,在“Information”对话框,单击“OK”按钮;·重复第二至第五步,安装所有需要的控件。安装完成后,在控件面板上出现新的标签“DBAdvance”,上面有新安装的控件。之所以不写成包,是为了方便以后扩展和适应Delphi版本的更新。三、控件的使用1.Tcmbrec、TDBCmbrec和Tdbgrdrec控件 增加的保存内容放在当前目录下的“lst”子目录的Ini文件里,文件名为FileName属性的内容,新增属性Section让用户设置Init文件中“[ ]”段名,新增属性Field让用户设置数据表字段名。当然在Tdbgrdrec控件中,Field字段可不设置,控件自动根据当前选取的字段设置。子目录“lst”,控件可自动创建。2.TRxDBGrid控件 (1)FileName,Section,Field属性设置同上“1”; (2)FixedCols属性用来设置固定列数,从第一列到第FixedCols列; (3)TranslateFileName属性用来设置翻译文件名,放在“txt”子目录下,是文本文件,文件格式为:字段英文名@字段中文名。特别说明:TRxDBGrid控件来源于著名的Rxlib2.75相关的控件,本人加了字段自动翻译的功能,该功能在综合查询时特别有用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值