javaweb学习之路mysql与JDBC回顾

数据库的概念

1.数据库的基本概念

数据库可视为电子化的文件柜----存储电子文件的处所,用户可以对文件中的数据进行增加,修改,删除及查询操作,所谓“数据库”是以一定方式存储在一起,能让多个用户共享,具有尽可能小的冗余度、与应用程序彼此独立的数据集合

2.数据库的作用

1.实现数据共享:数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。

2.减少数据的冗余度:同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量的重复数据,减少了数据冗余,维护了数据的一致性。

3.保持数据的独立性:数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)和物理独立性(数据物理结构的变化不影响数据的逻辑结构)。

4.数据实现集中控制:文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。

5.数据一致性和可维护性,以确保数据的安全性和可靠性:主要包括:安全性控制、完整性控制、并发控制,使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用。

6.故障恢复:由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或逻辑上的错误。比如对系统的误操作造成的数据错误等。

3.常见的数据库

1.数据库的分类

按照早期的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库、网状数据库和关系型数据库。而在当今的互联网中,最常见的数据库模型主要是两种,即SQL关系型数据库和NoSQL非关系型数据库。

关系型数据库的由来

虽然网状数据库和层次数据库已经很好的解决了数据的集中和共享问题,但是在数据库独立性和抽象级别上仍有很大欠缺。用户在对这两种数据库进行存取时,仍然需要明确数据的存储结构,指出存取路径。而关系型数据库就可以较好的解决这些问题。

关系型数据库介绍

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

关系型数据库诞生40多年了,从理论产生发展到现实产品,例如Oracle和MySQL,Oracle在数据库领域上升到霸主地位,形成每年高达数百亿美元的庞大市场。

传统关系数据库:Oracle、MySQL、Microsoft SQL Server、PostgreSQL

大数据常见数据库:Hive、Impala、Presto、ClickHouse

非关系型数据库介绍

非关系型数据库诞生背景

NoSQL,泛指非关系型数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型数据则由于其本身的特点得到了非常迅速的发展。NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能,它是作为对传统关系型数据库的一个有效的补充。

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们体重运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。

非关系型数据库种类

键值(key-value)存储数据库

键值数据库就类似传统语言中使用的哈希表。可以通过key来添加、查询、或者删除数据库,因为舒勇key主键访问,所以会获得很高的性能及扩展性。

键值数据库主要使用一个哈希表,这个表中有一个特定的键和一个指针指向的特定的数据。key/value模型对于IT系统来说的优势在于简单、易部署、高并发。

典型产品:Memcached、Redis、Ehcache

列存储(column-oriented)

列存储数据库讲数据存储在列族中,一个列族存储经常被一起查询的相关数据,比如人类,我们经常会查询某个人的姓名和年龄,而不是薪资。这种情况下姓名和年龄会被放到一个列族中,薪资会被放到另一个列族中。

这种数据库通常用来应对分布式存储海量数据。

典型产品:Cassandra(AP)、HBase(CP)

面向文档(document-oriented)数据库

文档型数据库的灵感是来自于Lotus Notes办公软件,而且它同第一种键值数据库类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。

面向文档数据库会将数据以文档形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名词与对应值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或JSONB等多种形式存储。

典型产品:MongoDB、CouchDB

图形数据库

图形数据库允许我们将数据以图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体,Steve Jobs、Apple和Next,则会有两个“Founded by”的边将Apple和Next连接到Steve Jobs。

典型产品:Neo4J、InforGrid

时序数据库

2017年时序数据库忽然火了起来。开年2月Facebook开源了beringei时序数据库;到了4月基于PostgreSQL打造的时序数据库TimeScaleDB也开源了,而早在2016年7月,百度云在其天工物联网平台上发布了国内首个多租户的分布式时序数据库产品TSDB,成为支持其发展制造,交通,能源,智慧城市等产业领域的核心产品,同时也成为百度战略发展产业物联网的标志性事件。时序数据库作为物联网方向一个非常重要的服务,业界的频频发声,正说明各家企业已经迫不及待的拥抱物联网时代的到来。

时序数据是基于时间的一系列的数据。在有时间的坐标中将这些数据点连成线,往过去看可以做成多纬度报表,揭示其趋势性、规律性、异常性;往未来看可以做大数据分析,机器学习,实现预测和预警。

时序数据库就是存放时序数据的数据库,并且需要支持时序数据的快速写入、持久化、多纬度的聚合查询等基本功能。

对比传统数据库仅仅记录了数据的当前值,时序数据库则记录了所有的历史数据。同时时序数据的查询也总是会带上时间作为过滤条件。

典型产品:InfluxDB、Prometheus(普罗米修斯)、OpenTSDB(底层基于HBase)

搜索引擎存储

搜索引擎存储:搜索引擎数据库最近比较火的包括Solr和Elasticsearch等。Solr是Apache 的一个开源项目,基于业界大名鼎鼎的java开源搜索引擎Lucene。在过去的十年里,solr发展壮大,拥有广泛的用户群体。solr提供分布式索引、分片、副本集、负载均衡和自动故障转移和恢复功能。如果正确部署,良好管理,solr就能够成为一个高可靠、可扩展和高容错的搜索引擎。

Elasticsearch构建在Apache Lucene库之上,同是开源搜索引擎。Elasticsearch在Solr推出几年后才面世的,通过REST和schema-free的JSON文档提供分布式、多租户全文搜索引擎。并且官方提供Java,Groovy,PHP,Ruby,Perl,Python,.NET和Javascript客户端。目前Elasticsearch与Logstash和Kibana配合,部署成日志采集和分析,简称ELK,它们都是开源软件。最近新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash。

典型产品:Elasticsearch、Solr

现在主流的Java开发人员一般都需要会主流数据库。开发人员需要对Mysql、Oracle、SqlServer这三个常用的熟悉了解。

使用SQL语句操作数据库

SQL分类
数据定义语言:简称DDL,用来定义数据库对象:数据库database,表table,列column等。关键字:创建create,修改alter,删除drop等

数据操作语言:简称DML,用来对数据库中标的记录进行更新。关键字:插入insert,删除delete,更新update等

数据查询语言:简称DQL,用来查询数据库中标的记录。关键字:select,from,where等

数据控制语言:简称DCL,用来定义数据库的访问权限和安全级别,及创建用户;关键字:grant等

写出创建数据库的SQL语句

语法:

create database 数据库名;
create database 数据库名 character set 字符集


CREATE DATABASE test08;
CREATE DATABASE test08_1 CHARACTER SET utf8;

写出删除数据库的SQL语句

语法:

drop database 数据库名称

DROP DATABASE test08;

写出查看所有数据库的SQL语句

语法:

show databases;

SHOW DATABASES;

写出切换数据库的SQL语句

语法:

use 数据库名称

USE test08;

使用SQL语句操作表结构

写出创建表结构的SQL语句

create table 表名{
	字段名 类型(长度) 【约束】,
	字段名 类型(长度) 【约束】
};
	字符类型:varchar(n)
单表约束:
	* 主键约束:primary key,要求被修饰的字段:唯一 和 非空
	* 唯一约束:unique, 要求被修饰的字段: 唯一
	* 非空约束:not null, 要求被修饰的字段: 非空

CREATE TABLE t01(
t_id INT(11) PRIMARY KEY,
t_name VARCHAR(255),
t_num VARCHAR(32)
);

写出删除表结构的SQL语句

语法:drop table 表格名称

drop table t01

写出对表结构添加一列的SQL语句

语法:alter table 表名称 add 列名 类型(长度) 【约束】

alter table t01 add t_age int(32)

写出删除表结构中一列的SQL语句

语法:alter table 表名称 add 列名 类型(长度) 【约束】

alter table t01 add t_age int(32)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值