mysql-自我总结
MySQL 是最流行的关系型数据库管理系统
- 瑞典 MySQL AB 公司开发
- 目前属于 Oracle 公司
关系型数据库
特点
- 数据以表格的形式出现
- 每行为各种记录名称
- 每列为记录名称所对应的数据域
- 许多的行和列组成一张表单
- 若干的表单组成database
是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
术语
- 数据库: 数据库是一些关联表的集合。
- 数据表: 表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。
- 列: 一列(数据元素) 包含了相同类型的数据, 例如邮政编码的数据。
- 行:一行(=元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
- 冗余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。
- 主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数据。
- 外键:外键用于关联两个表。
- 复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。
索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。
参照完整性: 参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,目的是保证数据的一致性。
什么是数据库?
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
MySQL入门
启动:
net start mysql57
创建数据库:
create database 数据库名
创建数据表:
create table 表名称(字段1 字段类型,字段2 字段类型...)
删除数据库:
drop database 数据库名
使用数据库:
use 数据库名字
数据库和表的设计
数据完整
指数据的精确性(Accuracy)和可靠性(Reliability)
数据完整性分为 4 类
- 实体完整性(Entity Integrity)
就是将行定义为特定表的唯一实体,它规定表的每一行记录在表中是唯一的
主键(Primary Key)约束:主键是表中一列或多列数据,用来唯一标识一行数据。例如:学号
唯一(unique)约束:可以用来确保在非主键列中不存在重复值,但列值可以是 NULL(空
- 域完整性(Domain Integrity)
是考虑如何限制向表中输入的数值的范围域完整性(Domain Integrity)
外键(Foreign key)约束:一个表中的 FOREIGN KEY 指向另一个表中的主键
默认值 (Default)约束:用于向列中插入默认值
非空(Not Null)约束:用于强制该列不许为 NULL(空)
- 引用完整性(Referential Integrity)
是指保证主关键字(被引用表)和外部关键字(引用表)之间的参照关系
- 自定义完整性(User-defined Integrity)
指针对某一具体关系性数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求
什么是数据库设计
就是将数据库中的数据实体以及这些数据实体之间的关系,进行规划和结构化的过程
设计数据库的必要性
糟糕的数据库设计具有以下不足: 效率低下;更新和检索数据会出现异常。
良好的数据库设计具有以下优点:效率高;便于进一步扩展;使得应用程序的开发变得更容易。
数据库设计的步骤
- 收集信息
- 标识实体
- 标识实体的属性
- 标识实体之间的关系
数据库设计中著名的三大范式
- 第一范式(1NF):第一范式的目标是确保每一列的原子性
- 第二范式(2NF) :第二范式在第一范式的基础上,其目标是确保表中的每列都和主键相关
- 第三范式(3NF) :第三范式在第二范式的基础上,其目标是确保每列都和主键列直接相关
增删改数据
运算符
- 逻辑
And 连接条件,并且仅当两个条件都为真时才返回 1。
OR 也连接两个条件,但只要其中任意一个为真就返回 1
当一个语句中使用了多个逻辑运算符时,运算时先求 Not 的值,然后求 And 的值,最后再求 Or 的值
- 比较
> 大于
>= 大于等于
< 小于
<= 小于等于
= 等于
!= 不等于
IS NULL 是否为空
IN 判断一个值是 IN 列表中的任意一个值
NOT IN 判断一个值不是 IN 列表中的任意一个值
LIKE 通配符匹配
BETWEEN AND 判断一个值是否在两个值之间
添加数据
- 一次添加一行记录
insert into 表名 (列名1,列名2) values(值1,值2);
- 一次添加多行数据
insert into 表名 (列名1,列名2) values(值1,值2),(值1,值2);
修改数据
update 表名 set 列名=值, 列名=值 [where更新条件]
删除一条记录
delete from 表名 [where<更新条件>]
1,索引有什么用?
加速查询
2,事务常被用来确保数据的一致性。
-- 创建索引方法1, index关键字 myindex索引名, username字段名
CREATE TABLE mytable(
ID INT NOT NULL,
username VARCHAR(16) NOT NULL,
INDEX myindex (username(16))
);
-- show 查看语法
show index from mytable;
-- 删除索引1, drop index 索引名 on 表名
drop index myindex on mytable;
-- 添加索引方式2 create index 索引名 on 表名(字段)
create index myindex on mytable(username(16));
-- 添加索引方式3,alter table 表名 add index 索引名(字段名)
ALTER table mytable ADD INDEX myindex(username)
-- 删除索引2 alter table 表名 drop index 索引名
ALTER TABLE mytable DROP INDEX myindex;