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

原文地址:https://www.cnblogs.com/kelly11/p/13275138.html