精华内容
下载资源
问答
  • 字段属性设置: 1、not null: 不为空,表示该字段不能放“null”这个值。不写,则默认是可以为空 2、auto_increment: 设定int类型字段的值可以“自增长”,即其值无需“写入”,而会自动获得并增加 此属性必须...

    字段属性设置:

    1、not null: 不为空,表示该字段不能放“null”这个值。不写,则默认是可以为空

    2、auto_increment: 设定int类型字段的值可以“自增长”,即其值无需“写入”,而会自动获得并增加

    此属性必须随同 primary key 或 unique key 一起使用。primary key = unique key + not null

    3、[primary] key: 设定为主键。是唯一键“加强”:不能重复并且不能使用null,并且可以作为确定任意一行数据的“关键值”,最常见的类似:where id= 8; 或 where user_name = ‘zhangsan’;

    通常,每个表都应该有个主键,而且大多数表,喜欢使用一个id并自增长类型作为主键。

    但:一个表只能设定一个主键。

    4、unique [key] : 设定为唯一键:表示该字段的所有行的值不可以重复(唯一性)。

    Duplicate entry 'zhangsan' for key 'name' --'zhangsan' 是重复条目出错,因为设置了唯一键,属性内容不能重复。

    5、default ‘默认值’: 设定一个字段在没有插入数据的时候自动使用的值。

    6、comment ‘字段注释’

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    CREATE TABLE student(

        id INT PRIMARY KEY AUTO_INCREMENT,

        `nameVARCHAR(10) NOT NULL,

        age INT COMMENT '年龄',

        address VARCHAR(10) DEFAULT '中国'- - 插入数据时候如果不赋值,默认值是"中国"

        UNIQUE KEY(`name`) - - 唯一键,代表这个字段不能重复

    );

     

    展开全文
  • 本文实例讲述了mysql数据类型和字段属性。分享给大家供大家参考,具体如下:本文内容:数据类型数值类型整数型浮点型定点型日期时间类型字符串类型补充:显示宽度与zerofll记录长度字段属性空\不为空值:NULL、NOT ...

    本文实例讲述了mysql数据类型和字段属性。分享给大家供大家参考,具体如下:

    本文内容:

    数据类型

    数值类型

    整数型

    浮点型

    定点型

    日期时间类型

    字符串类型

    补充:

    显示宽度与zerofll

    记录长度

    字段属性

    空\不为空值:NULL、NOT NULL

    主键:primary key

    唯一键:unique key

    自增长:auto_increment

    默认值:default

    字段描述:comment

    补充:

    复合键

    首发日期:2018-04-08

    数据类型:

    mysql的数据类型就是存储数据的类型。

    数值类型:

    整数类型:tinyint,smallint,mediumint,integer,bigint

    默认是有符号,如果需要使用无符号的数据类型要在后面加"UNSIGNED"

    类型

    简写

    字节大小

    (signed)范围

    (unsigned)范围

    备注

    整数型:

    TINYINT

    1

    0~255

    -128~127

    SMALLINT

    2

    0~65535

    -32768~32767

    MEDIUMINT

    3

    0~16777215

    -8388608~8388607

    INTEGER

    INT

    4

    0~4294967295

    -2147483648~2147483647

    BIGINT

    8

    0~264-1

    -263~263-1

    小数类型:

    浮点类型:float(size,d),double(size,d)

    size是数值的最大位数,d是小数点右侧的位数(即使你没输够那么多位也会补全那么多位)。

    FLOAT的精度为6~7位(依据情况不同?毕竟机器是以二进制存储的),DOUBLE的精度为14~15位

    整数部分的个数为SIZE-D,直接存入的值的个数不能多于这个,但如果浮点数四舍五入导致整数进位而溢出超过最大位数的,系统允许成立(某些版本貌似已经不允许了,所以一般小数位也不要超过)。

    很多时候没必要关注两个浮点的数值范围大小(是极大的),注重点应该是它的精度。

    e152beb771b5d74ec6e2a9d6a5aa13f1.png

    778fb0584d44d338a585fd90598cf738.png

    定点型:decimal(size,d)

    size是数值的最大位数,最大为65,d是小数点右侧的最大位数,最大为30。

    定点型不允许因为小数部分四舍五入导致整数部分长度超出范围。

    DECIMAL是不会损失精度的。可以理解成使用“字符串”存储(MYSQL权威指南这么说)。

    c464fca7161e30711935bc17ad20f558.png

    直接不带括号的数据类型float、double、decimal代表没有小数部分

    时间日期类型:

    时间日期类型包括date,time,datetime,timestamp,year;

    Datetime:时间日期,格式是YYYY-MM-DD HH:II:SS,表示的范围是从1000到9999年(有些版本已经允许0-9999?不确定);

    720b1e0e4a8a4198634cdbb0b51f5888.png

    Date:日期,格式是YYYY-MM-DD ,表示的范围是从1000到9999年

    7cfc8b7ed4a9979b7e61366e1cbaaa61.png

    Time:时间段,格式是HH:II:SS, 指定的时间在某个区间之间,有正负。表示的范围 -838:59:59~838:59:59,这代表某个日期的前后时间范围【如果你仅仅想要用来表示24小时内的时间,可以忽略它的时间范围】

    fa3da2c558a75aa4f2b9f97e405b34e4.png

    Timestamp:格式是YYYY-MM-DD HH:II:SS,表示的范围从1970-01-01 00:00:00到2038-01-19 03:14:07 【一旦该行记录被修改,那么timestamp会修改成当前时间。】

    c16c5f7612c5cc51e2ede48fbe6ec047.png

    Year:年份,表示的范围1901-2156

    d5da7dbc9ab54740e5277862fa3ea48b.png

    原本有两种格式,year(2)和year(4),但5.7中移除了year(2)。

    字符串类型  :

    set  :集合字符串。将一个个特定的字符串放到集合里面。

    定义了集合之后,不能插入集合元素之外的字符串,(可以插入多个符合条件的字符串)

    集合字符串实际上也是仅仅存储数值,系统自动转换成对应的字符串。

    集合中每一个元素对应一个二进制位,被选中的为1,没选中的为0,左边为二进制中的低位,右边为高位,从右到左得到二进制结果

    create table my_set(

    hobby set('football','basketball','pingpong','computer')

    )charset utf8;

    insert into my_set values('basketball,computer');

    insert into my_set values(3);-- 3=0011

    insert into my_set values(5);-- 5=0101

    b5144fb02f9736205a897ee93c9cc90d.png

    enum  :枚举字符串

    有点类似set,但这里只能插入一个字符串(set类型的字段的值可以是多个set元素,但enum只能是其中一个元素)

    将可能出现的数据列举出来,实际存储的数据只能是列举出来的数据。

    使用枚举有利于统一数据,以及节省存储空间(枚举只是存储数值,系统转换成字符串)。

    枚举元素实际上按定义的顺序标号,从1开始,所以可以直接插入枚举元素对应的数值。

    如:

    create table my_enum(

    gender enum('male','female','unknown')

    )charset utf8;

    57aee20b8acf4791b3181518c314d008.png

    blob  :二进制数据字符串

    存储二进制数据(少用)

    text  :文字字符串

    存储文字,当字符大于255时,一般使用text;

    varchar  :变长字符串

    varchar(L),L代表字符长度,单位为字符,最大长度为65536。在实际存储中需要1到2个字节来存储长度(1还是2由实际大小决定,216=35536,<=255的一般一个字节),在使用时根据定义的大小来分配空间,但会根据实际需要使用的缩小空间(比如规定60大小,实际只有30,那么实际空间就是31~32)。

    当L大于255时,建议使用Text,而不是varchar;

    6f12dcf53b9abdc25d95ac4fc3fa7dbc.png

    char  :定长字符串

    char(L),L代表字符长度,单位为字符,最大长度为255,不使用L时默认为1

    不同环境中根据字符大小,实际占有的空间不同;在UTF8环境下,char(4)所用的字节数为4*3=12;

    补充:

    显示宽度 与填充 :

    在列类型后面显示的数值,代表数据最终显示的最少位数(包含符号)。

    一般不够显示宽度的数据都会采用空格填充,也可以使用zerofill来使用零填充(零填充会导致数据类型自动变成无符号的)。

    tiny(3)的空格填充效果:

    31ad1d62546dcaf9af45f0a3ae42159c.png,zerofill效果:

    c2f61dbd5e6beaf2757688122f361cd2.png

    create table myInt(t1 TINYINT(3));

    drop table myInt;

    insert into myInt values(127),(1);

    select * from myInt;

    alter table myInt modify t1 tinyint(3) zerofill;

    select * from myInt;

    不要轻易的使用最大限度来存储字符串,因为涉及记录长度问题  :

    MySQL中规定任何一条数据最长不能超过65535个字节

    如果有任何一个字段允许为空,那么系统会自动从整个记录中保存一个字节来存储NULL;

    text文本不占用记录长度,额外存储。

    UTF8中varchar的最大限度:65535-2(需要两个字节来存储长度)  /3=21844,所以最大字符数为21844

    GBK中varchar的最大限度:65535-2(需要两个字节来存储长度) /2=32766

    字段属性:

    字段属性是字段除数据类型外的属性,一般有空\不为空值、主键、唯一键、自增长、默认值、描述等属性。

    空\不为空值:NULL、NOT NULL

    字段的数据默认情况下是允许为空的,比如说一条人的信息记录中可以没有邮箱(或许有些人考虑用“空字符串”来代表),我们允许可以不填入数据的字段可以设置为null;但比如说某些必填数据,我们不想填入的时候留空,可以设置这个字段为not null

    允许为空时的数据,空的数据显示为null:

    f1fcdc7d41e735ebe082a41053b6353e.png

    不为空的字段,插入null时,会报错:

    cca710ad34dd26683345d83810533799.png

    null\not null属性的定义方式(因为默认允许空,所以主要关注not null):

    cfda385e5a42b4d8fbcd534fd1a7c4f3.png;当然也可以通过修改字段的形式来给字段定义not null属性

    主键:primary key

    主键用于唯一标识每一条记录(每个人都有自己唯一的身份证)

    每一张表只能有一个主键。

    因为唯一标识,所以主键字段的数据不能为空,并且主键字段的数据值不能重复

    主键也是一种索引,可以提高查找速率。

    主键的定义:

    1.定义表结构的时候定义成字段的属性。

    a57019d43e4e1b2f9c4bf8716fb0d9d9.png

    90a09f8cd899cfaeee2193b3d29367f9.png

    2.修改表结构,增加一个带主键的字段。

    3.修改表结构,给某一字段增加主键属性。

    fa72c83902f678cf2a8d72b3e01f35be.png

    主键的用途:主键的主要用途是用来唯一标识每一条记录,比如我们想将两个表(学生表跟老师表)的多对多关系封装到一个表中,这个抽取的映射字段一般都是各自的主键。

    3df41b01992d88eb0e55968e7ee47270.png;并且由于主键的数据的不可重复性,也用来约束数据的唯一性。

    主键的删除:

    alter table 表名 drop primary key;

    唯一键:unique key

    唯一键的功能与主键有点类型,但不同的是主键只能有一个,唯一键可以有多个,而且唯一键的字段的数据允许为空。

    唯一键可以约束字段,使得字段的数据不能重复

    如果唯一键同时也有not null,并且表中没有主键的话,在desc查看表结构中会显示成主键

    如果唯一键也不允许为空,那么功能与主键相同

    唯一键的定义方法可以参考主键的。

    唯一键的删除:

    alter table 表名 drop index 唯一键名; -- 唯一键默认使用字段名来定义名字

    自增长:auto_increment

    自增长的功能是可以使某个字段的数据随着记录的插入而进行增长(不给这个字段插入数据的情况下)

    自增长的前提是这个字段必须是一个“索引”,比如主键、唯一键

    自增长的前提这个字段的数据类型是一个数值型的,(如果给了float,也不会增长成小数,而仅仅是整数)

    一个表只能有一个自增长。

    只有不给值,或者给null的情况下,才能正确自增长;如果某一次自增长失败了,那么下一次会从当前字段的最大值开始继续自增长。

    自增长的定义方法:

    ea76e2a902f5f439811f2351717e0a3d.png;当然也可以通过修改字段的形式来给字段定义not null属性

    自增长的修改:

    修改增长速度:set auto_increment = 值;

    修改下次增长的值:alter table 表名 auto_increment = 值; 【修改的值只能变大,不能变小,因为可能导致数据重复问题】

    自增长的查看:show vairable like "auto_increment%";

    自增长的删除:利用alter来删除,alter修改字段属性的时候如果不带上原来的属性就会被删掉:

    默认值:default

    默认值的功能是当我们不给一个字段赋值的时候,使用默认值作为数据,比如不选择性别的时候,默认使用“保密”;

    默认值的定义方式:

    bfae1e1e346c1b5f453fe87475f51a5b.png

    f0fc1df5a8a73d5159021fcb07d1ac1e.png

    字段描述:comment

    字段描述是用来描述字段的,能在查看数据表创建语句的时候显示出来(不会再select结果中显示出来),可以帮助我们了解某一个字段的意义。

    定义方式:

    395b8912f04fd10f550a30f123498b95.png

    27567c1759315ca74735e54c370a49ad.png

    补充:

    复合键:可以将多个字段组成一个键,比如学生可以选多门课,但学生号跟课程号一起的时候应该是唯一的,这里使用主键来限制这个情况

    定义方法(复合以主键为例):

    941c15945af1e54cc7383561e6e12a32.png

    数据约束(以上面的表为例):

    12dee9efdd6bd2333219032a45ed1543.png

    更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL查询技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》、《MySQL数据库锁相关技巧汇总》及《MySQL常用函数大汇总》

    希望本文所述对大家MySQL数据库计有所帮助。

    展开全文
  • 数据类型:对数据进行统一的分类,从系统...整数型:存放整形的数据,在SQL因为更多考虑如何节省磁盘空间,所以系统将整形又细分为5类。SQL的数值类型全部都默认有符号,但是可以分正负。有时候需要使用无符号数...

    数据类型:

    对数据进行统一的分类,从系统的角度出发,为了能够使用统一的方式进行管理,更好的利用有限的空间。

    SQL中将数据类型分成了三大类:数值类型、字符串类型、时间日期类型。

    b01513ab83465b07c242bdb9e5926100.png

    数值型:

    数值型数据:都是数值,系统将数值型分为整数型和小数型。

    整数型:

    存放整形的数据,在SQL中因为更多考虑如何节省磁盘空间,所以系统将整形又细分为5类。

    9b0fc9c19467f54846467840e470cee7.png

    62af7d1547a7dbfec54ac6ea8416f320.png

    SQL中的数值类型全部都默认有符号,但是可以分正负。

    有时候需要使用无符号数据:需要给数据类型限定:int unsigned;    无符号,从0开始。

    7f02ca17c243cdeaf922dee21c079662.png

    插入数据测试:

    4179d351c0d4b9c9043596292d97aeb0.png

    在查看表结构的时候,发现每个字段的数据类型之后会自带一个括号,里面有指定的数字。

    这个数据是显示宽度,没有特别的含义,只是默认的告诉用户可以显示的形式而已,实际上用户是可以控制的,这种控制不会改变数据本身的大小。

    显示宽度的意义:当数据不够显示宽度的时候,会自动让数据变成对应的显示宽度,通常需要搭配一个前导0来增加宽度,不改变值的大小:()

    2403ad7206ecad289fe9737437341396.png

    f06b2aabd7eca4f42717c152f3de3f1a.png

    d95fcaa57b1aa0d3f4b5186085dd1806.png

    小数型:

    6aa2a8fd0a4a1cfd61f704c21e80030a.png

    95e68887cd1e33f717d123dae6da8482.png

    676429be4b3ac72d87ca7925c7370cbf.png

    1fc9f7df4edb04f0db64e0a68cc04d86.png

    6cecdd84c2dff9eec8da9eb10a4d2a54.png

    2ed029202077d1ae717f1e85da4b56ce.png

    af456f02887871472d124e297dc9b797.png

    7b073ef3cccdb3eb2c3f1783382acff6.png

    c20142359d90c87bb07225fc00fcacee.png

    89a6e800ca95b0a62c8d45400d598078.png

    3b9640e88a19b69c5979bb27b4d21d67.png

    4ee030f70c04be04f676326f077097cf.png

    d27c4f0f6eb5ae2e4c54734bc7719930.png

    79fe17ceff0e1d039a3ca17721e44b68.png

    699a5a09f1b9ddea4076cade8479b7bc.png

    1f53f0b75d139036e696ff28f4b6fd31.png

    6c88f51c697597183f1f79d2c1326942.png

    bd7514c8bd7a1003a2adf4e3a30eae9b.png

    字符串类型:

    在SQL中,将字符串类型分为6类:char、varchar、text、blob、enum和set

    定长字符串:char,磁盘(二维表)在定义结构的时候,就已经确定了最终数据的存储长度。

    aaa042f823d3706b05674be311587a9d.png

    变长字符串:varchar在分配空间的时候,按照最大的空间分配,但是实际上最终用了多少,是根据具体数据来确定的。

    6c9b115a34f29665f699c2ebcb71fcf9.png

    ff17edf26cb7d50732c607854c65ab3b.png

    字符串文本:

    如果数据量非常的大,通常说超出255个字符,就会使用文本字符串。

    d3ff56f6bb7d63ae0519acb9e1de307c.png

    枚举字符串:

    枚举:enum,事先将所有可能出现的结果都设计好,实际上存储的数据必须是规定好的数据中的一个。

    46788f881838231e774f5913b2c348eb.png

    2afb826ee07e44cdaaa7f7897f65b88b.png

    07ff3bca5ba769a1df4d934319d138bd.png

    143258bd517ebbfb98b42a97dabbc2ec.png

    证明字段存储的数据是数值:将数据取出来 +0,就可以判断出原来的数据存储的到底是字符串还是数值,如果是字符串最终结果永远是0,否则就是其他值。

    0948f024bca5906f9a8b364d2cdd60a5.png

    732e7dc074ff6a0dda74c91e2ff28476.png

    5a9f433523b831dc96cbbfbb5720a24b.png

    afbe7d3f45db24487eca0fc7a078f4d5.png

    集合字符串:

    集合跟枚举很类似:实际上存储的是数值,而不是字符串(集合是多选)

    d8f09a4ce921687ef5ae8ea122210d9c.png

    b1f2e41c0bfaf8266200cf8f9ebbd515.png

    83ad87c708955a20063084c5894ff084.png

    集合中每一个元素都是对应一个对应的二进制位:

    450b61dba4c5ab62a97e50df7f1a1662.png

    d3d6dc9ed12351b251af7bca02f702c2.png

    aed72af2165e7aa23b8132a520820890.png

    MySQL的记录长度:

    mysql中规定:任何一条记录最长不能超过65535个字节(varchar永远达不到理论值)

    d0840736668d7f899123b778fa04600c.png

    be84782d1efe59e1311ef614474462fc.png

    e9048824bcf0820045f6216fd03c1e1f.png

    dda0d0cb61729c9d4117c7122cf422b0.png

    列属性:

    真正约束字段的是数据类型,但是数据类型的约束很单一,需要有一些额外的约束,来更加保证数据的合法性。

    36b3195a5016c1790a7a21381eaf45b1.png

    空属性:

    两个值:null(默认)和not null(不为空)

    虽然是默认为空,数据库基本都是字段为空,但是在实际开发的时候,应当尽可能的保证所有的数据都不应该为空,空数据是没有意义的,空数据没有办法参与运算。

    b7982e181f7f7d39b0e8edd6d87a52de.png

    7bb6463919fe4754ba1d0bb3cb41b53e.png

    列描述:

    comment(描述),没有实际的含义,是专门用来描述字段,会根据表创建语句保存,用来给数据库管理员来进行解释的。

    aa7e287fe284ac422d49d0165a9a3d1c.png

    默认值:

    某一种数据会经常性的出现某个具体的值,可以在一开始就指定好,在需要真实数据的时候,用户可以选择性使用默认值。

    默认值关键字:default;

    99a6eb257c3a1f774546f7e2f4f3c1ce.png

    默认值的生效(使用):在数据进行插入的时候,不改变字段的赋值。

    0dadd7ce6457e9d0b46d5d5e79f8d679.png

    想要使用默认值,可以不一定去指定列表,故意不使用字段列表:可以使用default关键字代替。

    b832944c0c8a12c0087ae3923c4a5c6c.png

    主键(primary key):

    一张表只能有一个字段可以使用对应的键,用来唯一约束该字段里面的数据,不能够重复,这种键称为主键。

    增加主键:

    SQL操作中有多种方式可以给表增加主键:大体分为三种。

    方案一:在创建表的时候,直接在字段之后跟上primary key关键字(主键本身不允许为空)。其优点:非常直接,缺点:只能使用一个字段作为主键。

    edff583ea49543f154dc8d0a35284e61.png

    方案二:在创建表的时候,在所以得字段之后,使用primary key(主键字段列表)来创建主键(如果有多个字段作为主键,可以是复合主键)

    7ba89c23b0be28a3bc0a1a8c67ce1449.png

    方案三:当表已经创建好之后,额外追加主键,可以通过修改表的字段属性,直接追加。(前提:表中的字段对应的数据本身是独立的(不重复));

    Alter table 表名 add primary key(字段列表);

    c9c11ece9cf98e6d5128a7d1a3b4b8b0.png

    主键约束:

    主键对应的字段中的数据不允许重复:一旦重复,数据操作失败(增和改)

    c09103c77571beac911d2c7a480faba6.png

    更新主键与删除主键

    没有办法更新主键,主键必须先删除,后增加。

    Alter table 表名 drop primary key;

    ebb3ef690ce40ad22a02a17413ededad.png

    主键分类:

    在实际创建表的过程中,很少使用真实业务数据作为主键字段(业务主键:如学号,课程号);大部分时候,是使用逻辑性的字段(字段没有业务含义,值是什么没有关系),将这种主键称为逻辑主键。

    afcc612229bcc58aaee0afed3189a511.png

    自增长(auto_increment):

    当对应的字段没有值或者给默认值、或者给null的时候,会自动的被系统触发。系统会从当前字段中已有的最大值再进行+1操作,得到一个新的不同的字段。

    自增长通常是跟主键搭配。

    自增长特点:

    b36aaee8153f7e5c76341e60d738c6dc.png

    自增长的使用:

    当自增长被给定的值是null或者默认值的时候会触发自动增长。

    f5db4b0e9a210db840e592d87e035bfe.png

    自增长如果对应的字段输入了值,那么自增长失效,但是下一次还是能够正确的自增长(从最大值+1)

    8e5da413ae6cea7a5b6efb2235ad783b.png

    6188f78073192319b344dd54c3322e5e.png

    修改自增长:

    自增长如果涉及到字段的改变,必须先删除自增长,后增加(一张表只能有一个自增长)

    修改当前自增长已经存在的值:修改只能比当前已经有的自增长的最大值大,不能够小(小不会生效)

    Alter table 表名 auto_increment = 值;

    dad2ba554d0e33f50cf16a1a23fcf6cc.png

    f6c2ef3b8df038b4f878985bcc9a70ce.png

    a8f357270b890674b86fa9ae53261a57.png

    5358c5640c1dc9c274cd698ac0a07ff1.png

    dfa71a4397c78bb0244011ff47877890.png

    51c443cffd5e083dcd4bc52a4973b7e0.png

    删除自增长:

    自增长是字段的一个属性:可以通过modify来进行修改(保证字段没有auto_increment即可)

    Alter table 表名  modify 字段 类型;

    28ca5239189721a652ddbb285d107b36.png

    唯一键:

    一张表往往有很多字段需要具有唯一性,数据不能重复,但是一张表中只能有一个主键。

    唯一键(unique key)就可以解决表中有多个字段需要唯一性约束的问题。

    唯一键的本质和主键差不多:唯一键默认是允许自动为空,而且可以多个为空(空字段不参与唯一性比较)

    增加唯一键:

    与主键类似,有三种方案。

    0a98d483493091887c8c21626ed70341.png

    5da0f45708b55c5ef1311f39c1d24f8c.png

    89d37cfa9c2ea85ff33ba4c5b2f09865.png

    唯一键约束:

    唯一键与主键本质相同,唯一区别就是唯一键默认允许为空,而且是多个为空。(如果唯一键也要求不能为空,那么与主键就是一样的)

    b702e51a9c599b28370103dbf6fa52b1.png

    8a47c5718426e2e5ad9b0e8b0b4b9898.png

    索引:

    几乎所有的索引都是建立在字段之上。

    索引:系统根据某种算法,将已有的数据(未来可能新增的数据),单独建立一个文件,文件能够实现快速的配置数据,并且能够快速找到对应标的记录。

    索引的意义:

    1、提升查询数据的效率。

    2、约束数据的有效性(唯一性等)

    增加索引的前提条件:索引本身会产生索引文件(有时候可能毕书尽文件还大),会非常耗费磁盘空间。

    如果某个字段需要作为查询条件经常使用,那么可以使用索引(一定会想办法增加);

    如果某个字段需要进行数据的有效约束,也可以使用索引(主键、唯一键)

    80e264c1ad1a6603830ff8125267bccf.png

    4cc35b84996415eefea768c2b9a07886.png

    索引详细讲解: https://www.cnblogs.com/chenshishuo/p/5030029.html

    标签:数据类型,索引,之字段,为空,MySQL,字符串,默认值,数据,主键

    来源: https://www.cnblogs.com/soft2018/p/10879760.html

    展开全文
  • 目录列属性简单属性列属性又称为字段属性,在mysql中共有6个属性,null,默认值,列描述,主键,唯一键和自动增长null属性null属性,代表字段为空 如果对应的值为YES表示该字段可以为空值注意:在设计的时候,尽量...

    目录

    列属性

    简单属性

    列属性又称为字段属性,在mysql中共有6个属性,null,默认值,列描述,主键,唯一键和自动增长

    null属性

    null属性,代表字段为空

    7ab1a1a50977e1fb80468afec36d569c.png

    如果对应的值为YES表示该字段可以为空值

    注意:

    在设计表的时候,尽量不要让数据为空

    默认值

    default:默认值,当字段被设计的时候,如果允许默认条件下,用户不进行数据的插入,那么就可以使用事先准备好的数据来填充,通常填充的是NULL

    2bd8e8e9fdb181703ce6360df9833103.png

    测试:不给当前字段提供插入值

    e30472c51c3a761f4e19ba359f58e0af.png

    从图中可以发现age字段使用默认值18进行填充

    default关键字的另外一层使用,显示的告知字段使用默认值,在进行数据插入的时候,对字段值直接使用default

    7bd5352e9738edda833fdde4fb177253.png

    列描述

    comment:专门用于给开发人员进行维护的一个注释说明

    基本语法:

    comment 字段描述;

    1ba121ce287ee7499cf173ec61a9a3b0.png

    查看comment,必须通过查看表创建语句

    主键

    顾名思意,主要的键,primary key,在一张表中,有且只有一个字段,里面的值具有唯一性

    创建主键

    随表创建

    系统提供了两种增加主键的方式

    方案一:直接在需要当作主键的字段之后,增加primary key属性来确定主键

    500742f0c404572562b01f9cdc69a424.png

    方案二:在所有字段之后增加primary key选项,primary key(字段信息)

    fb90d91a2bcc98a83ac3ca86b9fd563a.png

    表后增加

    基本语法:

    alter table 表名 add primary key(字段);

    4c0de2eece1d3e0645dd65b2eb506720.png

    查看主键

    方案一:查看表结构

    a210c1d8d6934c347457e58bf27776d7.png

    方案二:查看表的创建语句

    1576627c63aa9f1ff5d37218b8ea42fa.png

    删除主键

    基本语法:

    alter table 表名 drop primary key;

    34b77c27e85716665ed6f281dba97f35.png

    复合主键

    案例:有一张学生选修课表,一个学生可以选修多个选修课,一个选修课也可以由多个学生来选,但是一个学生在一个选修课中只有一个成绩。

    adf003c523e98eef90c9511f0805bcb5.png

    主键一般用在中间表,学生有学生表,课程有课程表,学生与课程的中间表my_score就用复合主键

    主键约束

    主键一旦增加,那么对对应的字段有数据要求

    1、当前字段对应的数据不能为空;

    2、当前字段对应的数据不能有任何重复;

    904987f22270dff27fc1e1cdcf32f9f6.png

    数据重复后报错:

    555ee763f12dba919664cb40cf7ba41b.png

    主键分类

    主键分类采用的是主键所对应的字段业务意义分类

    业务主键:主键所在的字段,具有业务意义(学生ID,课程ID)

    逻辑主键:自然增长的整型(应用广泛)

    自动增长

    自动增长,auto_increment,当给定某个字段该属性之后,该列的数据在没有提供确定数据的时候,系统会根据之前已经存在的数据进行自动增加后填充。

    通常自动增长用于逻辑主键。

    原理

    1、系统中有维护一组数据用来保存当前使用了自动增长属性的字段,记住当前对应的数据值,再给定一个指定的步长;

    2、当用户进行数据插入的时候,如果没有给定值,系统在原始值上再增加上步长变成新的数据;

    3、自动增长的触发,给定属性的字段没有提供值;

    4、自动增长只适用于数值;

    使用自动增长

    基本语法:

    在字段之后增加一个属性auto_increment

    01f0b6a577330d050db30db3ddf601d0.png

    f3cf06e976a1cfc8d61edbd5621f4bc3.png

    修改自动增长

    1、查看自增长,自增长一旦触发之后,会自动的在表选项中增加一个选项(一张表最多只能拥有一个自增长)

    5b2a455e62b9d73750a8d108eab2ccf5.png

    2、表选项可以通过修改表结构来实现

    基本语法:

    alter table 表名 auto_increment=数值;

    37a9dbe6ffa7536c0df4dd9bb49bccc6.png

    删除自动增长

    删除自增长,就是在字段属性之后不再保留auto_increment,当用户修改自增长所在字段时,如果没有看到auto_increment属性,系统会自动清除该自增长

    d4fb6aa88d76704d85bf480dbbebfdbe.png

    初始设置

    在系统中,有一组变量用来维护自增长的初始值和步长

    a30df2bd6bff58bfd3cd1a83603cd156.png

    细节问题

    1、一张表只有一个自增长,自增长会上升到表选项中

    2、如果数据插入中没有触发自增长(给定了数据),那么自增长不会表现

    6f3c9d2d85ff4e75853caea987496c17.png

    3、自增长修改的时候,值可以较大,但是不能比当前已有的自增长字段的值小

    bd19f5c894da23ef201e95bf22bf943c.png

    唯一键

    unique key,用来保证对应的字段中的数据唯一的

    主键也可以用来保证数据唯一性,但是一张表只有一个主键

    1、唯一键在一张表中可以有多个

    2、唯一键允许字段数据为NULL,NULL可以有多个(NULL不参与比较)

    创建唯一键

    创建唯一键与创建主键非常类似

    1、直接在表字段之后增加唯一键标识符,unique [key];

    -- 唯一键

    create table my_unique1(

    id int primary key auto_increment,

    username varchar(10) unique

    )charset utf8;

    474b5edf3a4a8790d54bd25ee7157d45.png

    2、在所有的字段之后使用unique key(字段列表);

    create table my_unique2(

    id int primary key auto_increment,

    username varchar(10),

    unique key(username)

    )charset utf8;

    056728b546d1107de1d9e39e75a945e1.png

    3、在创建完表之后也可以增加唯一键;

    alter table 表名 add unique key(字段列表);

    6e8b3ac48d4a78f0babb82da6154ae40.png

    查看唯一键

    785b32825971c1910ec4b8f263865757.png

    唯一键效果:在不为空的情况下不允许重复

    8d0dc94cd569ad4c6228bc4fe1e769a8.png

    在查看表创建语句的时候,会看到与主键不同的一点:多出一个“名字”

    362e1c4fc16f50ed3403a7ebc28e1e93.png

    删除唯一键

    index:关键字,唯一键是索引的一种(提升查询效率)

    基本语法:

    alter table 表名 drop index 唯一键名字;

    78da7bed41d84eb040cf5ee75818ce50.png

    修改唯一键

    先删除后增加

    复合唯一键

    唯一键与主键一样,可以使用多个字段共同保证唯一性

    一般主键都是单一字段(逻辑主键),而其他需要唯一性的内容都是由唯一键来处理

    本文地址:https://blog.csdn.net/qq_43802023/article/details/112604273

    如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

    展开全文
  • Access 各表均由字段组成。字段属性是该字段的数据的特征及行为。字段的数据类型是最重要的属性,因为它决定该字段可存储何种数据。数据类型可能令人费解,例如,如果某个字段的数据类型是文本,那么它可存储...
  • 例如:select * from student order by 年龄 asc题目是:用SQL语句将Student表中属性sno char(8)改成varchar(20)类型MODIFY 在sql·可用来扩大文件容量,但不能收缩。你这里语法错误了。alter table Student ...
  • 数据库学习3-列属性(字段属性

    千次阅读 2021-01-14 16:07:18
    列属性又称为字段属性,在mysql中共有6个属性,null,默认值,列描述,主键,唯一键和自动增长 null属性 null属性,代表字段为空 如果对应的值为YES表示该字段可以为空值 注意: 在设计的时候,尽量不要让...
  • 数据库学生表

    千次阅读 2021-05-10 18:45:16
    文章目录学生表建立学生表:建表过程出现的错误:插入数据课程表建立课程表:插入数据选课表建立选课表插入数据建表过程出现的错误:修改基本表增加属性列:修改数据类型:增加约束条件:删除属性列:删除基本表...
  • 本文内容:数据类型数值类型整数型浮点型定点型日期时间类型字符串类型补充:显示宽度与zerofll记录长度字段属性空\不为空值:NULL、NOT NULL主键:primary key唯一键:unique key自增长:auto_increment默认值:...
  • 工作遇到了一个问题,邮件系统群发失败,后来经过排查查找到了原因原来是因为mysql的两张的关联字段竟然不一致,Amysql> desc rm_user_router;+------------+-------------+------+-----+---------+-----...
  • 【单选题】在MySQL,设有学生表Student(sno,sname,sage),各字段的含义分别是学生学号、姓名、年龄。数据类型分别为(int(4),char(20),tinyint(1)),下列插入数据语句正确是( )。【单选题】完全垄断厂商如果处于 ( )...
  • 本文实例讲述了mysql数据类型和字段属性。分享给大家供大家参考,具体如下:本文内容:数据类型数值类型整数型浮点型定点型日期时间类型字符串类型补充:显示宽度与zerofll记录长度字段属性空\不为空值:NULL、NOT ...
  • SQL笔试题:下面是学生表(student)的结构说明字段名称字段解释字段类型字段长度约束s_id学号字符10PKs_name学生姓名字符50Notnulls_age学生年龄数值3Notnulls-sex学生性别字符(男:1女:0)1Notnull下面是教师表...
  • 本文实例讲述了mysql数据类型和字段属性。分享给大家供大家参考,具体如下:本文内容:数据类型数值类型整数型浮点型定点型日期时间类型字符串类型补充:显示宽度与zerofll记录长度字段属性空\不为空值:NULL、NOT ...
  • 文章目录字段类型1、字段类型作用2、整数类型3、显示宽度4、小数类型(浮点型)5、小数类型(定点型)6、字符串类型(定长型)7、字符串类型(变长型)8、字符串类型(文本字符串)9、字符串类型(枚举)10、字符串...
  • A数据表中多个字段对应B数据的ID,现在要把B的其他字段一起查询出来一、数据:1、SPEED_DETECTION_ROAD它的 START_POINT_ID 和 END_POINT_ID字段对应下面的ID,2、SECTION_INFO:二、SQL语句:SELECTsection...
  • 前言JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述对象-关系的映射关系,并将运行期的实体[对象持久化]到数据库。Sun引入新的JPA ORM规范出于两个原因:其一,简化现有Java ...
  • 【单选题】玻璃电极使用前,需要【单选题】下列说法正确的是( )。【判断题】在完全垄断市场上,边际收益一定大于平均收益。【单选题】一个垄断企业面对的需求曲线是 ( )。...【单选题】在MySQL,设有学生表Stu...
  • 书本P79页的学生-课程数据库的Student表中的学号属性用Sno表示,但是我的认知范围内:学生学号翻译成英文单词是Student number,这个o又是哪一个英文单词的缩写呢?这引起了我的好奇。 解决方案: ——出处 .....
  • 数据库怎么创建学生信息

    千次阅读 2021-02-11 23:16:35
    大家好,我是时间财富网...2、设定标识字段id:填写第一个列名“id”,设定数据类型为“int”,同时在“列属性”位置“标识规范”设定“是标识”的值为“是”。3、设定其它字段:依次填写字段学号stuNumb...
  • 背景因为项目某些模块的数据结构设计没有严格按照某规范设计,所以只能从数据库查询数据结构,需要查询的信息如下:字段名称、数据类型、是否为空、默认值、主键、外键等等。在网上搜索了查询上述信息的方法,总结...
  • 它们有什么特性? 根据下列材料回答 题。有一15层框架结构住宅建筑工程,某施工单位承担电气施工。请依据上述背景资料 高压配电室的开关柜单排布置时,其柜后维护通道最小宽度是 ()mm。A.500B.600C. 《建设工程...
  • 和方法体的局部变量不同,方法体的局部变量是方法运行时,帮助其方法暂时地存储数据,而字段帮助对象或类型存储数据。当一个对象或类型拥有多个字段的时候,这些字段的值就能组合起来表示这个对象或类型当前的...
  • 一般的数据库表设计,表代表的都是一个实体对象。对象和对象之间都有一些关系,而这些关系在表的设计,...那么一般的设计,会在学生表中添加字段CLASS_ID,表示这个学生是哪个班级的,这是一个最简单的设计。需要...
  • 嗯,这个问题是这样理解的:1: 关系数据库(SqlServer,Oracle,Mysql,postgreSQL)并不会阻止你在一个列放入多值. 例如:你在开发一个车辆管理系统,你设计了一个列叫"型号",而填入的行内容是"宝马X1","奥迪A8","奥迪Q7...
  • 四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的表…表(一)Student (学生表)属性名数据类型可否为空含 义Snovarchar (20)否学号Snamevarchar (20)否学生姓名Ssexvarchar (20)否学生性别Sbirth...
  • Course课程 Cpno先行课 Ccredit学分 Cno课号Sc(选课表)Sno学号 Cno课号 Grade成绩Student Sno学号 Sname姓名 Ssex性别 Sage年龄 Sdept 所在系主键(primary key)是(也称关系)的一个或多个字段(也称属性),...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 48,139
精华内容 19,255
关键字:

学生表中各字段的属性