zoukankan      html  css  js  c++  java
  • my sql

    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字句。
  • 相关阅读:
    html集合
    pyautocad
    CAD 批量提取点坐标,实现坐标的快速提取
    CAD
    python模块
    set,get,setter
    1 Http的表皮
    (6)小项目------完善增删改查的操作
    SSM学习笔记(6)---拦截器
    SSM学习笔记(5)-CGLIB动态代理
  • 原文地址:https://www.cnblogs.com/zjx-959/p/12782596.html
Copyright © 2011-2022 走看看