数据库基础

什么是数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。

我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。

所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:

  • 1.数据以表格的形式出现
  • 2.每行为各种记录名称
  • 3.每列为记录名称所对应的数据域
  • 4.许多的行和列组成一张表单
  • 5.若干的表单组成database

关系型数据库

关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类,合并,连接或选取等运算实现数据的管理。MYSQL ORACLE

(非关系型数据库,Not OnlySql)NoSql 其实是对传统关系型数据库的有效补充。
1)键值(Key-Value)存储数据库
键值数据库就类似传统语言中使用的哈希表。可以通过key来添加,查询或者删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性。

键值(key-value)数据库主要是使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单,易部署,高并发。
经典产品:Memcached,redis,memcacheDB,Berkeley DB

2)列存储(column-oriented)数据库
列存储数据库将数据存在列族(column family)中,一个列族存储经常被一起查询的相关数据。举个例子,如果我们有一个person类,我们通过会一起查询他们得姓名和年龄而不是薪资。这种情况下,名字和年龄就会被放入一个列族中,而薪资则在另一个列族中。而薪资则在另一个列族中。
这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的
典型产品:Cassandra,HBase   基于列的存储系统

3)面向文档(Document-Oriented)数据库
文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON.文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。
面向文件数据库会将数据以文档的形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串,数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML,JSON或者JSNOB等多种形式存储。
典型产品:MongoDB,GouchDB

4)图形(Graph)数据库
图形数据库允许我们将数据以图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体,Steve jobs,Apple和Next,则会有两个“Founded by”的边将Apple和Next连接到Steve Jobs。
图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据类型。许多NoSQL数据库都有RSET式的数据接口或者查询API。
典型产品:Neo4J,InfoGrid

一些关键术语

数据库:数据库是一些关联表的集合

数据表:是数据的矩阵,在一个数据库中的表看起来像一个简单的电子表格。

列:是一组相同类型的数据

行:是一组相关的数据,比如一个用户的数据

冗余:多余的储存输出,降低了性能,提高了数据的安全性。

主键:主键是唯一的,一个数据表只有一个主键

外键:外键作用于关联两个表

符合键:将多个列作为索引键,一般用于符合索引

索引:使用索引可以快速访问数据表中的特定信息,索引是对数据库表中一列或者多列的值进行排序类似目录。

表头:每一列的名称

一些基本操作

use 数据库名

show databases 列出数据库列表

show tables列出所有表

show columns from 表: 显示值

show index from 表:显示数据表的索引信息

创建数据库是create database 数据库名

删除是drop database 数据库名

创建mysql数据库的数据表create table table_name(column_name column_type)

mysql> CREATE TABLE tb_emp1
    -> (
    -> id INT(11),
    -> name VARCHAR(25),
    -> deptId INT(11),
    -> salary FLOAT
    -> );

create table if not exists test(id int)

  (int后设置auto_increment是自动增加)
  primary key('关键字')用于定义列为主键

数据表删除是drop table table_name

向表中添加数据是insert into table_name (id,name) values (1,‘amane’);

查询数据方式是select * from table_name;

 查询语句的语句格式是select column_name,column_name from table_name [where clause] [limit n][offset m]
 where binary是声明查询的关键字必须是大小写匹配的
 where columns_name like xxx 其中xxx可以用%来表示任意匹配 类似正则表达式
 select colums_name from table_name union select colums_name from table_name order by country 可以后面加all保留重复的值
 order by columns_name ASC正向排序 DESC逆向排序 se'l

修改数据是update table_name set name=‘suzuha’,id=3 [where clause];

删除数据是delete from table_name [where clause]

向已经建立的表中加入一列

alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(45) ;

后面加after COLUMN_NAME就是加在某一列后面 加first 就是在最前面

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值