大家好,我是jacky朱元禄,很高兴继续跟大家学习MySQL数据分析实战,今天我们分享的主题是表操作补充之字段属性,依照惯例第一部分,jacky先跟大家分享本课时的学习逻辑

(一)学习逻辑

我们说创建表之前我们先要搭建表的结构,在这之后我们才能创建表是不是!那么大家思考下,为什么要这样,就是为什么非要先搭建表结构,为什么我们要有这个阶段,我们直接创建表就是create table 加表名,其余什么也不加我们说行不行 ?我们可以在MySQL中试一试;

create table 表名(id);
-- 会报错,报语法错误,我们给id列加上数字类型试一试
create table 表名(id int);
--显示创建成功了,那是不是说明,表的结构里就只有数据类型,没有其他的的结构了,我们看下新创建的这张表的结构,
desc 表名
  • 我们在表的结构里看到,表结构里除了我们设置的数据类型int,是不是还有其他的结构属性,NULL和DEFAULT是不是都有相应的属性设置,我们创建表的时候,并没有设定它们,在表的结构中还有它们,那我们就能得出两个结论:一方面说明表结构中还有一些属性即使在创建表中不设定,系统会默认给你一个默认的属性是不是,也就是说明这些属性对于表的创建来说是必要的;还有一个结论,刚才在MySQL中的举例,我们可以看到,创建表时其他的属性都可以不设定,是不是数据类型不设定是不行的,所以我们说决定表结构的主要规则,也就是我们后面jacky会给大家总结的,决定表结构的主要约束是数据类型,上次课jacky已经讲过了,但光有数据类型,我们说还要有一些附加约束,就是我们这次课要讲的字段属性,也叫列属性,也叫表属性,我们看其他资料这几个概念说的都是一个意思,那么字段属性包括什么呢?

  • 字段属性包括:

    • 无符号的设置;

    • 自动补全到零

    • 自动增量的设置;

    • 默认值的设置

    • 其他的特殊设置

好,上面就是本小节的一个学习逻辑线,下面我们开始具体学习字段属性都有什么,它是干什么用的,怎么用的

(二)字段属性

  • (1)unsigned

    • 这个属性是无符号的意思,就是全是整数没有负数,它的作用是如果我们存放的数据都是正整数,它可以让空间增加一倍,咱们创建数值的时候,一般是无符号的,除非你要存负数;

    • 那这个unsigned属性是怎么让空间增加一倍的?

      • 我们前面在数据类型中说过int的存储数值的范围是-2147483648 ~2147483647,那么如果如果我们给int设定一个unsigned属性,那么int的存储数值的范围就是无符号的,它的范围就变成了0 ~ 4294967295,像我们id这样的字段,在实际工作中是不可能插入负数的,我们就要用unsigned这个属性来修饰,这样会使空间增加一倍;

      • 对于这个属性,jacky还有一点强调,就是unsigned这个属性只能用在数值型字段中,这个很简单,其他的数值类型比如说字符串和日期类型不分什么无不无符号,它们不是整数;

create table user6(id int unsigned);
-- 这样创建后,我们就不能插入负值
insert into user6(id) values(99);
select * from user6;
--如果我们插入的值是-99呢,mysql会按照我们插入的极限值显示
--那-99的极限值就是0,我们看一下,那这样空间就涨了一倍

这就是我们说第一个字段属性,无符号的设置;

  • (2)zerofill

    • 第二个属性是自动补全,也叫零填充,SQL语句是zerofill,这个零填充也只能用在数值型字段,零填充的前提一定是unsigned属性,这个属性的作用就是前导0,前导0什么意思呢,比如说我们前面要讲的int(3),我们给某列的表属性设置为整型,后面加上括号3,我们在这列填加数字1,我们加上zerofill这个属性的话,会自动补零为001,不足3位的用零填充;
  • (3)null

    • null表示空,非字符串,这一列的值允许为null

    • not null 不可空

  • (4)default

    • 默认值,创建列时可以指定默认值,当插入数据时如果没有主动设置,则自动添加默认值;

      • create table demo1(nid int not null defalut1,num int null)

        • defalut 1 就是默认值等于1,不输入值的时候,默认值等于1;
  • (5)auto_increment

    • 自增的SQL语句是auto_increment,设置这个属性的类型也只能是整数,在工作中,我们一般都给id列设置为自增,别人也没人用,自增是什么意思呢?顾名思义,就是数据每增加一条就会在原有的字段值上自动加1,这是它的特性,而且它的字段值是不允许重复的,这里jacky强调,要设置自增属性,必须是索引,否则就会报错;关于索引后面jacky会详细的讲,这里大家
      只要知道自增列是唯一列,一般都是主键索引就足够了,我们在MySQL中看一下,

我们之前在user表里插数据的时候,是不是有3类,id、名字和密码,咱们id是不是手输进去的,1、2、3、4、5等等,那么我们思考一下,我们怎么做更合适,应该理想的状态是,我们不要管这个id才对,我们每输入一条数据,我们的id自增了,但是id不会自己自增的,所以我们就要在表里加上自增的属性

create table demo1(nid int not null auto_increment primary key,num int null)

在创建表的时候,我们的SQL语句里加上auto_increment primary key,就是表示列自增

表的字符集

一般来说,库的字符集是什么,表的字符集就是什么,当然MySQL服务器还有一个字符集,那么这个逻辑就是服务器的字符集是什么,库的字符集就是什么,库的字符集是什么,表的字符集就跟着是什么;

那怎么查看,我们当前状态下这些字符集都是什么呢?

\s

用latin1,没有好处,只有坏处。
MySQL开发者为瑞典MySQL AB公司,所以默认编码为latin1。
早期版本的编码都是latin1, latin1编码可以认为无字符格式的编码,什么字符都可以存,乱玛也可以存,至于里面是什么内容,只能靠客户端的程序来解释,这样你的程序里就莫名奇妙的要多了一个识别和转换编码的步骤。程序复杂度冤枉的增加了,性能也受影响。而且,在latin1编码中比较和排序都有问题。

为了确保数据的完整性和一致性,我们在创建表的时候,我们需要指定字段类型之外,我们还需要为字段指定一些属性,而且我们需要使用一些约束条件,比如说主键索引,外键索引,唯一索引等等,

  • 表里面每一个的索引有两种:

    • 主键索引

    • 普通索引

说明:每个表只能有一个主键索引,但是每一个列都可以是普通索引,主键索引比普通索引的速度更快,为什么要加索引?加了索引以后,可以让我们的检索速度更快;所以我们在实际工作中查找数据的时候,sql语句总会是where id等于几,where id 大于几,是不是,where什么意思,where是一个条件,当id大于10的时候,为什么这个where的条件语句总是跟着id来用呢?因为id是主键索引,这样的查询速度是最快的;

MySQL数据分析-(12)表操作补充:字段属性相关推荐

  1. MySQL修改数据表中的字段名

    MySQL修改数据表中的字段名 在一张数据表中只能设置一个唯一名称的字段名.在同一张数据表中,不能出现两个名称完全相同的字段名. 因此,数据库系统可以通过字段名来区分数据表中的不同字段. 在MySQL ...

  2. mysql复制一个字段值到另一个字段,MySQL怎么把表中一个字段数据复制到另外一个表的某个字段下...

    点击查看MySQL怎么把表中一个字段数据复制到另外一个表的某个字段下具体信息 答:update b set tel =(select mobile from a where a.id=b.aid) 注 ...

  3. mysql中大数据表alter增加字段报错:1034 Incorrect key file for table 'table_name'; try to repair it...

    mysql中大数据表alter增加字段报错:"1034 Incorrect key file for table 'table_name'; try to repair it" 现 ...

  4. MySQL获取Schema表名和字段信息

    MySQL获取Schema表名和字段信息 获取表名 select TABLE_NAME,TABLE_TYPE,ENGINE,TABLE_ROWS,TABLE_COMMENT,CREATE_TIME,U ...

  5. mysql字段约束_mysql数据库之表操作及字段约束条件

    一.存储引擎 二.表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段 id name age sex 1 li 12 male 2 liu ...

  6. mysql 字段操作_Mysql:数据库操作、数据表操作、字段操作整理

    mysql 登录本机 mysql -u root -p password 数据库操作 创建数据库 命令:create database 例如:mysql> create database xhk ...

  7. 修改MYSQL 表中的字段属性

    1.登录数据库 >mysql -u root -p 数据库名称 2.查询所有数据表 >show tables; 3.查询表的字段信息 >desc 表名称; 4.1.修改某个表的字段类 ...

  8. MySql随笔part3 表操作

    一:什么是表 表(table): 表似一种结构化的文件,可用来存储某种特定类型的数据.表中的一条记录有对应的标题,标题称之为表的字段 二:创建表 1 create table table_name( ...

  9. mysql的数据表操作

    1.创建数据表 在创建数据表之前,要用use <数据库名>指定在哪个数据库中操作. 1.1创建表的语法格式 创建数据表语句为,其中[]中的表示可选 create table <表名& ...

  10. mysql配置——库表操作、用户操作

    mysql----库表操作 ## 列出所有的库 mysql> show databases; +--------------------+ | Database           | +--- ...

最新文章

  1. Glide二次封装库的使用
  2. 在浏览器中分析AV1码流
  3. 鸡肋还是革新——Blazor进WinForm
  4. CF819E:Mister B and Flight to the Moon(构造、归纳法)
  5. linux美化原理,x-window字体原理及美化
  6. error: Your local changes to the following files would be overwritten by merge:
  7. 用websocket技术开发的web聊天系统
  8. 将项目绑定https协议
  9. ABAP:SMARTFORMS 之一:数据从程序中传送到Form中
  10. mysql 存储过程调用 mybatis/hibernate
  11. 手工制作totem播放器的播放列表
  12. 服务器虚拟化好处现状二工大,服务器虚拟化优缺点(二)
  13. PMBOK6相关方:权利利益方格
  14. 电脑数据信息安全常识
  15. LC振荡电路分析方法
  16. 用python搜索百度过滤广告_Python净化百度搜索结果!真正的做到无广告环境!
  17. 人工智能面临的主要威胁是对最终失去实际控制人工智能能力的恐惧
  18. css第二课:外部样式link和import的运用及行内样式的介绍
  19. 清华大模型人才遭哄抢!盘点5大学术重镇10大产业玩家
  20. (附源码)springboot+mysql+基于web的在线问答社区系统设计与实现 毕业设计061628

热门文章

  1. 让外国黑客感到胆颤心惊的传奇人物郭盛华
  2. 组合数学-常用组合公式
  3. a foreign key constraint fails ,外键表中添加数据时无法实现
  4. python范围缩放_如何缩放到初始绘图/缩放的特定范围?
  5. html旋转 缩放 移动,CSS3旋转缩放移动倾斜等效果——transform
  6. 2018 Google IO大会来了
  7. “狗屁不通”文章生成器网页版代码
  8. 电动自行车新国标正式实施 二季度数码市场需求好转
  9. 非线性光纤光学_光学青年| 刘兆军教授与晶体光纤激光技术研究,做核心材料和器件...
  10. 2010考研数学二第(13)题——导数应用题