6、创建表:
建表语句的语法格式:
create table 表名(
字段名1 数据类型,
字段名2 数据类型,
);
关于MySQL当中字段的数据类型?以下只说常见的
int 整数型
bigint 长整型
float 浮点型
char定长字符串
varchar可变长字符串
date日期类型
BLOB二进制大对象(存储图片,视频等媒体信息)
CLOB字符大对象(存储较大文本,比如:可以存储4G的字符串)
char和varchar怎么选择?
在实际的开发中,当某个字段中的数据长度不发生改变的时候,它是定长的,
例如:性别,生日,采用char
当一个字段的数据长度不确定时,例如,简介,姓名都是采用varchar
BLOB和CLOB类型的使用?
表名在数据库当中一般建议以: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
默认值
注意:
当一条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
day03:
1、约束
1.1、唯一性约束(unique)
- 唯一的约束修饰的字段具有唯一性,不能重复,但可以为null
案例:给某一列添加unique
案例:给两个或者多个列添加unique
not null 约束只有列级约束,没有表级约束
1.2、主键约束
怎么给一张表添加主键约束?
根据以上的测试得出:id是主键,因为添加了主键约束,主键字段的数据不能为null,也不能重复,
主键特点:不能为null,也不能重复
主键相关的术语?
主键约束:primary key
主键字段:id字段添加primary key之后,id叫做主键字段
主键值:id字段中的每一个值
主键有什么作用?
表的设计三范式中有要求,第一范式就要求任何一张表应有的主键
主键的作用:主键值是这行记录在这张表当中的唯一标识(就像身份证号码一样)
主键的分类:
根据主键字段的字段数量来划分
单一主键(推荐使用)
复合主键(多个字段联合起来添加一个主键约束)
根据主键性质来划分
自然主键:和业务没有任何关系的自然数
业务主键:
一张表的主键约束只能有一个(必须记住)
使用表级约束方式定义主键
mysql提供主键值自增:
1.3、外键约束
- 外键约束:foreign key
- 外键字段:添加有外键约束的字段
- 外键值:外键字段中的每一个值
业务背景:
请设计数据库表,用来维护学生和班级的信息
- 外键可以为NUll
- 外键引用其他表的字段,被引用的字段是主键么
被引用的字段不一定是主键,但至少具有unique约束
2、存储引擎(了解)
2.1完整的建表语句是这样写的
2.2、什么是存储引擎
2.4、常见的存储引擎
3、事务
3.1、什么是事务?
一个事务是一个完整的业务逻辑单元,不可再分
比如:银行账号转账,从A账户向B账户转账10000,需要执行两条update语句
以上两条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事务是默认情况下自动提交的
cmmit 提交
rollback回滚
3.7、使用read uncommitted
4、索引
4.4、注意:主键和具有unique约束的字段自动会添加索引
根据主键查询效率较高。尽量根据主键检索
4.7、索引的实现原理
5、视图
5.1、什么是视图
站在不同的角度去看数据
create view myview as select empno,ename from emp;
drop view myview;
注意:只有DQL语句才能以视图对象的方式创建出来
5.3、对视图进行增删改查,会影响到原表数据。(听过视图影响原来表数据。不能直接操作原表 )
可以对视图进行CRUD操作
5.4、面向视图操作?
select * from myview;
5.5、视图的作用?
视图可以隐藏表的实现细节。保密级别较高的系统,系统只对外提供相关视图
7、数据库设计三范式(重点)
设计表的依据。依照这个三范式设计的表不会出现数据冗余
7.2、三范式有哪些
提醒:在实际开发中,以满足客户的需求为主,有的时候会拿冗余换执行速度
7.3、一对一怎么设计?