1、数据库概念
数据库:按照数据结构来组织,存储,管理数据的仓库
按照数据模型分类:网状数据库,层次数据库,关系型数据库。
层次数据库:
以树形结构表示实体及其之间的联系,关系只能支持一对多。(IBM 的 IMS)
2、去IOE
IT架构中,去掉IBM 的小型机,Oracle数据库, EMC存储设备,取而代之使用自己在开源软件基础上开发的系统。
去IOE 转而使用廉价的架构,稳定性一定下降,需要较高的运维水平解决。
3、NoSQL
NoSQL是对非SQL,非传统关系型数据库的统称。
NoSQL:非关系型,非分布式,不提供ACID 的数据库设计模式。
目前常用的数据库:
redis:内存数据库,键值存储,v 可以是任何类型
memcached:一般用来session同步,k-v的v只能是string
MongoDB:文档数据库,非内存的
处理大数据:
cassandra:列存储数据库,不限制列数,可以根据具体情况增加列数
HBase:列数据库
搜索引擎:
Elasticsearch: 倒排索引(反过来查),索引库
Solr:大数据上使用
HIve:大数据中的,类似于数据仓库,已经开始属于NoSQL领域
支持SQL,所以可以认为是关系型
SQL:大数据领域的唯一语言
非传统的 关系型数据库,统称为NoSQL
4、MySQL
MySQL 是一种关系型数据库管理软件,支持网络访问,默认服务端口 3306
MySQL 通信使用mysql协议
SQL语句:
SQL是结构化查询语言,Structured Query Language 1987被ISO 组织标准化
所谓主流的关系型数据库都支持SQL, NoSQL也有很大一部分支持SQL
SQL语句分为
DDL 数据定义语言:复制数据库定义,数据库对象定义,由CREATE,ALTER与DROP三个语法组成
DML 数据操作语言,负责对数据库对象的操作,CRUD增删改查
DCL 数据控制语言:负责数据库权限访问控制,由GRANT 和REVOKE 两个指令组成
TCL 事务控制语言:负责处理ACID 事务,支持commit, rollback指令
SQL语句 不区分大小写
SQL语句末尾应该使用分号结束
5、约束:
primary key :主键,一般表中的一个字段或者多个字段设置为主键,或者联合主键,主键的列不能包含空值null,主键一般是整形,长整形,且自动增长,一般表中都有主键
unique key :唯一键,可以为空,但是不为空的不可重复。
约束 Constraint
定义了主键,就有主键约束
定义了唯一键约束,就有唯一键约束
外键约束:
外键:在表B 中的列,关联表A 中的主键 ,表B中的列就是外键
A表称为主表,B表称为从表
插入规则:
不要定义
如果在表B中插入一条数据,B的外键列插入了一个值,这个值必须是表A中存在的主键值
更新规则:
定义外键约束时指定该规则
删除规则:
定义外键约束时指定该规则:
外键约束的操作:(这四个值,定义在从表中,如果主表修改,从表如果设置了,就会影响主表,让不让主表删,删了,影响不影响从表)
CASCADE:从父表删除或更新会自动删除或更新字表中匹配的行。
SET NULL :从父表删除或更新行,会设置子表中的外键列为NULL,但必须保证子表列没有指定NOT NULL,
RESTRIC:如果从父表删除主键,如果子表引用了,则拒绝对父表的删除或更新操作
NO ACTION:标准SQL的关键字,在MySQL中与RESTRIC相同,拒绝对父表的删除或更新操作。
外键约束,是为了保证数据完整性,一致性,杜绝数据冗余,数据讹误
6、视图:
视图,也称为虚表,查询语句生成的,可以通过视图进程CRUD操作
视图的作用:
简化操作,将复杂查询SQL语句定义为视图,可以简化查询
数据安全,视图可以只显示真实表的部分列,或计算后的结果,从而隐藏真实表的数据
7、数据类型:
LENGTH函数返回字节数,
char 可以将字符串变成等长,这样每个偏移量是一样的,空间换时间,效率极高varchar变长。
8、关系操作:
关系:在关系数据库中,关系就是二维表
关系操作就是对表的操作
选择:又称为限制,是从关系中选择出满足给定条件的元组
投影:在关系投影就是从选择出若干属性列组成新的关系
连接(join):将不同的两个关系连接成一个关系
9、DML---CRUD增删改查
INSERT INTO log (id,name, logname, password) VALUES(1,'jack', 'jakc', 'kacl') ON DUPLICATE KEY UPDATE name='lucy';
如果主键,唯一键冲突,就执行update后面的设置。
INSERT IGNORE INTO log (id) VALUE(1);
如果主键,唯一键冲突,就忽略
10、连接 join
1 BOLB:一般对于图片等数据,都放在磁盘中,把路径(一般相对路径)放在数据库中 2 text:一般不会把文件放在数据库中,查找非常麻烦,,一般选择搜索引擎数据库,如 ES等 3 4 join: 5 coross join = inner join, 需要写条件,重复列,不会去掉(join,默认就是inner) 6 nature join 一般不怎么用,它是利用主键,不需要写条件,并且过滤掉重复项 7 8 9 10 left join:从左表的每一项都存在,且都到右表找,没有的,就用NULL(悬空)
11、事务Transaction
隔离级别:
12、数据仓库和数据库的区别: