1:E-R图

 

 正方体:实体,一般为名词

椭圆形:属性,一般为名词

菱形:关系,一般为动词

2:E-R图与关系模式的转化

用二维表的形式表示实体和实体间联系的数据模型即关系模式

E-R图转换为关系模式的步骤 1. 把每个实体都转化为关系模式R(U)形式 2. 建立实体间联系的转换

3:为什么需要数据规范化

不合规范的表设计 信息重复 更新异常 插入异常 无法正确表示信息 删除异常

4:三大范式:

第一范式的目标是确保每列的原子性 如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)

第二范式要求每个表只描述一件事情

第三范式如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,则满足第三范式(3NF)

 

第一范式确保每列的原子性

第二范式要求每个表只描述一件事情

第三范式要求表中各列必须和主键直接相关,不能间接相关

 

 

5:规范化和性能的关系

为满足某种商业目标,数据库性能比规范化数据库更重要 通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间 通过在给定的表中插入计算列(如成绩总分),以方便查询 在数据规范化同时,要综合考虑数据库的性能

 

 

 

my sql运行机制总结:

MySQL的优势 运行速度快 使用成本低 可移植性强 适用用户广

MySQL的配置

使用配置向导配置 端口号:3306 默认字符集:utf8 将bin目录写入 环境变量 root密码设置

命令行连接MySQL

语法:mysql –h服务器主机地址 –u 用户名 –p密码

创建数据库

语法:CREATE DATABASE 数据库名;

查看数据库列表

语法:SHOW databases;

选择数据库

语法:USE 数据库名;

删除数据库

语法:DROP DATABASE 数据库名;

 

MySQL数据类型

TINYINT                 非常小的数据

SMALLINT              较小的数据

MEDIUMINT           中等大小的数据

INT                          标准整数

BIGINT                    较大的整数

FLOAT                    单精度浮点数

DOUBLE                 双精度浮点数

DECIMAL                字符串形式的浮点数

 

 

UNSIGNED属性 标识为无符号数

ZEROFILL属性 宽度(位数)不足以0填充

 

字符串

CHAR[(M)]                  定长字符串

VARCHAR[(M)]           可变字符串

TINYTEXT                   微型文本串

TEXT                           文本串

日期类型

DATE                                    YYYY-MM-DD,日期格式

DATETIME                             YY-MM-DD hh:mm:ss:

TIME                                        hh:mm:ss: 

TIMESTAMP                           YYYYMMDDHHMMSS

YEAR                                    YYYY格式的年份

创建表

 

CREATE TABLE [IF NOT EXISTS] 表名 ( 字段1 数据类型 [字段属性|约束][索引][注释], …… 字段n 数据类型 [字段属性|约束][索引][注释] )[表类型][表字符集][注释];

 

字段的约束及属性

 

字段的约束及属性3-1

 

非空约束                 NOT NULL                            字段不允许为空

默认约束                 DEFAULT                              赋予某字段默认值

唯一约束                 UNIQUE KEY(UK)                设置字段的值是唯一的允许为空,但只能有一个空值

主键约束                 PRIMARY KEY(PK)               设置该字段为表的主键可唯一标识该表记录

外键约束                 FOREIGN KEY(FK)              用于在两表之间建立关系,需要指定引用主表的哪

                                                                              一 字段

自动增长                 AUTO INCREMENT           设置该列为自增字段默认每条自增1通常用于设置主键

 

 

查看表

DESCRIBE 表名; 或 DESC 表名;

删除表

DROP TABLE [IF EXISTS] 表名;

 

MySQL的存储引擎

语法:SHOW VARIABLES LIKE ‘storage_engine%’; 

修改存储引擎

default-storage-engine= InnoDB

设置表的存储引擎

CREATE TABLE 表名( #省略代码 )ENGINE=存储引擎;

MySQL系统帮助

语法:HELP 查询内容;

 

修改表

#修改表名

             ALTER TABLE 旧表名 RENAME [TO] 新表名;

#添加字段

             ALTER TABLE 表名 ADD 字段名 数据类型 [属性];

#修改字段

                ALTER TABLE 表名 CHANGE 原字段名 新字段名 数据类型 [属性];

#删除字段

               ALTER TABLE 表名 DROP 字段名;

添加主键

语法:

ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段);

 

添加外键

语法:

ALTER TABLE 表名 ADD CONSTRAINT 外键名

FOREIGN KEY(外键字段)

REFERENCES 关联表名(关联字段);

DML语句——插入单条数据记录

 语法:

INSERT INTO 表名 [(字段名列表)] VALUES (值列表);

DML语句——插入多条数据记录

语法:

INSERT INTO 新表(字段名列表) VALUES(值列表1),(值列表2),……,(值列表n);

LIMIT子句

语法:

SELECT <字段名列表> FROM <表名或视图>

[WHERE <查询条件>] [GROUP BY <分组的字段名>]

[ORDER BY <排序的列名> [ASC 或 DESC]] [LIMIT [位置偏移量, ]行数];

子查询

子查询是一个嵌套在 SELECT、INSERT、UPDATE 或 DELETE 语句或其他子查询中的查询 子查询在WHERE语句中的一般用法

语法:

SELECT … FROM 表1 WHERE 字段1 比较运算符(子查询)

 

比较运算符:子查询只能返回单个数值

IN/NOT IN:子查询可返回多条记录

 

常用IN替换等于(=)的子查询

IN后面的子查询可以返回多条记录

 

数据库优化

1、选取最适用的字段属性

2、使用连接(JOIN)来代替子查询(Sub-Queries)

3、使用外键

 

sql语句优化

对sql语句优化:就是能分开写的语句就分开写,不要一次性就解决,这样对效率来说是很大的开销的。
2.避免使用不兼容的数据类型:如float和int,char和varchar等都是不兼容的。
3.尽量避免在where子句中对字段进行函数或表达式操作。
4.避免使用is not null、in等一些无法让系统使用索引操作的词。
5.合理使用exists,not exists字句。

 

posted on 2020-04-26 21:57  吅^O^  阅读(818)  评论(0编辑  收藏  举报