mysql学习笔记(二)
-- mysql关系型数据库:C/S结构软件(连接认证,发送SQL指令,服务器处理指令返回结果,客户端接收结果解析结果) -- mysql服务器端对象:DBMS->Database->Table->fields -- 数据类型 -- 所谓的数据类型:对数据进行统一的分类 -- SQL中将数据类型分成了三大类:数值类型,字符串类型和时间日期类型 -- 数值型:都是数值,分为整数型和小数型 -- 整数型数据:存放整型数据,细分为五类 -- TinyInt 迷你整型,使用一个字节存储 -- smallInt 小整型,使用2个字节存储 -- mediumint 中整型,使用三个字节存储 -- int 标准整型,使用四个字节存储 -- bigint:大整型,使用八个字节存储 -- SQL中将小数型分为浮点型和定点型 -- 浮点型:小数点浮动,精度有限,而且会丢失精度(自动四舍五入) -- 定点型:小数点固定,精度固定,不会丢失精度 -- 主键:一张表只能有一个字段可以使用对应的键,用来唯一的约束该字段里面的数据,不能重复 create table my_info(name varchar(20),numbers char(10) primary key comment '学号'); show full columns from my_info; -- 一个表只能有一个主键 -- 复合主键 -- 在实际创建表的过程中,很少使用真实业务数据作为主键字段(业务主键,如学号,课程号) -- 大部分使用逻辑性的字段,称为逻辑主键 create table my_student( id int primary key auto_increment comment '逻辑主键,自增长', number char(10) not null comment '学号', name varchar(10) not null ); desc my_student; -- 当自增长被给定的值为null或者默认值的时候会触发自动增长 -- 自增长如果对应的字段输入了值,那么自增长失效,但是下一次还是能够正确的自增长(从最大值+1) insert into my_student(number,name) values('123','xu'); insert into my_student values(null,'234','jian'); show create table my_student; -- 自增长修改 -- 修改只能向更大的数修改,向下修改不生效 alter table my_student auto_increment=5;-- 下一次自增长从5开始 -- 为什么自增长是从1开始?为什么每次都是自增1呢? show variables like 'auto_increment%'; # auto_increment_increment 1 # auto_increment_offset 1 -- 可以修改变量实现不同的效果,修改是对整个数据修改,而不是单张表 -- 修改自增长步长 set auto_increment_increment=5; -- 唯一键 -- 一张表往往有很多字段需要具有唯一性,数据不能重复, -- 但是一张表中只能有一个主键,唯一键(unique key)就可以解决表中有多个字段需要唯一性约束的问题 -- 唯一键的本质与主键差不多,唯一键默认的允许自动为空,而且可以多个为空 -- 增加唯一键 create table my_unique1( number char(10) not null unique comment '学号:唯一', name varchar(10) not null ); desc my_unique1;