大家好,我是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数据库之表操作及字段约束条件

    目录 一.存储引擎 二.表介绍 三.创建表 四.查看表结构 五.数据类型 一.介绍 二.数值类型 整数类型 浮点型 三.字符串类型 四.日期类型 五.枚举类型与集合类型 六.约束条件 七.修改表 al ...

  2. MySQL为数据表的指定字段插入数据

    username not null 没有默认值/有默认值   insert不插入username字段 均不报错 2014年07月23日21:05    百科369 MySQL为数据表的指定字段插入数据 ...

  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数据分析-(13)表操作补充:索引

    大家好,我是jacky朱元禄,很高兴继续跟大家学习MySQL数据分析实战,今天跟大家分享的主题是表补充之索引: (一)前面课程的小节以及本节课程的逻辑梳理 在正式分享主题之前,jacky先跟大家捋顺一 ...

  6. (18)模型层 -ORM之msql 多表操作(字段的属性)

    数据库表的对应关系 1.一对一   #关联字段写在那张表都可以 PS:只要写OneToOneField就会自动加一个id 2.一对多  #关系确立,关联字段写在多的一方 3.多对多   #多对多的关系 ...

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

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

  8. 修改MySQL表中的字段属性

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

  9. Mysql之库表操作(胖胖老师)

    SQL概念:结构化查询语言(SQL = Structured Query Language),也是一种编程语言(数据库查询和程序设计语言),可以用于数据的存取及查询,更新,管理关系型数据库系统ps: ...

随机推荐

  1. Session共享问题---理论

    随着网站访问量增加,初期的一台服务器已经完全不能支持业务,这个时候我们就需要增加服务器设备,来抗住请求的增量,如下所示: 负载均衡的目的本来就是要为了平均分配请求,所以没有固定第一次访问和第二次访问的 ...

  2. 13-MySQL DBA笔记-迁移、升级、备份、恢复数据库

    第13章 迁移.升级.备份.恢复数据库本章将为读者讲述数据库的各种维护任务:迁移.升级.备份和恢复.因为每个人熟悉的工具不同,其对应的迁移.升级.备份和恢复的方式也都略有不同,本书将尽量对笔者认为最具 ...

  3. (十二)easyUI之表单和验证完成登录页面

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  4. android 自动化测试案例之 MonkeyRunner

    #-*- coding: UTF-8 -*- #上面第一行是设置文件编码,windows下第一行必须是这个#文件名 MonkeyRunner.py#功能: 使用monkey runner测试app,此 ...

  5. IQueryable vs. IEnumerable

    IQueryable<T> extends the IEnumerable<T> interface IEnumerable<T> is great for wor ...

  6. friend

    #include <iostream> using namespace std; //friend 友元,效率的问题 //get 方法和set方法,是标准封装的结果,friend破坏了这种 ...

  7. 通过Nginx统计网站的PV、UV、IP

    转载:通过Nginx统计网站的PV.UV.IP 概念 UV:独立访客:以cookie为依据,假设一台电脑装有3个不同的浏览器,分别打开同一个页面,将会产生3个UV.PV:访问量:页面每访问或刷新一次, ...

  8. 一段代码显示出电脑连过所有wifi的密码

    1.打开运行 2.输入cmd后回车 3.输入如下代码 for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show pro ...

  9. springboot的简单热部署

    最近开始学习使用springboot但springboot项目和之前的ssm等各种框架项目有所不同,本身集成了很多繁琐的东西,但 一些小功能还需自己配置.下面开始配置热部署. 首先当然是导入热部署的依 ...

  10. 【Day5】项目实战.CSDN热门文章爬取

    import urllib.request as ur import lxml.etree as le import user_agent keyword = input('请输入关键词:') pn_ ...