数据库学习记录

一、关系型数据库和非关系型数据库

一般企业中都会将关系型数据库和非关系型数据库联合使用,例如常见的Mysql数据库就是典型的关系型数据库,由二维表及其之间的关系组成的一个数据组织,数据存储在硬盘上。再比如Redis就是一个典型的非关系型数据库,数据存储在内存中,读取数据的速度快。

常见关系型数据库管理系统(ORDBMS):

  1. Oracle
  2. MySql
  3. Microsoft SQL Server
  4. SQLite
  5. PostgreSQL
  6. IBM DB2

常见的NOSQL数据库:

  1. 键值数据库:Redis、Memcached、Riak
  2. 列族数据库:Bigtable、HBase、Cassandra
  3. 文档数据库:MongoDB、CouchDB、MarkLogic
  4. 图形数据库:Neo4j、InfoGrid

二、对数据库基本操作

1、创建数据库

在一般的RDBMS中,可以使用如下的语句创建数据库。

CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARACTER set 'utf8mb4'];

这里扩展一下字符编码的相关知识:

UTF-8编码,对全球文字进行统一编码。如果只是ASCII,为ISO-8859-1编码,ASCII码是由1byte来进行编码,1byte = 8bit,表示有八个二进制位,0000 0000~1111 1111对应0~255.

数据库学习记录_第1张图片

汉卡对中文进行编码:GBK2312,GBK,在中文编码规范下,不能支持日文韩文等,中文编码由2byte=16bit,2^16=65536个中文。UTF-8则是3byte。

2、修改数据库字符集

ALTER DATABASE 数据库名 CHARACTER set = 字符编码类型;

3、删除数据库

DROP DATABASE 数据库名;

三、对表的操作

1、创建表

CREATE TABLE 表名(
    列名  数据类型  约束,
    列名  数据类型  约束
)

 2、修改表

alter table 表名 rename to 新的表名;  #修改表名

alter table 表名 ADD [COLUMN] 列名 列的定义;  #添加字段

alter table 表名 change [COLUMN] 旧列名  新列名 列的定义;  #修改字段

alter table 表名 MODIFY [COLUMN] 列名  列的定义;  #修改字段类型

alter table 表名 DROP [COLUMN] 列名;   #删除字段

 四、表中数据的操作

#向表中插入数据
INSERT INTO 表名(列1、列2......) VALUE(值1、值2......);


#清空表中数据
TRUNCATE TABLE 表名;


#有条件的删除表中数据
DELETE FROM 表名 WHERE sid='xxx';


#更新数据
UPDATE 表名  SET sid='xxx';

五、数据库的三大范式和五大约束

第一范式:

数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性,而不是集合。

第二范式:

满足1NF的基础上,要求:表中的所有列,都必需依赖于主键,而不能有任何一列与主键没有关系(一个表只描述一件事情)。第二范式消除表的无关数据。

第三范式:

满足2NF的基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)(也表明不允许数据存在冗余的现象)。

主键约束:   唯一、非空

唯一约束:   唯一、可以为空

检查约束:   对该列数据的范围、格式的限制(如:年龄、性别等)

默认约束:   默认值

外键约束:   建立两个表的关系

你可能感兴趣的:(学习,数据库)