mysql表的操作Day12

MySQL表的创建

一 字段类型

1.数值类型

类型大小范围(有符号)范围(无符号)用途
tinyint1字节-128-1270,255最小整数
int2字节-2147483648-2147483647大整数值
float(m,n)4字节单精度浮点型(浮点数)
double(m,n)8字节双精度浮点型(浮点数)
decimal(m,n)如果m>n m+2 否则 n+2浮点数(更加精确)
注意:
  1. int(3) 或者 tinyint(2) :3或者2不会去限制你所存储数据的长度 只有在配合zerofill 零填充的时候 才有意义
  2. 如果 没有配合zerofill的时候 后面不建议 有数值
  3. decimal 在存储浮点数的时候更加精确
  4. 在存储浮点数的时候 如果小数点超出了范围 5包含5以下都会舍去 否则就进一位

2.字符串类型

类型大小用途
char0-255字节存储定长的字符串
varchar0-65535字节变长字符串
text0-65535字节长文本数据
blob0-65535字节二进制的文本(不建议)
enum(‘w’,’m’)65535个成员枚举
set(‘w’,’m’)64个成员集合
注意:
(1) char 和 varchar 的区别:
  • char 和 varchar 最大的长度 都为 255

  • char的执行效率高于varchar varchar 相对于 char 节省存储空间

  • 如果使用char 传入的数据的长度 小于指定的长度的时候 存储的实际长度 不够的会拿空格来填充
  • 如果使用 varchar 传入的数据的长度 小于指定的长度的时候 存储的实际长度 为传进来的数据的长度
(2) enum 和 set 的区别
  • enum 只能选择其给定的值中的某一个
  • set 可以选择给定的之中的 某几个

3.日期和时间类型(了解)

类型大小范围格式用途
date31000-01-01/9999-12-31YYYY-MM-DD日期值
time3-838:59:59/838:59:59HH:MM:SS时间值
year11901/2155YYYY年份值
datetime41000-01-01 00:00:00/9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间
注意:

存储日期的时候 哦们可以用整形来存储 时间戳 这样可以做到任意转换 以及 计算

二 字段约束

  1. unsigned 无符号

    只能用于设置数值类型,不允许负数的出现

    最大存储的长度 会扩大一倍

  2. zerofill 0填充

    只能用于设置数值类型的时候 位数不足 用0填充

  3. auto_increment 自增

    用于设置字段 自动增长的属性 常用于主键 每增加一条数据 该字段值会自动加1

  4. default 默认值

    如果在插入数据的时候 某些字段没有插入值 那么它的值就为你的默认值

  5. null 和 not null

    默认为null

    not null 那么就必须给该字段一个值

null 的注意事项:
  1. null意味着没有值 或者 未知的值
  2. 可以测试 某个字段是否为null
  3. 不能对 null进行算数运算
  4. 对null进行运算 结果还为null

三 MySQL的索引

主键索引 primary key

唯一索引 unique

普通/常规索引 index

全文索引 fulltext(了解)

(1) 主键索引

主要作用是确定数据表里数据记录的位置

一般来说 每个表里都会有一个主键索引候选的约束条件为(not null auto_increment)

(2) 唯一索引

唯一索引的主要功能:防止重复的数据插入

和主键索引的区别:主键索引每个表只能有一个 但是唯一索引可以有多个

(3) 常规 索引

常规索引 是关系型数据中 最重要的技术 如果说 想要提升数据库的效率 首先想到的就是 添加索引

  1. 多占用磁盘空间

  2. 会减慢 插入 删除 和 修改的效率

例如:
Create Table: CREATE TABLE `userinfo` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `userpass` varchar(50) NOT NULL,
  `telno` varchar(20) NOT NULL,
  `sex` enum('w','m') NOT NULL DEFAULT 'm',
  `birthday` date NOT NULL DEFAULT '0000-00-00',
  PRIMARY KEY (`id`),
  UNIQUE KEY `telno` (`telno`),  # UNIQUE KEY 索引名称(索引的字段)
  KEY `username` (`username`),   # index      索引名称(索引的字段)
  KEY `userpass` (`userpass`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
注意:在给字段添加索引的时候  如果没有给对应的字段 起索引名的时候 那么索引名为字段名

四 数据的存储

mysql的存储 是以文件的形式来存储

存储的路径为: C:\ProgramData\MySQL\MySQL Server 5.7\Data\库名\表名

.frm 后缀的文件: 存储表的框架结构

innoDB表引擎的文件存储结构

.ibd后缀的文件: 存储表的数据和索引

MyISAM 表引擎的文件存储结构

.MYD: MY Data 用来存储表的数据

.MYI: MY Index 用来存储表的索引

五 innoDB和MyISAM 引擎的区别

innoDB和MyISAM是mysql非常重要的俩个表的存储引擎

1.innoDB 支持事物处理 比较安全

2.MyISAM引擎 执行效率更高 常用于 博客 论坛啦

3.MyISAM 会产生3个文件 innoDB产生俩个文件

alter table 表名 engine = myisam;

六 事物处理

前期工作:

修改当前表的存储引擎是否为innoDB

alter table 表名 engine = innodb

(1) 查询是否为自动提交

select @@autocommit (1为自动提交 0为手动提交)

(2) 设置手动提交

set autocommit = 0

(3) 事物开始

begin

(4) 执行事物的代码

代码块

(5) 执行提交 或者 回滚

commit work 提交

rollback work 回滚

七 对于表结构的操作

  1. 给表添加新的字段(新添加的字段默认排在最后一位)

    关键字:add

    alter table 表名 add 字段名 字段类型 约束条件

  2. 添加的字段排在某个位置

    alter table 表名 add 字段名 字段类型 约束条件

    first 排在第一位

    after 字段名 排在某个字段的后面

  3. 删除某个字段

    关键字:drop

    alter table 表名 drop 字段名

  4. 修改某个字段的类型以及约束条件

    关键字:modify

    alter table 表名 modify 字段名 约束条件

    alter table user modify sex tinyint not null default 1 after username;

  5. 修改字段名称

    关键字 change

    alter table 表名 change 旧字段 新字段 字段类型 约束条件

    alter table user change sex mysex tinyint;

  6. 添加索引

    说明:创建常规索引 可以使用index 后者key 来进行创建

    起索引名称:alter table 表名 add 索引类型 索引名称(索引的字段)

    ​ alter table user add index myusername(username);

    不起索引名:alter table 表名 add 索引类型(索引字段)

    ​ alter table user add index(username);

  7. 删除索引

    alter table 表名 drop key 索引名

    alter table user drop key username;

  8. 表的重命名

    alter table 表名 rename 新表名

  9. 创建 一个 和a一样的表结构 表b

    create table b like a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值