关于数据库基础
数据库:存储数据管理数据的仓库
类型:
1.关系型(有特定的组织方式,以行和列的形式存储数据):Mysql,SQLServer,Access,Oracle
2.非关系型:MongoDB ,Redis,Solr、ElasticSearch、Hive、HBase
数据库三范式:
1)原子性:列或字段不能再分,要求属性具有原子性,不可再分离
2)唯一性:一张表只说一件事是对记录的唯一性约束,要求记录有唯一标识
3)直接性:数据不能存在传递关系,即每个属性都和主键有直接关系
数据库储存引擎:
两个储存引擎
1.MyISMA储存引擎:
MySQL5.5版本之前的默认存储引擎,支持表级锁(表级锁是MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁);不支持事务,外键。
使用场景:对事务的完整性没有要求,或以select、insert为主的应用基本都可以选用MYISAM。在Web、数据仓库中应用广泛。
特点:1,不支持事务外键;
2,2、每个myisam在磁盘上存储为3个文件,文件名和表名相同,扩展名分别是
.frm -------存储表定义 .MYD --------MYData,存储数据 .MYI --------MYIndex,存储索引
2.InnoDB储存引擎
主要特点:MySQL5.5版本之后的默认存储引擎;支持事务;
支持行级锁(行级锁是Mysql中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁);
支持聚集索引方式存储数据。
MySQL的端口号是3306,SQLServer的端口号是1433,查了一下Oracle的端口号是1521
数据库主要特点:
(1)实现数据共享。
数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。
(2)减少数据的冗余度。
同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。
(3)数据的独立性。
数据的独立性包括数据库中数据库的逻辑结构和应用程序相互独立,也包括数据物理结构的变化不影响数据的逻辑结构。
(4)数据实现集中控制。
文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。
(5)数据一致性和可维护性,以确保数据的安全性和可靠性。
主要包括:①安全性控制:以防止数据丢失、错误更新和越权使用;
②完整性控制:保证数据的正确性、有效性和相容性;
③并发控制:使在同一时间周期内,允许对数据实现多路存取,
又能防止用户之间的不正常交互作用;
④故障的发现和恢复:由数据库管理系统提供一套方法,
可及时发现故障和修复故障,从而防止数据被破坏
(6)故障恢复。
由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。
SQL语句:结构化查询语言
DML:数据库操作语言 :insert(插入),delete(删除), update(修改), select(检索)
DQL:数据库查询语言 :select 语言
DDL:数据库定义语言:create table
DCL :数据库控制语言:grant/deny/revoke-----只有管理员才有相应权限
SQL不区分大小写,Orcal全大写
数据库操作:
新增: create database 数据库名字 default character set utf8;
查询:show datdbases;
删除:drop databases;
表的常见操作:
使用数据库:use 数据库名
新建一个数据库:
create table 表名(字段名 字段类型(字段长度),字段名2 字段类型(字段长度))default character set utf8;
主键自增 :主键名 int primary key auto_increment
查询:show tabales;
修改指定表::修改 表 表名 添加 列/字段 列名 类型 长度
alter table a add column age int (5);
删除指定表:删除 表 表名
drop table 表名;
描述表: 描述 表名;
desc user;
关于数据的常见操作:
查询:查询 所有 来自 表名;
select * from user; * 可以替换具体的字段名,
插入:insert into 表名 values (1,2,3,4);post
修改:修改 表名 设置 字段名=新值; put
update User set name = "詹三";
update User set age =5820;
修改多个字段 update User set name=“实施计划书”, age = 42;
删除数据:delete from User;