精华内容
下载资源
问答
  • 关系型与非关系型数据库的比较 最近的数据库排名 关系型数据库 关系型数据库: 指采用了关系模型来组织数据的数据库。关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个...

    目录

    关系型数据库

    关系型数据库:

    关系模型中的常用概念

    优点

    不足

    非关系型数据库

    非关系型数据库:

    非关系型数据库结构

    优点

    不足

    分类

    CAP 理论

    关系型与非关系型数据库的比较

    最近的数据库排名


    关系型数据库

    关系型数据库:

    指采用了关系模型来组织数据的数据库。
    关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

    关系模型中的常用概念

    • 关系:一张二维表,每个关系都具有一个关系名,也就是表名

    • 元组:二维表中的一行,在数据库中被称为记录

    • 属性:二维表中的一列,在数据库中被称为字段
    • 域:属性的取值范围,也就是数据库中某一列的取值限制
    • 关键字:一组可以唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成
    • 关系模式:指对关系的描述。其格式为:关系名 (属性 1,属性 2, ... ... ,属性 N),在数据库中成为表结构

    优点

    1. 容易理解:二维表结构是非常贴近逻辑世界的一个概念,关系模型相对网状、层次等其他模型来说更容易理解
    2. 使用方便:通用的 SQL 语言使得操作关系型数据库非常方便
    3. 易于维护:丰富的完整性 (实体完整性、参照完整性和用户定义的完整性) 大大减低了数据冗余和数据不一致的概率

    不足

    1. 网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈
    2. 网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的
    3. 在基于 web 的结构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,数据库却没有办法像web serverapp server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。当需要对数据库系统进行升级和扩展时,往往需要停机维护和数据迁移。
    4. 性能欠佳:在关系型数据库中,导致性能欠佳的最主要原因是多表的关联查询,以及复杂的数据分析类型的复杂 SQL 报表查询。为了保证数据库的 ACID 特性,必须尽量按照其要求的范式进行设计,关系型数据库中的表都是存储一个格式化的数据结构。

    数据库事务必须具备ACID特性,ACID分别是Atomic原子性,Consistency一致性,Isolation隔离性,Durability持久性。

    当今十大主流的关系型数据库:

    OracleMicrosoft SQL ServerMySQLPostgreSQLDB2Microsoft Access, SQLiteTeradataMariaDB(MySQL 的一个分支),SAP

    非关系型数据库

    非关系型数据库:

    指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。

    非关系型数据库结构

    非关系型数据库以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。

    优点

    1. 用户可以根据需要去添加自己需要的字段,为了获取用户的不同信息,不像关系型数据库中,要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询。
    2. 适用于SNS(Social Networking Services)中,例如 facebook,微博。系统的升级,功能的增加,往往意味着数据结构巨大变动,这一点关系型数据库难以应付,需要新的结构化数据存储。由于不可能用一种数据结构化存储应付所有的新的需求,因此,非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合

    不足

    • 只适合存储一些较为简单的数据,对于需要进行较复杂查询的数据,关系型数据库显得更为合适。
    • 不适合持久存储海量数据。

    分类

    非关系型数据库都是针对某些特定的应用需求出现的,因此,对于该类应用,具有极高的性能。依据结构化方法以及应用场合的不同,主要分为以下几类:

    1. 面向高性能并发读写key-value 数据库:

    key-value数据库的主要特点是具有极高的并发读写性能。
    Key-value数据库是一种以键值对存储数据的一种数据库,类似Java中的map。可以将整个数据库理解为一个大的map,每个键都会对应一个唯一的值。
    主流代表为 Redis, Amazon DynamoDB, MemcachedMicrosoft Azure Cosmos DB 和 Hazelcast

    2. 面向海量数据访问面向文档数据库:

    这类数据库的主要特点是在海量的数据中可以快速的查询数据。
    文档存储通常使用内部表示法,可以直接在应用程序中处理,主要是JSONJSON文档也可以作为纯文本存储在键值存储或关系数据库系统中。
    主流代表为 MongoDBAmazon DynamoDBCouchbaseMicrosoft Azure Cosmos DB 和 CouchDB

    3. 面向搜索数据内容搜索引擎

    搜索引擎是专门用于搜索数据内容的 NoSQL 数据库管理系统。
    主要是用于对海量数据进行近实时的处理和分析处理,可用于机器学习和数据挖掘
    主流代表为 ElasticsearchSplunkSolrMarkLogic 和 Sphinx

    4. 面向可扩展性分布式数据库:

    这类数据库的主要特点是具有很强的可拓展性。
    普通的关系型数据库都是以行为单位来存储数据的,擅长以行为单位的读入处理,比如特定条件数据的获取。因此,关系型数据库也被认为是面向行的数据库。相反,面向列的数据库是以列为单位来存储数据的,擅长以列为单位读入数据。
    这类数据库想解决的问题就是传统数据库存在可扩展性上的缺陷,这类数据库可以适应数据量的增加以及数据结构的变化,将数据存储在记录中,能够容纳大量动态列。由于列名和记录键不是固定的,并且由于记录可能有数十亿列,因此可扩展性存储可以看作是二维键值存储。
    主流代表为 CassandraHBaseMicrosoft Azure Cosmos DBDatastax Enterprise 和 Accumulo

    CAP 理论

    • C(Consistency)一致性

    一致性是指更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致。(与 ACID 的 C 完全不同)

    • A(Availability)可用性

    可用性是指服务一直可用,而且是正常响应时间。

    • P(Partition tolerance)分区容错性

    分区容错性是指分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务。

    CAP 理论:一个分布式系统不可能同时满足 C(一致性)、A(可用性)、P(分区容错性) 三个基本需求,并且最多只能满足其中的两项。

    对于一个分布式系统来说,分区容错性是基本需求,否则不能称之为分布式系统,因此需要在 C 和 A 之间寻求平衡。

    关系型与非关系型数据库的比较

    1. 成本:Nosql数据库(非关系型数据库)简单易部署,基本都是开源软件,不需要像使用Oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
    2. 查询速度:Nosql数据库将数据存储于缓存之中,而且不需要经过SQL层的解析,关系型数据库将数据存储在硬盘中,自然查询速度远不及Nosql数据库。
    3. 存储数据的格式:Nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
    4. 扩展性:关系型数据库有类似 join 这样的多表查询机制的限制导致扩展很艰难。Nosql基于键值对,数据之间没有耦合性,所以非常容易水平扩展
    5. 持久存储:Nosql不适用于持久存储,海量数据的持久存储,还是需要关系型数据库。
    6. 数据一致性:非关系型数据库一般强调的是数据最终一致性,不像关系型数据库一样强调数据的强一致性,从非关系型数据库中读到的有可能还是处于一个中间态的数据。
    7. 事务处理:Nosql不提供对事务的处理

    最近的数据库排名

    网站地址:https://db-engines.com/en/ranking

     

    可以发现现在主流的还是关系型数据库,非关系型数据库中 Redis 和 MongoDB 最受欢迎。

    展开全文
  • 关系型数据库和非关系型数据库的种类和区别 数据库 类型特性优点缺点 关系型数据库 SQLite、Oracle、mysql 1、关系型数据库,是指采用了关系模型来组织 数据的数据库; 2、关系型数据库的最大特点...

    关系型数据库和非关系型数据库的种类和区别

    数据库 类型特性优点缺点
    关系型数据库 SQLite、Oracle、mysql 1、关系型数据库,是指采用了关系模型来组织 数据的数据库; 2、关系型数据库的最大特点就是事务的一致性; 3、简单来说,关系模型指的就是二维表格模型, 而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。 1、容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解; 2、使用方便:通用的SQL语言使得操作关系型数据库非常方便; 3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率; 4、支持SQL,可用于复杂的查询。 1、为了维护一致性所付出的巨大代价就是其读写性能比较差; 2、固定的表结构; 3、高并发读写需求; 4、海量数据的高效率读写;
    非关系型数据库 MongoDb、redis、HBase 1、使用键值对存储数据; 2、分布式; 3、一般不支持ACID特性; 4、非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。 1、无需经过sql层的解析,读写性能很高; 2、基于键值对,数据没有耦合性,容易扩展; 3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。 1、不提供sql支持,学习和使用成本较高; 2、无事务处理,附加功能bi和报表等支持也不好;

    先上一个比较表述专业化的表格分析。

    关系型数据库优点:

    1. 用的都是表结构,比较容易理解

    2. 使用的是通用的SQL语言

    3. 减少了数据的冗余和数据不一致的情况发生

    4. 可以进行表或者多个表之间的复杂查询

    关系型数据库缺点:

    1. 固定的表结构,灵活性欠缺

    2. 为了维持表结构而牺牲了读写性能

    3. 高并发读写能力较差

    非关系型数据库优点:

    1. 格式灵活,数据类型多种多样,可以是键对值,甚至是文档,图片,应用场景广泛,但是关系型数据库只支持原有的数据类型

    2. 由于是非关系型,数据没有耦合性,容易扩展

    3. 无须通过sql层的解析,读写能力较高

    4. 成本低,nosql数据库部署简单,基本都是开源软件

    非关系型数据库缺点:

    1. 不提供sql支持,学习成本高

    2. 无事务支持

    3. 由于数据类型灵活,也导致了数据结构相对复杂,在复杂查询方面比较麻烦

    总结:总的来说差别就在于关系型这三个字上面,由于数据结构设置的方式不同,关系型数据库呈现的是一种数据规范化之后的结果,而非关系型数据库展现的则是一种数据结构化存储方法的集合,对应不同的使用场景,可以选择不同的数据库。

    数据库操作

    1.创建数据库:create database ${new_Database_Name}

    2.删除数据库:drop database${database_Name}

    3.建表: create table ${table_Name} {

    ${'field_name1'} ${field_type} primary key,

    //设立第一个字段的名字和字段类型且将第一个字段作为主键,设立主键也是为了保障数据之间的关联性

    ${'field_name1'} ${field_type},

    //设立第二个字段的名字和字段类型

    }

    4.删除表 drop table ${table_name}

    5.插入数据 insert into ${table_name} values(value1,value2,value3)

    insert into ${table_name}(field1,field2) values(value1,value2) //指定字段插入

    1. 数据库查询 select ${field_name2,filed_name2} from ${database_name}

    where 表达式

    1. 删除数据 delete from ${table_name}

      where 表达式

    表达式中可以包含LIKE,REGEXP ,并且可以后接union select 进行联合查询

    8.数据更新 update ${table_name} set ${field_name}=${value} where 表达式

    数据类型

    数值

    类型大小范围(有符号)范围(无符号)用 途
    TINYINT 1 字节 (-128,127) (0,255) 小整数值
    SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值
    MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
    INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
    BIGINT 8 字节 (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值
    FLOAT 4 字节 (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) 单精度 浮点数值
    DOUBLE 8 字节 (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 双精度 浮点数值
    DECIMAL 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 依赖于M和D的值 依赖于M和D的值 小数值

    日期时间

    类型大小 (字节)范围格式用途
    DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 日期值
    TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 时间值或持续时间
    YEAR 1 1901/2155 YYYY 年份值
    DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 混合日期和时间值
    TIMESTAMP 4 1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 YYYYMMDD HHMMSS 混合日期和时间值,时间戳

    字符串类型

    类型大小用途
    CHAR 0-255字节 定长字符串
    VARCHAR 0-65535 字节 变长字符串
    TINYBLOB 0-255字节 不超过 255 个字符的二进制字符串
    TINYTEXT 0-255字节 短文本字符串
    BLOB 0-65 535字节 二进制形式的长文本数据
    TEXT 0-65 535字节 长文本数据
    MEDIUMBLOB 0-16 777 215字节 二进制形式的中等长度文本数据
    MEDIUMTEXT 0-16 777 215字节 中等长度文本数据
    LONGBLOB 0-4 294 967 295字节 二进制形式的极大文本数据
    LONGTEXT 0-4 294 967 295字节 极大文本数据

    实践

    先创建一个新的库作为练手,最后使用use语句选择则新创建的数据库

    在test库中分别建立了digit,time,string三个表来分别存储数值,日期时间,字符串三种不同的类型数据

    这里可以通过desc语法查看表的结构

    进行简单的数据插入操作

    然后进行查询操作

    这里进行查询操作,由于表中只有一条数据就不后加whre和表达式了,可以看到数据被更改成10了

    这里进行数据删除的操作,先插入一条无用的数据

    进行删除

    可以看到之前插入的数据消失了,删除成功,至此mysql的基本操作学习完成。

    ----------分隔符---------

    mysql指令

    limit指令

    limit [位置偏移量,]行数

    若第一条记录的偏移量为0,可以理解为跳过了多少条记录,行数则代表从偏移量开始返回多少条数据

    偏移量默认为0

    limit 4 代表 返回4条数据

    limit 0,3 代表从0开始返回3条数据

    REGEXP正则表达式

    匹配模式内容过多,这里不用于阐述

    补充:关于LIKE和REGEXP的区别:LIKE匹配整个列。如果被匹配的文本仅在列值中出现,LIKE并不会找到它,相应的行也不会返回(当然,使用通配符除外)。而REGEXP在列值内进行匹配,如果被匹配的匹配的文本在列值中出

    查看表结构

    descript ${table_name} 可以省略为desc

    增添新用户

    授权:grant select on 数据库.* to 用户名@登录主机 identified by “密码”

    例子:grant select,insert,update,delete on test.digit to test1@localhost “%” Identified by “abc”;

    例子中增加了一个用户test1密码为abc且只可以在本地登录,且对test库的digit表具有插入,查询,插入三中操作权限的用户

    收回权限: 例子:revoke delete ON test.digit from test1@localhost;

    将test1对test库中digit表的删除权限去除。

    1. ALTER: 修改表和索引

    2. CREATE: 创建数据库和表

    3. DROP: 抛弃(删除)数据库和表

    4. INDEX: 创建或抛弃索引

    5. INSERT: 向表中插入新行

    6. SELECT: 检索表中的记录

    7. UPDATE 修改现存表记录

    8. FILE: 读或写服务器上的文件

    9. PROCESS: 查看服务器中执行的线程信息或杀死线程

    10. RELOAD: 重载授权表或清空日志。主机缓存或表缓存

    11. SHUTDOWN: 关闭服务器

    12. ALL: 所有权限,ALL PRIVILEGES同义词 USAGE: 特殊的“无权限”权限

      除此之外还有十二种单独授权,可以搭配起来进行使用

    删除用户

    例子:Delete FROM user Where User='test' and Host='localhost'; 删除一个user为test且host为本地网络的账号

    这里也可以使用update语句修改用户user的password字段

    加索引

    mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]); 例子: mysql> alter table employee add index emp_name (name);

    加主关键字的索引

    mysql> alter table 表名 add primary key (字段名); 例子: mysql> alter table employee add primary key(id);

    加唯一限制条件的索引

    mysql> alter table 表名 add unique 索引名 (字段名); 例子: mysql> alter table employee add unique emp_name2(cardnumber);

    删除某个索引

    mysql> alter table 表名 drop index 索引名; 例子: mysql>alter table employee drop index emp_name;

    增加字段

    mysql> ALTER TABLE table_name ADD field_name field_type;

    例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0 mysql> alter table MyClass add passtest int(4) default '0'

    修改原字段名称及类型: mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;

    删除字段: MySQL ALTER TABLE table_name DROP field_name;

    修改表名

    命令:rename table 原表名 to 新表名;

    例如:在表MyClass名字更改为YouClass mysql> rename table MyClass to YouClass;

    当你执行 RENAME 时,你不能有任何锁定的表或活动的事务。你同样也必须有对原初表的 ALTER 和 DROP 权限,以及对新表的 CREATE 和 INSERT 权限。

    如果在多表更名中,MySQL 遭遇到任何错误,它将对所有被更名的表进行倒退更名,将每件事物退回到最初状态。

    附录:sqli-lab 安装

     uname -a   //保证linux内核是3.01以上
     sudo apt-get install -y docker.io  
     docker version //检查安装情况
     sudo groupadd docker //建立新的用户组
     sudo gpasswd -a ${USER} docker //然后把当前用户加入docker组
     sudo service docker restart //重启服务
     newgrp - docker //切换到docker用户组
     //默认情况下, docker 命令会使用 Unix socket 与 Docker 引擎通讯。
     //而只有 root 用户和docker 组的用户才可以访问 Docker 引擎的Unix socket。
     //这就是换源的原因
     sudo vim /etc/docker/daemon.json  //这一步用于换docker源,镜像源自寻
     docker search sqli-lab
     docker pull ${mirror-name}
     docker run -dt --name sqli -p 5000:80 --rm acgpiano/sqli-labs //启动sqli-lab-dt 让其在后台运行
     
     //-dt 让其在后台运行 --name 给其命名 -p 本地端口:docker中的端口 是将docker的端口映射到本地端口
     //--rm 当其关闭后将删除开启的资源
     这时候打开本地的5000端口即可运行sqli-lab

     

    关系型数据库和非关系型数据库的种类和区别
    [Guānxì xíng shùjùkù hé fēi guānxì xíng shùjùkù de zhǒnglèi hé qūbié]
    Types and differences between relational and non-relational databases
     

    转载于:https://www.cnblogs.com/zedian752/p/11338139.html

    展开全文
  • 关系型数据库和非关系型数据库的种类和区别数据库 类型特性优点缺点关系型数据库 SQLite、Oracle、mysql1、关系型数据库,是指采用了关系模型来组织 数据的数据库; 2、关系型数据库的最大特点就是事务的一致性; 3...

    关系型数据库和非关系型数据库的种类和区别

    数据库 类型特性优点缺点

    关系型数据库 SQLite、Oracle、mysql

    1、关系型数据库,是指采用了关系模型来组织 数据的数据库; 2、关系型数据库的最大特点就是事务的一致性; 3、简单来说,关系模型指的就是二维表格模型, 而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

    1、容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解; 2、使用方便:通用的SQL语言使得操作关系型数据库非常方便; 3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率; 4、支持SQL,可用于复杂的查询。

    1、为了维护一致性所付出的巨大代价就是其读写性能比较差; 2、固定的表结构; 3、高并发读写需求; 4、海量数据的高效率读写;

    非关系型数据库 MongoDb、redis、HBase

    1、使用键值对存储数据; 2、分布式; 3、一般不支持ACID特性; 4、非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。

    1、无需经过sql层的解析,读写性能很高; 2、基于键值对,数据没有耦合性,容易扩展; 3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。

    1、不提供sql支持,学习和使用成本较高; 2、无事务处理,附加功能bi和报表等支持也不好;

    先上一个比较表述专业化的表格分析。

    关系型数据库优点:

    用的都是表结构,比较容易理解

    使用的是通用的SQL语言

    减少了数据的冗余和数据不一致的情况发生

    可以进行表或者多个表之间的复杂查询

    关系型数据库缺点:

    固定的表结构,灵活性欠缺

    为了维持表结构而牺牲了读写性能

    高并发读写能力较差

    非关系型数据库优点:

    格式灵活,数据类型多种多样,可以是键对值,甚至是文档,图片,应用场景广泛,但是关系型数据库只支持原有的数据类型

    由于是非关系型,数据没有耦合性,容易扩展

    无须通过sql层的解析,读写能力较高

    成本低,nosql数据库部署简单,基本都是开源软件

    非关系型数据库缺点:

    不提供sql支持,学习成本高

    无事务支持

    由于数据类型灵活,也导致了数据结构相对复杂,在复杂查询方面比较麻烦

    总结:总的来说差别就在于关系型这三个字上面,由于数据结构设置的方式不同,关系型数据库呈现的是一种数据规范化之后的结果,而非关系型数据库展现的则是一种数据结构化存储方法的集合,对应不同的使用场景,可以选择不同的数据库。

    数据库操作

    1.创建数据库:create database ${new_Database_Name}

    2.删除数据库:drop database${database_Name}

    3.建表: create table ${table_Name} {

    ${'field_name1'} ${field_type} primary key,

    //设立第一个字段的名字和字段类型且将第一个字段作为主键,设立主键也是为了保障数据之间的关联性

    ${'field_name1'} ${field_type},

    //设立第二个字段的名字和字段类型

    }

    4.删除表 drop table ${table_name}

    5.插入数据 insert into ${table_name} values(value1,value2,value3)

    insert into ${table_name}(field1,field2) values(value1,value2) //指定字段插入

    数据库查询 select ${field_name2,filed_name2} from ${database_name}

    where 表达式

    删除数据 delete from ${table_name}

    where 表达式

    表达式中可以包含LIKE,REGEXP ,并且可以后接union select 进行联合查询

    8.数据更新 update ${table_name} set ${field_name}=${value} where 表达式

    数据类型

    数值

    类型大小范围(有符号)范围(无符号)用 途

    TINYINT

    1 字节

    (-128,127)

    (0,255)

    小整数值

    SMALLINT

    2 字节

    (-32 768,32 767)

    (0,65 535)

    大整数值

    MEDIUMINT

    3 字节

    (-8 388 608,8 388 607)

    (0,16 777 215)

    大整数值

    INT或INTEGER

    4 字节

    (-2 147 483 648,2 147 483 647)

    (0,4 294 967 295)

    大整数值

    BIGINT

    8 字节

    (-9,223,372,036,854,775,808,9 223 372 036 854 775 807)

    (0,18 446 744 073 709 551 615)

    极大整数值

    FLOAT

    4 字节

    (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38)

    0,(1.175 494 351 E-38,3.402 823 466 E+38)

    单精度 浮点数值

    DOUBLE

    8 字节

    (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

    0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308)

    双精度 浮点数值

    DECIMAL

    对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2

    依赖于M和D的值

    依赖于M和D的值

    小数值

    日期时间

    类型大小 (字节)范围格式用途

    DATE

    3

    1000-01-01/9999-12-31

    YYYY-MM-DD

    日期值

    TIME

    3

    '-838:59:59'/'838:59:59'

    HH:MM:SS

    时间值或持续时间

    YEAR

    1

    1901/2155

    YYYY

    年份值

    DATETIME

    8

    1000-01-01 00:00:00/9999-12-31 23:59:59

    YYYY-MM-DD HH:MM:SS

    混合日期和时间值

    TIMESTAMP

    4

    1970-01-01 00:00:00/2038 结束时间是第 2147483647秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07

    YYYYMMDD HHMMSS

    混合日期和时间值,时间戳

    字符串类型

    类型大小用途

    CHAR

    0-255字节

    定长字符串

    VARCHAR

    0-65535 字节

    变长字符串

    TINYBLOB

    0-255字节

    不超过 255 个字符的二进制字符串

    TINYTEXT

    0-255字节

    短文本字符串

    BLOB

    0-65 535字节

    二进制形式的长文本数据

    TEXT

    0-65 535字节

    长文本数据

    MEDIUMBLOB

    0-16 777 215字节

    二进制形式的中等长度文本数据

    MEDIUMTEXT

    0-16 777 215字节

    中等长度文本数据

    LONGBLOB

    0-4 294 967 295字节

    二进制形式的极大文本数据

    LONGTEXT

    0-4 294 967 295字节

    极大文本数据

    实践

    11338139.html

    先创建一个新的库作为练手,最后使用use语句选择则新创建的数据库11338139.html

    11338139.html11338139.html

    在test库中分别建立了digit,time,string三个表来分别存储数值,日期时间,字符串三种不同的类型数据11338139.html

    这里可以通过desc语法查看表的结构

    11338139.html

    进行简单的数据插入操作

    11338139.html

    然后进行查询操作

    11338139.html

    这里进行查询操作,由于表中只有一条数据就不后加whre和表达式了,可以看到数据被更改成10了11338139.html

    这里进行数据删除的操作,先插入一条无用的数据11338139.html

    进行删除11338139.html

    可以看到之前插入的数据消失了,删除成功,至此mysql的基本操作学习完成。

    ----------分隔符---------

    mysql指令

    limit指令

    limit [位置偏移量,]行数

    若第一条记录的偏移量为0,可以理解为跳过了多少条记录,行数则代表从偏移量开始返回多少条数据

    偏移量默认为0

    limit 4 代表 返回4条数据

    limit 0,3 代表从0开始返回3条数据

    REGEXP正则表达式

    匹配模式内容过多,这里不用于阐述

    补充:关于LIKE和REGEXP的区别:LIKE匹配整个列。如果被匹配的文本仅在列值中出现,LIKE并不会找到它,相应的行也不会返回(当然,使用通配符除外)。而REGEXP在列值内进行匹配,如果被匹配的匹配的文本在列值中出

    查看表结构

    descript ${table_name} 可以省略为desc

    增添新用户

    授权:grant select on 数据库.* to 用户名@登录主机 identified by “密码”

    例子:grant select,insert,update,delete on test.digit to test1@localhost “%” Identified by “abc”;

    例子中增加了一个用户test1密码为abc且只可以在本地登录,且对test库的digit表具有插入,查询,插入三中操作权限的用户

    收回权限:例子:revoke delete ON test.digit from test1@localhost;

    将test1对test库中digit表的删除权限去除。

    ALTER: 修改表和索引

    CREATE: 创建数据库和表

    DROP: 抛弃(删除)数据库和表

    INDEX: 创建或抛弃索引

    INSERT: 向表中插入新行

    SELECT: 检索表中的记录

    UPDATE 修改现存表记录

    FILE: 读或写服务器上的文件

    PROCESS: 查看服务器中执行的线程信息或杀死线程

    RELOAD: 重载授权表或清空日志。主机缓存或表缓存

    SHUTDOWN: 关闭服务器

    ALL: 所有权限,ALL PRIVILEGES同义词 USAGE: 特殊的“无权限”权限

    除此之外还有十二种单独授权,可以搭配起来进行使用

    删除用户

    例子:Delete FROM user Where User='test' and Host='localhost'; 删除一个user为test且host为本地网络的账号

    这里也可以使用update语句修改用户user的password字段

    加索引

    mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]);例子: mysql> alter table employee add index emp_name (name);

    加主关键字的索引

    mysql> alter table 表名 add primary key (字段名);例子: mysql> alter table employee add primary key(id);

    加唯一限制条件的索引

    mysql> alter table 表名 add unique 索引名 (字段名);例子: mysql> alter table employee add unique emp_name2(cardnumber);

    删除某个索引

    mysql> alter table 表名 drop index 索引名;例子: mysql>alter table employee drop index emp_name;

    增加字段

    mysql> ALTER TABLE table_name ADD field_name field_type;

    例如:在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0mysql> alter tableMyClass addpasstest int(4) default'0'

    修改原字段名称及类型:mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;

    删除字段:MySQL ALTER TABLE table_name DROP field_name;

    修改表名

    命令:rename table 原表名 to 新表名;

    例如:在表MyClass名字更改为YouClassmysql> rename table MyClass to YouClass;

    当你执行 RENAME 时,你不能有任何锁定的表或活动的事务。你同样也必须有对原初表的 ALTER 和 DROP 权限,以及对新表的 CREATE 和 INSERT 权限。

    如果在多表更名中,MySQL 遭遇到任何错误,它将对所有被更名的表进行倒退更名,将每件事物退回到最初状态。

    附录:sqli-lab 安装

    uname -a   //保证linux内核是3.01以上

    sudo apt-get install -y docker.io

    docker version //检查安装情况

    sudo groupadd docker //建立新的用户组

    sudo gpasswd -a ${USER} docker //然后把当前用户加入docker组

    sudo service docker restart //重启服务

    newgrp - docker //切换到docker用户组

    //默认情况下, docker 命令会使用 Unix socket 与 Docker 引擎通讯。

    //而只有 root 用户和docker 组的用户才可以访问 Docker 引擎的Unix socket。

    //这就是换源的原因

    sudo vim /etc/docker/daemon.json //这一步用于换docker源,镜像源自寻

    docker search sqli-lab

    docker pull ${mirror-name}

    docker run -dt --name sqli -p 5000:80 --rm acgpiano/sqli-labs //启动sqli-lab-dt 让其在后台运行

    //-dt 让其在后台运行 --name 给其命名 -p 本地端口:docker中的端口 是将docker的端口映射到本地端口

    //--rm 当其关闭后将删除开启的资源

    这时候打开本地的5000端口即可运行sqli-lab

    关系型数据库和非关系型数据库的种类和区别

    [Guānxì xíng shùjùkù hé fēi guānxì xíng shùjùkù de zhǒnglèi hé qūbié]

    11338139.html

    Types and differences between relational and non-relational databases

    展开全文
  • 数据库根据其数据存储方式可以分为关系型数据库和非关系型数据库。常见的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。常见非关系性数据库有 NoSql、Cloudant,Hbase等 3....

    1.什么是数据库:

    存储电子文件的处所,用户可以对文件中的数据增删改查等操作。

    2.数据库的种类:

    数据库根据其数据的存储方式可以分为关系型数据库和非关系型数据库。常见的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。常见的非关系性数据库有 NoSql、Cloudant,Hbase等

    3.数据库的存储方式:

    关系型数据库:

    1)以行和列的形式存储数据,以便于用户理解。这一系列的行和列被称为表,一组表组成了数据库。

    2)关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名。 元组:可以理解为二维表中的一行,在数据库中经常被称为记录。 属性:可以理解为二维表中的一列,在数据库中经常被称为字段。 域:属性的取值范围,也就是数据库中某一列的取值限制。 关键字:一组可以唯一标识元组的属性。数据库中常称为主键,由一个或多个列组成。 关系模式:指对关系的描述,其格式为:关系名(属性1,属性2,…,属性N)。

    3)数据存储方式:行存储,一个表里每一个对象的记录存储一行,一行里包括了该记录的所有特征

    key 列1 列2 列3

    1 1 1 1

    非关系型数据库:

    1)以列为单位进行数据的存储,一列作为一个记录,每个对象的记录会存储多行,各行相对独立;

    2)数据存储方式:

    key 列名 值

    1 列1 1

    1 列2 1

    1 列3 1

    4.关系型数据库的优缺点及使用场景:

    优点:

    1)复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。

    2)事务支持使得对于安全性能很高的数据访问要求得以实现。

    缺点:

    1)不擅长大量数据的写入处理

    2)不擅长为有数据更新的表做索引或表结构(schema)变更

    3) 字段不固定时应用不方便

    4)不擅长对简单查询需要快速返回结果的处理

    使用场景:

    1)需要做复杂处理的数据;

    2)数据量不是特别大的数据;

    3)对安全性要求高的数据;

    4)数据格式单一的数据;

    5.非关系型数据库的优缺点及使用场景:

    优点:

    1)nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。

    2)nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。

    3)nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。

    4)不支持Join处理,各个数据都是独立设计的,很容易把数据分散在多个服务器上,故减少了每个服务器上的数据量,即使要处理大量数据的写入,也变得更加容易,数据的读入操作当然也同样容易。

    缺点:

    1)无法对表进行复杂的计算,不支持join等功能。

    使用场景:

    1)海量数据存储;

    2)多格式的数据存储;

    3)对查询速度要求快的数据存储;

    展开全文
  • 关系模型指就是二维表格模型,而一个关系型数据库就是由二维表及其之间联系所组成的一个数据组织。关系模型中常用概念:关系:一张二维表,每个关系都具有一个关系名,也就是表名元组:二维表中一行,在...
  • 一、关系型数据库与欸关系型数据库的主要区别: 二、关系型数据库 关系型数据库:指采用了关系模型来组织数据的数据库。 关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成...
  • 便于日常用到时进行查找,如下:一、关系型数据库1、含义:关系型数据库,是指采用了关系模型来组织数据数据库,其以行和列形式存储数据,以便于用户理解,关系型数据库这一系列行和列被称为表,一组表组成了...
  • 什么是关系型数据库?数据库就是用来存储数据的仓库,...关系型数据库的核心元素:记录: 数据行字段 : 数据列数据表 : 数据行的集合数据库 : 数据表的集合主键 : 特殊的字段, 用来唯一标识记录的唯一性。了解...
  • 2、关系型数据库的最大特点就是事务的一致性;3、简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。 1、容易理解:二维表结构是非常贴近逻辑世界一个...
  • 开发工作中我们常用数据库大致分为关系型数据库和非关系型数据库两种,那这两种到底是什么呢? 1.关系型数据库 所谓关系型数据库,是建立...简单说,关系型数据库是由多张能互相联接二维行列表格组成的数据库...
  • 关系模型:二维表格模型,一个关系型数据库是由二维表及其之间联系组成的一个数据组织; 关系:一张二维表,关系名也即表名; 元组:二维表中一行,数据库中一条记录; 属性:二维表中一列,数据库中一个...
  • 关系型数据库和非关系型数据库的区别 非关系型数据库称为NoSQL,以 k-v 键值对的方式将数据存储在缓存中,数据之间没有耦合性,方便进行水平扩展。常见的 NoSQL 有 Redis、Memcached、MongoDB、Hbase。而关系型...
  • 一个关系型数据库就是由二维表及其之间联系所组成的一个数据组织。 优点: 易于维护:都是使用表结构,格式一致; 使用方便:sql语言通用,可用于复杂查询; 复杂操作:支持sql,可用于一个表以及多个表之间非常...
  • 关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间联系组成的一个数据组织。 常见有:Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB 等 非关系型...
  • 数据库的概念1.1 数据库定义1.11 数据(Data)1.12 表1.13 数据库1.2 数据库系统与文件系统的区别1.3 数据库的分类1.31 数据库的...关系型数据库的组成1.43 关系数据库的结构1.44 关系数据库的应用1.5 非关系数据库二....
  • 关系型数据库,是指采用了关系模型来组织数据数据库,其以行和列形式存储数据,以便于用户理解,关系型数据库这一系列行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中数据,而查询是一个...
  • 关系模型指就是二维表格模型,而一个关系型数据库就是由二维表及其之间联系所组成的一个数据组织。 关系模型中常用概念: 关系:一张二维表,每个关系都具有一个关系名,也就是表名 元组:二维表中一行,在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,638
精华内容 1,455
关键字:

关系型数据库的组成