1. 关系型数据库
    ● 二维表
    ● 表中的一行,称为记录,表中的列, 称为字段(属性)
    ● 行列交叉的单元格的值,叫属性值或字段值。
    ● ORACLE DB2 Mysql SQL SERVER 关系型数据库
  2. 常用的指令(可以在命令行执行,也可以在navicat新建查询执行)

查看版本号

select version()

显示所有的数据库

show databases;

设置当前数据库

use  数据库名

查看该数据库下所有的表

show tables

查看表结构

desc 表名
  1. 存储引擎
    数据库存储、管理和查询等操作的一些规则。

三种数据引擎
1)innoDB存储引擎
● 默认的存储引擎
● 支持外键
● 支持事务
2)MYISAM
● 支持全文检索
● 不支持外键
3)MEMERY
● 内存引擎,在内存中创建表
● 访问速度快

  1. 字符集
    ● 数据库中存储数据的编码格式
    ● 中文一般使用utf8
    ● 排序规则 utf8_general_ci ci表示大小写字母不敏感
    ● mysql对于英文字母大小写不敏感
  2. sql脚本
    ● .sql作为扩展名的一个文件
    ● 方便部署数据库
  3. 数据库的管理
    数据库的创建
CREATE DATABASE 数据库名 CHARACTER SET utf8 COLLATE utf8_general_ci
CREATE DATABASE  IF NOT EXISTS 数据库名 CHARACTER SET UTF8 COLLATE utf8_general_ci ;

数据库的删除

DROP DATABASE 数据库名
  1. E-R图
    ● ENTITY RELATIONSHIP 实体关系图,数据库逻辑设计阶段产生的一种数据模型。
    ● 包含三个要素:
  1. 实体 实体实际对应着数据库中表
  2. 属性 实际对应着表中的字段
  3. 关系 表与表之间的关系
    ● 一对一
    ● 一对多
    ● 多对多
  1. 数据类型
    1)数值类型
    ● BIT 位
    ● TINYINT 很小整数,-128~127 unsigned 无符号0~255
    ● BOOLEAN 用TINYINT(1)来表示,0表示false,非零值表示true
    ● SAMLLINT -32768~32767
    ● INT 正负21亿多
    ● BIGINT 很多很多
    ● FLOAT
    ● DOUBLE
    ● DECIMAL
    2)字符串类型
    ● CHAR(n) 固定长度为n的字符串
    ● VARCHAR(n) 变长字符串,n为最大长度,实际存储的长度,就是字符串的实际长度。
    ● TEXT 大文本,比如小说的章节内容。
    ● ENUM 枚举
    3)日期类型
    ● DATE
    ● DATETIME
    ● TIME
    ● YEAR
    ● TIMESTAMP 时间戳 记忆记录最后一次的更新时间。需要将字段的默认值设置为CURRENT_TIMESTAMP,勾选为时间戳。
  2. 约束类型
    ● 往表中插入记录的时候,遵循的一定的规则, 称为约束,作用保证数据的完整性和一致性。
    主键约束
    ● PRIMARY KEY
    ● 表中的一列或者多列,设置主键约束,表示该列的值,在该表中是唯一的。
    ● 主键的值不能为NULL,而且必须唯一。
    ● 语法:
字段名  PRIMARY KEY  AUTO_INREMENT

● AUTO_INREMENT表示主键自增
唯一性约束
● UNIQUE
● 表示该字段的值在该表中是唯一的,但是取值为NULL
● 表中的多个字段都可以设置唯一性约束
● 语法 :

字段名  UNIQUE

非空约束
● NOT NULL
● 该字段的值不能为null
● 语法:

字段名  NOT NULL

默认值
● DEFUALT
● 如果表中插入记录时,没有给该字段赋值,则使用默认值。
● 语法:

字段名  DEFAULT  值

外键约束
● FOREIGN KEY
● 表中的某个字段,是取自另外一个表中的字段的值,形成的外键约束
● 两个表中关联字段的数据类型要一致。
● 外键约束的策略:
● restrict 、noaction 对于已经形成外键约束的记录,被引用表中的关联的记录不允许被删除。
● set null 对于已经形成外键约束的记录,被引用的表中的记录删除后,主表中关联记录的对应的字段值被置为null
● cascade 对于已经形成外键约束的记录,如果删除或者更新被引用表中的记录,主表的关联记录也会被删除或者更新。

CHECK约束
● mysql不支持这种约束,一般通过枚举或者触发器来实现。

  1. 表的创建
    ● 语法
CREATE TABLE   表名(
	字段名   数据类型   约束,
	字段名   数据类型   约束
	)
  1. 表的删除
DROP TABLE 表名
  1. 更改表
    ● ALTER
  2. SQL语句
    SQL Structed Query Language
    DDL DATA DEFINITION LANGUAGE 数据定义语言
    对于数据库或者数据库的组件的结构的操作
    CREATE ALTER DROP
    特点:不允许事务的回滚。
    DML DATA MANIPULATION LANGUAGE 数据操作语言
    表中记录的增删改
    INSERT
    DELETE
    UPDATE
    特点:可以进行事务的回滚
    DQL DATA QUERY LANGUAGE 数据查询语言
    SELECT
    DCL DATA CONTROL LANGUAGE 数据控制语言
    GRANT 授权
    REVOKE 回收权限
    TPL TRANSACTION PROCESS LANGUAGE 事务处理语言
    COMMIT
    ROOLBACK
  3. DML
    INSERT 往表中插入记录
    ● 语法
INSERT INTO 表名(字段列表) VALUES(值列表)

● 其中:
● 1、字段列表,值列表两两之间用逗号隔开
● 2、值列表中的值,字符串和日期的常量,需要单引号括起来。
● 3、值的类型要与字段的数据类型相符
● 4、INTO可以省略
● 5、字段列表如果是插入整个表中的字段,可以省略,但值列表的个数与顺序要与定义的表的字段的顺序一样。
● 6、字段也可以写其中的几个,与后面的值的个数对应即可。
● 7、VALUES 关键字也可以使用VALUE,但一般用values
● 批量插入多条记录
● INSERT INTO 表名(字段名) VALUES(值列表1),(值列表2),…,(值列表n)

UPDTAE
● 对表中的记录进行更改
● 语法

UPDATE 表名 SET 字段名1=值1, 字段名2=值2  WHERE子句

● where子句用于限定修改的记录。如果不加where子句,默认修改该表中所有的记录。

DELETE
● 用于删除表中的记录
● 语法

DELETE FROM 表  WHERE子句

表的截断
● TRUNCATE TABLE 表名
● 表的截断,清空表中所有的记录。

TRUNCATE 和DELETE的区别
● 都可以删除表中的记录。delete既可以删除表中所有的记录,也可以按where条件删除一部分记录,而truncate只能清空表中所有的记录。
● delete属于DML,事务可以回滚,truncate属于DDL,是不可以事务回滚。

  1. where子句
    用于条件限制
    关系运算符
    ● = 等于
    ● != <> 不等于
    ● > >=
    ● < <=
    ● 注意:关系运算符除了值的比较,还可以比较日期,hiredate>‘1982-1-1’
    null值的判断
    ● IS NULL
    ● IS NOT NULL
    区间的判断
    ● BETWEEN … AND … 表示取值在某个连续的区间
    ● WHERE sal BETWEEN 3000 AND 5000 表示筛选工资在3000~5000的记录,并且包含3000和5000两个边界。
    ● NOT BETWEEN … AND … 表示取值不在某个连续的区间
    集合的判断(离散)
    ● IN 表示取值在集合中
    ● WHERE deptno IN(10,20,40)
    ● NOT IN 表示取值不在集合中
    逻辑运算符
    ● 在where子句中拼接多个筛选条件
    ● && AND 与
    ● || OR 或
    ● ! NOT 非