MYSQL学习笔记(三)

表的定义
是数据库最基本的组成单元,数据库是用来储存数据的,数据库中有很多表,每一个表都是一个独立的单元,表也是一个结构化的文件,由行和列组成,行称为数据或记录,列称为字段,字段又包含:字段名称、字段类型、长度、约束
creat table t_表名/tbl_表名(
字段名称 字段类型 字段长度 字段约束,
);

MYSQL常用数据类型

数据类型占用字节数描述
charchar(n)定长字符串,储存空间大小固定使用char(2)来表示类型或状态
vacharvarchar(n)变长字符串,储存空间等于实际数据空间,只包含英文字符的字符串
int4个字节表示整数,比如自增ID和表示数量
bigint8个字节表示长整数,比如自增ID(数量比较大的情况下)
float(有效数字位数,小数位)float(有效数字位数,小数位)数值型
double(有效数字位数,小数位)double(有效数字位数,小数位)数值型
date8字节表示日期和时间
BLOBBinary Large Object(二进制大对象)
CLOBCharacter Large Object(字符大对象)

vachar和char对比:
1.都是字符串
2.vachar比较智能,可以根据实际的数据长度分配空间,比较节省空间;
但是分配的时候需要相关判断,效率低
3.char不需要动态分配空间,所以执行效率高,但是可能会导致空间浪费
4.若字段中的数据不具备伸缩性,建议采用char类型储存
5.若字段中的数据具备很强的伸缩性,建议采用vachar类型储存

创建表及删除表
学号:no INT(4)
姓名:name varchar(32)
性别:sex char(1)
出生日期:birth date
邮箱:email varchar(128)

create table t_student(
no int(4),
name varchar(32),
gender char(1),
birth date,
email varchar(128)
);

drop table t_student;
drop table if exists t_student;

复制表语句:
create table 表名 as 查询语句
create table emp_back as select * from emp;

DML语句:insert update delete
1.insert语法:insert into 表名(字段名,字段名)values(字段值,字段值);
insert into t_student(no,name,gender,birth,email) values(1,‘zhangsan’,‘1’,str_to_date(‘1949-10-01’,’%Y-%m-%d’),‘zhangsan126.com’);
insert into t_student(no,name,gender,birth,email) values(2,‘lisi’,‘0’,str_to_date(‘1949-11-01’,’%Y-%m-%d’),‘lisi126.com’);
insert into t_student(no,name,gender) values(3,‘lilei’,‘1’);
2.update语法:update 表名 set 字段名称 = 字段值,字段名称 = 字段值 where 限制条件;
update t_student set birth = str_to_date(‘1993-02-22’,’%Y-%m-%d’) where no = 3;
update t_student set gender = 1,email = ‘lisi111.com’ where no = 2;
3.delete语法:
delete from t_student;//删除表中所有的数据
delete from t_student where no = 3;

设置表中字段默认值
create table t_student(
no int(4),
name varchar(32),
gender char(1) default ‘1’,
birth date
email varchar(128)
);
insert into t_student(no,name) values(1,‘zhangsan’);

修改表的结构:
alter table 表名 add 字段名 字段值;
alter table 表名 modify ;
alter table 表名 drop 字段名;
alter table t_student change name username varchar(32);

创建表加入约束
含义:实际上是对表中数据的限制条件;
目的:保证表中数据的完整和有效;
1.非空约束
作用:not null约束的字段不能为NULL值,必须赋具体数据;
2.唯一性约束
作用:unique约束的字段具有唯一性,不可重复
列级约束
表级约束
3.主键约束
主键涉及到的3个术语: 主键约束,主键字段,主键值
三者之间关系:
表中某个字段添加主键约束之后,该字段被称为主键字段,主键字段出现的每一个数据都被称为主键值:
个数分类:单一主键和复合主键
性质分类:自然主键和业务主键

MYSQL中自动生成主键值(MYSQL特有)
定义:MYSQL数据库管理系统中提供了一个自增数字auto_increment,专门用来生成主键值,主键值不需要用户去维护,也不需要用户生成,MYSQL会自动生成,自增数字默认从1开始,以1递增:1,2,3…

4.外键约束
外键涉及到的3个术语:外键约束,外键字段,外兼值
三者之间关系:
表中某个字段添加外键约束之后,该字段被称为、外键字段,外键字段出现的每一个数据都被称为外键值:
个数分为:单一外键和复合外键
外键在同一张表中可以有多个外键存在

级联更新与级联删除
用法: 在添加级联更新与级联删除的时候,需要在外键约束后面添加关键字:
注意: 级联更新与级联删除操作谨慎使用,因为级联操作会将数据改变或者删除
级联删除:on delete cascade
定义: 在删除父表的时候,级联删除子表中的数据:

alter table t_student  add constraint t_student_classno_fx foreign key(classno)
            references t_class(cno) on delete cascade;
alter table t_student add constraint t_student_classno_fx foreign key(classno)
            references t_class(cno) on update cascade;

常用的存储引擎
1.MyISAM引擎是MySQL数据库中最常用的;
它管理的表具有以下三个特性:
使用三个文件表示每个表:
a. 格式文件-----存储表的结构
b. 数据文件-----存储表的数据
c. 索引文件-----存储表的索引
可转换为压缩,只读表来节省空间

2.InnoDB存储引擎是MySQL数据库的缺省引擎;
它管理的表具有以下特征:
a. 每个InnoDB表在数据库目录中以.frm格式文件表示
b.InnoDB表空间tablespace被用于储存表的内容
c. 提供一组用来记录事务性活动的日志文件
d. 用COMMIT(提交),SAVEPOINT及ROLLBACK(回滚)支持事务处理
e. 提供全部ACID兼容
f. 在MySQL服务器崩溃后提供自动恢复
g. 多版本和行级锁定
h. 支持外键及引用的完整性,包括级联更新和删除

3.MEMORY存储引擎
使用MEMORY存储引擎的表,因为数据存储在内存中,且行的长度固定,所以使得MEMORY存储引擎非长快;
MEMORY储存引擎管理的表具有以下特征:
a. 在数据库目录内,每个表均已.frm格式文件表示
b. 表数据及索引被存储在内存中;
c. 表级锁机制
d.字段属性不能包含TEXT或BLOB;
MEMORY存储引擎之前被称为HEAP引擎

索引
语法结构:
create index 索引名 on 表名(列名)
查看索引

show index from t_student;

创建视图

create view myview as select * from emp;

删除视图

drop view myview;

数据库设计三范式
第一范式:主键,字段不能再分
第二范式:非主键字段完全依赖主键
第三范式:建立在第二范式基础之上,要求非主键字段不能产生传递依赖于主键字段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值