据库概述
数据库(DataBase:DB)数据库是按照数据数据结构,存储,组织和管理数据的仓库
ps:存储和管理的仓库相当于就在磁盘上操作文件
数据库管理系统:
是专门用于管理数据库,是一个计算机软件,提供对数据库的建立,维护,查询和统计等操作
ps:我们一般说的数据库都是数据库服务器:DBMS,指的是数据库的服务端
什么是非关系型数据库?
非关系型数据库,是指采用了没有特定关系模型来组织数据的数据库。
NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析
随着大数据的不断发展,此时出现了一种数据库非关系型数据库,NOSQL数据库
常见非关系型数据库:
键值存储的数据库:Oracle DBD Redis BeansDB
列式存储的数据库:HBase Riak
文档存储的数据库 MongoDB CouchDB
图形存储的数据路 Neo4J InfoGrid
什么是关系型数据库?
关系型数据库是依据关系模型来创建的数据库。
所谓关系模型就是“一对一、一对多、多对多”等关系模型,关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。
关系型数据可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据(“多对多”),一本书对应多个作者(“一对多”),一本书对应一个出版日期(“一对一”)
关系模型是我们生活中能经常遇见的模型,存储这类数据一般用关系型数据库
关系模型包括数据结构(数据存储的问题,二维表)、操作指令集合(SQL语句)、完整性约束(表内数据约束、表与表之间的约束)。
关系型数据库
MySQL是一个典型的关系型数据库
SQL Server 微软
DB2 IMB
Oracle 甲骨文(Oracle)
Oracle:运行稳定,可移植性高,功能齐全,性能超群,适用于大企业(付费)
DB2:速度快,可靠性好,适用于海量数据,恢复性极强,适用于银行,电力,金融(付费)
SQL Server:全面,效率高,界面友好,操作方便,但是不跨平台,中小企业使用(免费,企业版收费)
MySQL:开源,体积小,速度快,全面支持SQL,适用于中小企业(完全免费)
SQL:结构化查询语言是关系型数据库的标准语言
特点: 简单,灵活,功能强大
SQL语句被分为6个部分
1.数据查询语言(DQL)data query language
其语句也被称为”数据检索语句”,用表中获取数据,确定数据怎样在应用程序显示
SELECT WHERE [ORDER BY] [GRPUP BY] HAVING 关键字
2.数据操作语言(DML)Data Manipulation Language
操作数据库使用:INSERT UDDATE和DELETE一般都是动词
3.事物处理语言(TPL)transaction processing language
它的语句是确保被DML语言可以影响其行为 BEDIN COMMIT 和 ROLLBACK
4.数据控制语言(DCL)Data Control Language
控制数据的操作 GRANT REVOKE(废除) 对单个用户或用组的数据库访问
5.数据定义语言(DDL)data definition language
动词CREATE 和 DROP 创建一个表删除一个表
DDL语言中也包含了查询中一部分
6.指针(游标)控制语言(CCL)Common Command Language
它可以操作数据空中的游标位置通过位置就可以进行单数的行的操作
FETCH INTO 和 UPTDATE WHERE CURRENT
书写SQL的规则:***强调内容*
1.在数据库中 SQL语言大小不敏感 SELECT/select/SElecT
ps:个人建议 大写
2.SQL语句单行或多行书写
3.在SQL语句汇总,关键字不能多行或缩写
4.为了可读性建议关键字大写 其他小写
表的概念:
MySQL是一种关系型数据库,关系型数据库最重要的概念就是表
固定的列数和任何行数组成的关系 –> 表
数据库中表 可以看做是一个 二维表(想象成二维数组) 每一行都是一个实体
表中的列是表示属性 每一行的记录数据 就相当属性的值
先以一个面向对象的思维来看待这张表
public class Sutdent{
private int stuNo;
private String name;
private int age;
private int classNo;
}
Student stu = new Student();
stu.setStuNo(10086);
面向对象的思维 —> 关系型数据库
类 —> 表
属性 —> 列(属性)
对象 —> 表中一行的数据
我们是不能直接操作表的,因为表是存储到数据库,先连接数据库
安装MySQL:
如何卸载MySQL:
360软件管家 –> 去卸载MySQL
1.控制面板 –> 程序和功能 –> 卸载MySQL
2.在我的电脑中 –> C:盘下有一个隐藏文件(ProgramData) –>文件夹中MySql文件夹删除
3.
就是由于卸载时有残余文件导致mysql安装失败。
首先,卸载mysql,然后删除安装目录。
接着,打开regedit.exe(cmd模式),删除以下注册表:
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/Eventlog/Application/MySQL
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet002/Services/Eventlog/Application/MySQL
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/Eventlog/Application/MySQL
尝试着删除之后,安装成功。
详细看安装文档强调内容
登录MySQL:*强调内容*
1.登录Mysql
1.1直接通过CMD –> mysql -uroot -p
1.2在开始菜单知道Mysql目录–>XXXX Client
这个可以直接运行效果一样的
常用命令:
查看数据库中有哪些数据库 show databases;
使用哪个数据库 use 对应的数据库名称 得到一个打印结果Database changed –> 数据改变成功已经使用到所要使用的数据库
查询对应数据库中的所有表 show tables;
创建自己的数据库 create database 库的名称
ps:1.系统库不要删除
2.删库需要谨慎(从删库到跑路)–>一旦库没有了,那么其下的表就都没有了,表没有了数据就没有
drop database 库的名称
ps:只要是命令 希望各位大写
因为是在控制台dos命令下,所以 方向键上或下 可以获取上次或下次书写的命令
ps:MYSQL的存储引擎
MYSQL中的数据用各种不同的技术存储在文件(或内存)中,这些技术中每一种技术都使用不同的存储机制
,索引技巧,锁定水平并且最终提供的功能也不相同
MyISAM: 拥有较高的插入,查询数据,但是不支持事务,不支持外键
InnoDB: 支持事务,支持外键,支持行锁定,性能低
MySql中的常用类型
整数类型是类型最常用那个
MySQL存储一个整数 Java数据类型
INT/INTEGER int/integer
BIGINT long/Long
MySQL以一个可选的显示宽度指示器对SQL中的标准进行扩展
例如:
指定一个字段的类型为INT(6),就可以保证所有包含的数字少于6个的
值从数据中检锁出来时自动用空格填充
ps:String.format(“%02d”,1/11) –> 01/ –>11
需要注意的是,使用一个宽度指示器不会影响字段的大小和他可以存的范围,一般只是
用于指定数字的宽度
age Int(2) –> 并不是代表age最多只能存储99,代表查询age时不足两位使用0和空格占位
整数类型看MySQL-整数类型.png
小数类型看MySQL-小数类型.png
ps:
小数类型可以存正整数也可以小数
FLOAT[(s,p)] s代表范围 p代表精度
Double[(s,p)]
例如定义一个字段
money double(5,2) 整数和小数一共占有5位,其中小数占有2位
最多只能个有五位数组成,其中两位需要是小数
-999.99 ~ 999.99
因为Float和Double的存储范围不精确
若需要存储货币使用DECIMAL(高精度类型),使用方式可以参考double
MySQL的类型 Java数据类型
FLOAT float/Float
DOUBLE double/Double
DECIMAL BigDecimal
向MySQL中存储字符串:
看字符串类型MySQL-字符类型.png
char(size) 定长字符,size指N个字符数,若插入的字符长度超过指定长度,会被截取掉
会给一个警告
varchar(size) 变长字符,size指N个字符数,若插入的字符长度超过指定长度,会被截取掉
会给一个警告
ps:MySQL5之前 char和 varchar的存储范围最大就是0-255
MySQL5之后 varchar存储范围最大就是0~65535
若存储的是一些文章可以参考存文本存储 可以使用TEXT系列类型
ps:在MYSQL中,字符使用的是单引号引起来,相当于Java中String/Stringbuffer/StringBuildr
无论字符长度一律都使用’ ‘引起来
name varchar(10) ‘abcdefg’
char和varchar 的对比
char(5)–>所占用的空间是5个字节,表示char(5)的固定长度就是5个字节
例如:
name char(5)
插入值 ‘1’ –>相当于占用了5个字节
‘111’–>相当于占用了5个字节
‘11111’–>相当于占用5个字节
varchar(5)–>所占用的字节数会随着实际长度增加而逐渐+1
例如:
name varchar(5)
插入值 ‘1’ –>相当于占用了1个字节
‘111’–>相当于占用了3个字节
‘11111’–>相当于占用5个字节
MySql中还可以存储时间和日期
看时间类型MySQL-日期时间类型.png
日期类型:DATETIME,DATE TIME和 YEAR, TIMESTAMP
ps:在mysql存储日期使用 ’ ’ 引号引起来 相当于Java中Date/Calender
MySQL中还可以存储二进制类型
看二进制类型 MySQL-二进制类型.png
二进制类型最大存范围是0~4G
实际开发中我们是不会讲音频,视频,图片直接以二进制形式存储到数据库中
我们实际存储的是一个文件连接
BIT类型用来存储Boolean类型 0–>false 1–> true