• MySQL-3(练习题)-三套知识点看完SQL没问题


    6、创建表:

    建表语句的语法格式:

    create table 表名(

    字段名1 数据类型,

    字段名2 数据类型,

    );

    关于MySQL当中字段的数据类型?以下只说常见的

    int 整数型

    bigint 长整型

    float 浮点型

    char定长字符串

    varchar可变长字符串

    date日期类型

    BLOB二进制大对象(存储图片,视频等媒体信息)

    CLOB字符大对象(存储较大文本,比如:可以存储4G的字符串)

    image.png

    char和varchar怎么选择?
    在实际的开发中,当某个字段中的数据长度不发生改变的时候,它是定长的,

    例如:性别,生日,采用char

    当一个字段的数据长度不确定时,例如,简介,姓名都是采用varchar

     

    BLOB和CLOB类型的使用?

    image.png

    表名在数据库当中一般建议以:t_或者tbl_开始

    创建学生表:

    学生信息包括:

    学号、姓名、性别、班级编号、生日

    学号:bigint

    姓名:varchar

    性别:char

    班级编号:int

    生日:char

    create table t_student(

              no bigint,

              name varchar(255),

              sex char(1),

              classno varchar(255),

              birth char(10)

    );

    7、insert语句插入数据

    语法格式:

    insert into 表名(字段名1,字段名2,。。)values(值1,值2,值2.。)

    要求:字段的数据和值得数量相同,并且数据类型要对应相同

    insert into t_student(no,name,sex,classno,birth) values(1,'zhangsan','1','gaosanyiban','1970-01-02');

    插入一个字段,剩下所有的字段自动插入null

    默认值

     

    image.png

    注意:

    当一条insert语句执行成功之后,表格当中必然会多一些记录

    即时多的这一行记录当中某些字段是null,后期也没有办法执行,

    insert语句插入数据了,只能使用update进行更新

    一次插入多行数据

    insert into 表名(列1,列2,,)values(),();

     

    8、表的复制

    create table 表名 as select 语句;

    将查询结果当做表创做出来

    create table emp1 as select *from emp;

    create table emp2 as select empno,ename from emp;

     

    9、将查询结果插入到一张表中?

    insert into dept1 select * from dept;

     

    10、修改数据

    update

    语法格式:

    update 表名 set 字段名1=值1,字段名2= 值2,,,where 条件;

    注意:没有条件整张表数据全部更新

     

    案例:将部门10的LOC 修改为SHANGHAI,将部门名称修改为RENSHIBU

    update dept1 set loc='SHANGHAI',dname='RENDHIBU' where deptno=10;

     

    更新所有记录

    update dept1 set loc = ‘x’,dename='y';

     

    11、删除数据

    语法格式:

    delete from 表名 where 条件;

    注意:没有条件全部删除

    删除10部门数据

    delete from dept1 where deptno = 10;

    删除所有记录

    delete from dept1;

    怎么删除大表中的数据(重点)

    truncate table emp1;//表被截断,不可回滚,永久丢失

    删除表

    drop table 表名;

    drop table if exists 表名;//oracle 不支持这种语法

    12、表结构 使用工具

     

     

    13、约束

    13.1、什么是约束?常见的约束有哪些?

    在创建表的时候,可以给表的字段添加响应的约束,添加约束的目的是为了保证表的数据的合法性,有效性,完整性

    常见的约束有哪些呢?
    非空约束(not null):约束的字段不能为null

    唯一约束(unique):约束的字段不能重复

    主键约束(primary key):约束的字段既不能为null,也不能重复

    外键约束(foreign key):简称FK

    检查约束(check):注意Oracle数据库有check约束,但是mysql没有,目前mysql不支持该约束

     

    13.2 非空约束 not null

    image.png

    image.png

    day03:

    1、约束

    1.1、唯一性约束(unique)

    • 唯一的约束修饰的字段具有唯一性,不能重复,但可以为null

    案例:给某一列添加unique

    image.png

    案例:给两个或者多个列添加unique

    image.png

    image.png

    not null 约束只有列级约束,没有表级约束

     

    1.2、主键约束

    怎么给一张表添加主键约束?

    image.png

    image.png

    根据以上的测试得出:id是主键,因为添加了主键约束,主键字段的数据不能为null,也不能重复,

    主键特点:不能为null,也不能重复

    主键相关的术语?

    主键约束:primary key

    主键字段:id字段添加primary key之后,id叫做主键字段

    主键值:id字段中的每一个值

     

    主键有什么作用?
    表的设计三范式中有要求,第一范式就要求任何一张表应有的主键

    主键的作用:主键值是这行记录在这张表当中的唯一标识(就像身份证号码一样)

     

    主键的分类:

    根据主键字段的字段数量来划分

    单一主键(推荐使用)

    复合主键(多个字段联合起来添加一个主键约束)

    根据主键性质来划分

    自然主键:和业务没有任何关系的自然数

    业务主键:

    image.png一张表的主键约束只能有一个(必须记住)

     

     

    使用表级约束方式定义主键

    image.png

     

    mysql提供主键值自增:

    image.png

    1.3、外键约束

    • 外键约束:foreign key
    • 外键字段:添加有外键约束的字段
    • 外键值:外键字段中的每一个值

    业务背景:

    请设计数据库表,用来维护学生和班级的信息

    image.png

    image.png

    image.png

    image.png

    image.png

    • 外键可以为NUll
    • 外键引用其他表的字段,被引用的字段是主键么

    被引用的字段不一定是主键,但至少具有unique约束

     

    2、存储引擎(了解)

    2.1完整的建表语句是这样写的

    image.png

    2.2、什么是存储引擎

    image.png

    2.4、常见的存储引擎

    image.png

    image.png

    3、事务

    3.1、什么是事务?

    一个事务是一个完整的业务逻辑单元,不可再分

    比如:银行账号转账,从A账户向B账户转账10000,需要执行两条update语句

    image.png

    以上两条DML语句必须同时成功,或者同时失败,不允许出现一条成功,一条失败

    要想保证以上的两条DML语句同时成功或者同时失败,那么就需要使用数据库的‘事务机制’

    3.2、和事务相关的语句只有:DML语句(insert delete update)

    为什么?因为它们这三个语句都是和数据库表当中的‘数据’相关

    事务的存在是为了保证数据的完整性,安全性

     

    3.3、假设所有的业务都能使用1条DML语句搞定,还需要事务机制么? 不需要

    3.4、事务的特性?

    事务包括四大特性:ACID

    A:原子性:事务最小的工作单元,不可再分

    C:一致性:事务必须保证多条DML语句同时成功或者同时失效

    I:隔离性:事务A与事务B之间具有隔离

    D:持久性:持久性说的是最终数据必须持久化到硬盘文件中,    事务才算成功的结束

    3.5、关于事务之间的隔离性

    事务隔离性存在隔离级别,理论上隔离级别包括4个:

    第一级别;读未提交,对方事务还未提交,我们当前事务可以读取到对方未提交的数据

    读未提交存在脏读显现:表示读到了脏数据

    第二级别:读已提交

    对方事务提交之后的数据我方可以读取到

    读已提交存在的问题是:不可重复读

    这种隔离级别解决了:脏读现象没有了

    第三级别:可重复读

    这种隔离级别解决了:不可重复读问题

    这种隔离级别存在问题是:读到的数据是幻象

    第四级别:序列化读/串行化读

    解决了所有问题

    效率低,需要事务排队

     

    3.6、演示事务

    mysql事务是默认情况下自动提交的

    image.png

    cmmit 提交

    rollback回滚

    image.png

    3.7、使用read uncommitted

    image.png

     

    image.png

    image.png

    4、索引

    image.png

    image.png

    image.png

    image.png

    4.4、注意:主键和具有unique约束的字段自动会添加索引

    根据主键查询效率较高。尽量根据主键检索

    image.png

    image.png

    4.7、索引的实现原理

    image.png

    image.png

    image.png

    image.png

    5、视图

    5.1、什么是视图

    站在不同的角度去看数据

    create view myview as select empno,ename from emp;

    drop view myview;

    注意:只有DQL语句才能以视图对象的方式创建出来

    5.3、对视图进行增删改查,会影响到原表数据。(听过视图影响原来表数据。不能直接操作原表   )

    可以对视图进行CRUD操作

    5.4、面向视图操作?

    select * from myview;

    image.png

    5.5、视图的作用?

    视图可以隐藏表的实现细节。保密级别较高的系统,系统只对外提供相关视图

     

    7、数据库设计三范式(重点)

    设计表的依据。依照这个三范式设计的表不会出现数据冗余

    7.2、三范式有哪些

    image.png

    image.png

    提醒:在实际开发中,以满足客户的需求为主,有的时候会拿冗余换执行速度

    7.3、一对一怎么设计?

    image.png

    image.png

  • 相关阅读:
    IDEA Inspections详解
    IDEA 阿里编码规范插件
    IDEA Save Actions插件
    IDEA Lombok插件
    设计模式-简单工厂模式与工厂模式
    DAO设计模式
    Jcrop+strut2+jsp实现图片剪切
    Spring的Bean的作用域
    Spring的事务机制
    windows 下 Redis 主从 读写分离
  • 原文地址:https://www.cnblogs.com/kelly11/p/13275138.html
Copyright © 2020-2023  润新知