版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6章MySQL基础(下)《PHP+MySQL动态网站开发》学习目标/Target掌握MySQL中字符集的设置和使用掌握MySQL中常用字段类型的使用掌握MySQL中常用数据类型的使用掌握MySQL中数据表的常用属性章节概述/Summary在数据库中,数据表用来组织和保存各种数据,它是由表结构和数据组成的。在设计表结构时,经常需要根据实际需求,选择合适的字段类型和属性。本章将围绕数据表的字符集、校对集、数据类型和属性进行详细讲解。目录/Contents01020304字符集校对集数据类型属性字符集6.16.1.1什么是字符集
先定一个小目标!熟悉什么是字符集,能够说出字符集的概念,并能列举常见的字符集6.1.1什么是字符集字符(Character):计算机中保存的各种文字和符号,包括每个国家的文字、标点符号、图形符号、数字等。字符编码:将用户输入的字符按照一定的规则转换为二进制保存。字符集(CharacterSet,CHARSET):一系列字符编码规则的组合。6.1.1什么是字符集常用的字符集:ASCII:美国信息交换标准码,一般为英文符号,占用1个字节存储。latin1:拉丁文字符集,向下兼容ASCII,占用1个字节存储。GB2312:最早一版的中文编码,已经囊括了生活中常用的汉字,占2个字节存储。GBK:中文编码标准,在GB2312基础上扩容向下兼容GB2312,占1个字节存储。Unicode:万国码或统一码,为每种语言中的每个字符设定了统一且唯一的二进制编码,满足跨语言、跨平台进行文本转换、处理的要求。UTF-8:一种可变长度字符编码,用来表示Unicode标准中的任何字符,目前通用编码规则,建议使用UTF-8字符集进行数据存储。6.1.2MySQL字符集
先定一个小目标!熟悉MySQL字符集,能够查看MySQL中可用的字符集,并能说出latin1、gbk、utf8字符集的区别6.1.2MySQL字符集查看可用字符集:SHOWCHARACTERSET;语法格式6.1.2MySQL字符集MySQL支持的字符集列表:Charset:字符集名称Defaultcollation:默认校对集Description:描述信息Maxlen:单字符的最大长度6.1.2MySQL字符集字符集单字符最大长度支持的语言latin11字节西欧字符、希腊字符等gbk2字节简体和繁体中文、日文、韩文等utf83字节世界上大部分国家的文字MySQL常用字符集:6.1.2MySQL字符集脚下留心utf8字符集与UTF-8(RFC3629)的差别:utf8一个字符最多使用3个字节,UTF-8一个字符最多使用4个字节。导致问题:UTF-8中的一些特殊字符(如emoji符号)无法在MySQL的utf8中使用。解决方法:MySQL从5.5.3版本新增了utf8mb4字符集,一个字符扩展到4个字节。如果需要支持RFC3629规范,应使用utf8mb4字符集。6.1.3字符集变量
先定一个小目标!掌握字符集变量,能够说出字符集变量的作用,能够查看或设置字符集变量的值6.1.3字符集变量查看字符集相关变量:MySQL服务器提供了与字符集相关的变量来记录客户端的字符集,保障服务器端正确识别客户端的数据。SHOWVARIABLESLIKE'character%';语法格式6.1.3字符集变量查看字符集相关变量:6.1.3字符集变量字符集变量说明:变量名说明character_set_client客户端字符集character_set_connection客户端与服务器连接使用的字符集character_set_database默认数据库使用的字符集(从5.7.6版本开始不推荐使用)character_set_filesystem文件系统字符集character_set_results将查询结果(如结果集或错误消息)返回给客户端的字符集character_set_server服务器默认字符集character_set_system服务器用来存储标识符的字符集character_sets_dir安装字符集的目录6.1.3字符集变量设置字符集变量:为了使客户端输入的字符和输出的查询结果都不出现乱码,可以设置character_set_client、character_set_connection和character_set_results变量的字符集。setcharacter_set_client=gbk;setcharacter_set_connection=gbk;setcharacter_set_results=gbk;快速设置字符集变量:使用“setnames字符集;”直接修改上述3个变量的值。如“setnamesgbk;”。set变量名=值;语法格式代码示例校对集6.26.2.1什么是校对集
先定一个小目标!熟悉什么是校对集,能够说出校对集的作用,能够查看MySQL中有哪些校对集6.2.1什么是校对集校对集:为不同字符集指定比较和排序规则,校对集依赖字符集。如latin1字符集对应校对集latin1_swedish_ci。校对集的命名规则:由“_”分割成3部分,开头是对应的字符集,中间是国家名或general,结尾是ci、cs或bin。latin1_swedish_ci命名规则代码示例ci(caseinsensitive)表示不区分大小写cs(casesensitive)表示区分大小写bin表示以二进制方式比较6.2.1什么是校对集查看校对集:查看MySQL可用的校对集。SHOWCOLLATION;语法格式6.2.1什么是校对集Collaction:校对集的名称
Default
:是否为对应字符集的默认校对集Charset
:对应的字符集
Compiled
:是否已编译
Id
:校对集IDSortlen:排序的内容需求量MySQL可用校对集:6.2.2字符集与校对集的设置
先定一个小目标!掌握字符集与校对集的设置,能够为数据库、数据表和字段设置字符集与校对集6.2.2字符集与校对集的设置数据库创建数据库时设定字符集和校对集。[DEFAULT]CHARACTERSET[=]charset_name[DEFAULT]COLLATE[=]collation_name语法格式CHARACTERSET用于指定字符集COLLATE用于指定校对集注意:若仅指定字符集,表示使用该字符集的默认校对集;若仅指定校对集,表示使用该校对集对应的字符集。6.2.2字符集与校对集的设置数据库创建数据库时设定字符集和校对集。#创建数据库,指定字符集为utf8,使用默认校对集utf8_general_ciCREATEDATABASE`mydb`CHARACTERSETutf8;#创建数据库,指定字符集为utf8,校对集为utf8_binCREATEDATABASE`mydb`CHARACTERSETutf8COLLATEutf8_bin;代码示例6.2.2字符集与校对集的设置数据表数据表的字符集与校对集在表选项中设定。[DEFAULT]CHARACTERSET[=]charset_name[DEFAULT]COLLATE[=]collation_name语法格式6.2.2字符集与校对集的设置数据表数据表的字符集与校对集在表选项中设定。#指定数据表字符集为utf8,校对集为utf8_binCREATETABLE`my_table`(`username`VARCHAR(20))CHARACTERSETutf8COLLATEutf8_bin;代码示例提示:可以将CHARACTERSET简写为CHARSET。6.2.2字符集与校对集的设置字段字段的字符集与校对集在字段属性中设定。[CHARACTERSETcharset_name][COLLATEcollation_name]语法格式6.2.2字符集与校对集的设置字段的字符集与校对集在字段属性中设定。#指定username字段的字符集为utf8,校对集为utf8_binCREATETABLE`my_table`(`username`VARCHAR(20)CHARACTERSETutf8COLLATEutf8_bin);代码示例字段6.2.3校对集的应用
先定一个小目标!掌握校对集的应用,能够通过设置校对集改变ORDERBY语句的排序规则6.2.3校对集的应用校对集的应用:创建不同的校对规则,对字段进行排序触发校对集。创建数据表。分别创建默认校对规则数据表和二进制校对规则数据表并插入数据。STEP01#创建默认校对规则表(不区分大小写)mysql>CREATETABLE`my_table1`(->`name`VARCHAR(1)->)CHARSETutf8mb4;mysql>INSERTINTO`my_table1`VALUES('B'),('A'),('b'),('a');#创建二进制校对规则表(区分大小写)mysql>CREATETABLE`my_table2`(->`name`VARCHAR(1)->)CHARSETutf8mb4COLLATEutf8mb4_bin;mysql>INSERTINTO`my_table2`VALUES('B'),('A'),('b'),('a');6.2.3校对集的应用校对集的应用:创建不同的校对规则,对字段进行排序触发校对集。排序触发校对集。对name字段进行排序。STEP02#默认校对规则表排序mysql>SELECT*FROM`my_table1`ORDERBY`name`;+------+|name|+------+|A||a||B||b|+------+#二进制校对规则表排序mysql>SELECT*FROM`my_table2`ORDERBY`name`;+------+|name|+------+|A|65|B|66|a|97|b|98+------+对应ASCII码值6.3数据类型6.3.1数字类型
先定一个小目标!掌握数字类型的使用,能够利用整数类型、浮点数类型、定点数类型保存数据6.3.1数字类型整数类型分类TINYINTSMALLINTMEDIUMINTINTBIGINT整数类型整数类型:用于保存整数。6.3.1数字类型数据类型字节数无符号数的取值范围有符号数的取值范围TINYINT10~255-128~127SMALLINT20~65535-32768~32767MEDIUMINT30~16777215-8388608~8388607INT40~4294967295-2147483648~2147483647BIGINT80~18446744073709551615-9223372036854775808~9223372036854775807提示:无符号类型存储的数据为0或者正数;有符号类型可以存储负数。使用无符号类型,需要在数据类型右边加上UNSIGNED关键字,如INTUNSIGNED。整数类型整数类型的取值范围:6.3.1数字类型mysql>CREATETABLE`my_int`(->`int_1`INT,->`int_2`INTUNSIGNED,->`int_3`TINYINT,->`int_4`TINYINTUNSIGNED->);案例:整数类型的使用代码示例创建数据表。int_1和int_3是有符号类型,int_2和int_4是无符号类型。STEP016.3.1数字类型#①插入成功测试mysql>INSERTINTO`my_int`VALUES(1000,1000,100,100);QueryOK,1rowaffected(0.00sec)#②插入失败测试mysql>INSERTINTO`my_int`VALUES(1000,-1000,100,100);ERROR1246(22003):Outofrangevalueforcolumn'int_2'atrow1案例:整数类型的使用代码示例插入记录进行测试。数值在合法取值范围内,可以成功插入数据,反之无法插入,提示错误信息。STEP02注意:-1000超出了无符号INT类型取值范围,数据插入失败,提示int_2字段超出取值范围。6.3.1数字类型注意:有符号类型符号也占用一个宽度,例如,255的显示宽度为3,-128的显示宽度为4。显示宽度显示宽度:在数据类型后用括号指定数字,表示数据类型能表示的最大值对应的数字个数。6.3.1数字类型显示宽度零填充(ZEROFILL):若数值宽度小于显示宽度,在左侧填充0。mysql>CREATETABLE`my_int2`(->`int_1`INT(3)ZEROFILL,->`int_2`TINYINT(6)ZEROFILL->);QueryOK,0rowsaffected(0.01sec)mysql>INSERTINTO`my_int2`VALUES(1234,2);QueryOK,1rowaffected(0.00sec)创建数据表并插入数据运行结果6.3.1数字类型浮点数类型浮点数:用于保存小数,分为单精度浮点数类型(FLOAT)和双精度浮点数类型(DOUBLE)。数据类型字节数负数的取值范围非负数的取值范围FOLAT4-3.402823466E+38~-1.175494351E-380和1.175494351E-38~3.402823466E+38DOUBLE8-1.7976931348623157E+308~-2.2250738585072014E-3080和2.2250738585072014E-308~1.7976931348623157E+308注意:浮点数类型的取值范围很大,但是精度并不高。FLOAT的精度为6位或7位,DOUBLE的精度大约为15位。如果超出精度,可能会导致给定的数值与实际保存的数值不一致,发生精度损失。6.3.1数字类型案例:浮点数类型的使用代码示例创建数据表并插入测试数据。插入未超出精度和超出精度的数字,插入7位数字和8位数字。STEP01#①创建表,选取FLOAT类型进行测试mysql>CREATETABLE`my_float`(`f1`FLOAT,`f2`FLOAT);#②插入未超出精度的数字mysql>INSERTINTO`my_float`VALUES(111111,1.11111);#③插入超出精度的数字mysql>INSERTINTO`my_float`VALUES(1111111,1.111111);#④插入7位数,第7位四舍五入mysql>INSERTINTO`my_float`VALUES(1111114,1.111115);#⑤插入8位数,第7位四舍五入,第8位忽略mysql>INSERTINTO`my_float`VALUES(11111149,1.1111159);6.3.1数字类型案例:浮点数类型的使用代码示例查询结果。查看浮点数类型的保存结果。STEP026.3.1数字类型定点数类型定点数类型(DECIMAL):用于保存小数,通过DECIMAL(M,D)设置位数和精度,M表示数字总位数,最大值为65,默认值为10;D表示小数点后的位数,最大值为30,默认值为0。DECIMAL(5,2)代码示例表示取值范围是-999.99~999.996.3.1数字类型案例:定点数类型的使用代码示例创建数据表。小数部分超出范围,会四舍五入,出现Datatruncated(数据截断)警告,整数超出范围,插入失败,提示Outofrangevalue(超出取值范围)错误。STEP01#①创建表,选取DECIMAL类型进行测试mysql>CREATETABLE`my_decimal`(`d1`DECIMAL(4,2),`d2`DECIMAL(4,2));#②插入的小数部分超出范围时,会四舍五入并出现警告mysql>INSERTINTO`my_decimal`VALUES(1.234,1.235);QueryOK,1rowaffected,2warnings(0.00sec)#③插入的小数部分四舍五入导致整数部分进位时,插入失败mysql>INSERTINTO`my_decimal`VALUES(99.99,99.999);Error1264(22003):Outofrangevalueforcolumn'd2'atrow16.3.1数字类型案例:定点数类型的使用代码示例查询结果。查看定点数类型的保存结果。STEP026.3.2字符串类型
先定一个小目标!掌握字符串类型的使用,能够利用CHAR类型、VARCHAR类型、TEXT类型、ENUM类型、SET类型保存数据6.3.2字符串类型CHAR类型定长型:通过CHAR(L)表示,L表示字符串最大长度,最大值是255。案例:定长型的使用代码示例#①创建表,选取CHAR类型进行测试mysql>CREATETABLE`my_char`(`c1`char(5));#②插入小于指定长度的数据mysql>INSERTINTO`my_char`VALUES('12345');#③插入大于指定长度的数据时,插入失败mysql>INSERTINTO`my_char`VALUES('123456');Error1406(22001):Datatoolongforcolumn'c1'atrow16.3.2字符串类型案例:变长型的使用代码示例VARCHAR类型变长型:通过VARCHAR(L)表示,L表示字符串最大长度,最大值不能超过MySQL单行长度限制65535。#①创建表,选取VARCHAR类型进行测试mysql>CREATETABLE`my_varchar`(`c2`varchar(5));#②插入指定长度的数据mysql>INSERTINTO`my_varchar`VALUES('12345');6.3.2字符串类型VARCHAR类型CHAR和VARCHAR占用字节对比:插入值CHAR(4)存储长度VARCHAR(4)存储长度''4字节1字节'ab'4字节3字节'abc'4字节4字节'abcd'4字节5字节注意:无论字符串长度是多少,CHAR(4)占用4个字节,VARVCHAR(4)为实际长度加1。定长型的访问效率较高,但是空间利用率不高;变长型在读取时需要进行长度计算,没有定长型的访问效率高。6.3.2字符串类型TEXT类型数据类型存储范围TINYTEXT0~28-1字节TEXT0~216-1字节MEDIUMTEXT0~224-1字节LONGTEXT0~232-1字节TEXT类型:用于保存大文本数据,保存的最大字符数量取决于字符串实际占用的字节数。6.3.2字符串类型ENUM类型ENUM类型:又称枚举类型,枚举列表最多可以有65535个值,每个值都有顺序编号,保存在记录中的是顺序编号。ENUM('值1','值2','值3',…,'值n');语法格式('值1','值2','值3',…,'值n')称为枚举列表6.3.2字符串类型案例:ENUM类型的使用代码示例#①创建表,选取ENUM类型进行测试mysql>CREATETABLE`my_enum`(`gender`ENUM('male','female'));#②插入测试数据mysql>INSERTINTO`my_enum`VALUES('male'),('female');#③插入枚举列表中没有的值测试mysql>INSERTINTO`my_enum`VALUES('m');ERROR1265(01000):Datatruncatedforcolumn'gender'atrow16.3.2字符串类型SET类型SET类型:用于保存字符串对象,列表最多有64个值,每个值都有顺序编号,实际保存的是顺序编号。SET('值1','值2','值3',…,'值n');语法格式6.3.2字符串类型案例:SET类型的使用代码示例#①创建表,选取SET类型进行测试mysql>CREATETABLE`my_set`(`hobby`SET('book','game','code'));#②插入3条测试数据mysql>INSERTINTO`my_set`VALUES('book'),('book,code');运行结果6.3.3时间日期类型
先定一个小目标!掌握时间和日期类型的使用,能够利用YEAR类型、TIMESTAMP类型、DATE类、DATETIME类型、TIME类型保存数据6.3.3时间日期类型YEAR类型案例:YEAR类型的使用代码示例mysql>CREATETABLE`my_year`(`y`YEAR); #设置y字段的数据类型为YEARmysql>INSERTINTO`my_year`VALUES(2020); #插入年份数据为2020年YEAR类型:用于表示年份,取值范围是1901~2155,使用“YYYY”来表示年,零值是0000。6.3.3时间日期类型YEAR类型指定YEAR类型值的3种格式:使用4位字符串或数字:'1901'~'2155'或1901~2155。
例如,输入'2020'或2020,插入到数据库中的值均为2020。使用2位字符串:'00'~'99''00'~'69'对应2000~2069,'70'~'99'对应1970~1999。
例如,输入'20',插入到数据库中的值为2020。使用2位数字:1~99
1~69对应2001~2069,70~99对应1970~1999的YEAR值。例如,输入20,插入到数据库中的值为2020。6.3.3时间日期类型TIMESTAMP类型案例:TIMESTAMP类型的使用代码示例#创建表,选取TIMESTAMP类型进行测试mysql>CREATETABLE`my_timestamp`(->`t1`INT,->`t2`TIMESTAMP->);QueryOK,0rowsaffected(0.01sec)#插入测试数据mysql>INSERTINTO`my_timestamp`VALUES->(1,'2020-01-0100:00:00'),->(2,'20200101000000');TIMESTAMP类型:用于表示日期和时间,占用4个字节,使用“YYYY-MM-DDHH:MM:SS”表示。运行结果6.3.3时间日期类型TIMESTAMP类型案例:代码示例#新增t3字段mysql>ALTERTABLE`my_timestamp`ADD`t3`TIMESTAMPNULL->ONUPDATECURRENT_TIMESTAMP;#更新t1的值,查看t3记录的更新时间mysql>UPDATE`my_timestamp`SET`t1`=3;自动更新修改时间:在记录被修改时,自动更新修改时间。运行结果CURRENT_TIMESTAMP表示使用系统当前日期和时间作为默认值。ONUPDATE表示当一条记录的其他字段被修改时,自动更新当前日期和时间。6.3.3时间日期类型DATE类型案例:DATE类型的使用代码示例#创建表,选取DATE类型进行测试mysql>CREATETABLE`my_date`(`d`DATE);#插入DATE类型的数据mysql>INSERTINTO`my_date`VALUES('2020-01-01');mysql>INSERTINTO`my_date`VALUES(CURRENT_DATE);mysql>INSERTINTO`my_date`VALUES(NOW());DATE类型:用于表示日期,不包含时间部分。6.3.3时间日期类型指定DATE类型值的4种格式:字符串格式:以'YYYY-MM-DD'或者'YYYYMMDD'表示。
例如,输入'2020-01-01'或'20200101',插入数据库中的日期都为2020-01-01。字符串格式:以'YY-MM-DD'或者'YYMMDD'表示。
例如,输入'20-01-01'或'200101',插入数据库中的日期都为2020-01-01。数字格式:以YY-MM-DD或者YYMMDD表示。
例如,输入20-01-01或200101,插入数据库中的日期都为2020-01-01。获取当前系统日期:使用CURRENT_DATE或者NOW()获取日期。DATE类型6.3.3时间日期类型字符串格式:以'YYYY-MM-DDHH:MM:SS'或'YYYYMMDDHHMMSS'表示,
取值范围为'1000-01-0100:00:00'~'9999-12-3123:59:59'。字符串格式:以'YY-MM-DDHH:MM:SS'或者'YYMMDDHHMMSS'表示。数字格式:以YYYYMMDDHHMMSS或者YYMMDDHHMMSS表示。获取当前系统日期和时间:使用NOW()来获取日期和时间。DATETIME类型DATETIME类型:表示日期和时间,占用8个字节,形式为'YYYY-MM-DDHH:MM:SS'。指定DATETIME类型值的4种格式:6.3.3时间日期类型DATETIME类型#创建表mysql>CREATETABLE`my_datetime`(`st`TIMESTAMP,`dt`DATETIME);#插入数据mysql>INSERTINTO`my_datetime`VALUES(NULL,NULL);mysql>INSERTINTO`my_date`VALUES(NOW(),NOW());DATETIME和TIMESTAMP区别对比:创建数据表插入数据。STEP016.3.3时间日期类型DATETIME类型#修改时区mysql>SETtime_zone='+9:00';DATETIME和TIMESTAMP区别对比:修改时区。STEP026.3.3时间日期类型DATETIME类型DATETIME和TIMESTAMP区别总结:TIMESTAMP表示从格林威治时间(1970年01月01日00时00分00秒)起至现在的总秒数DATETIME表示具体的时间日期插入NULL时:TIMESTAMP类型会自动储存当前时间,DATETIME类型储存的为NULL修改时区时:TIMESTAMP类型的字段保存的数据会更改跨时区的业务或记录自动插入和更新时间的功能,TIMESTAMP更合适6.3.3时间日期类型TIME类型TIME类型:用于表示时间值,显示形式为HH:MM:SS指定TIME类型值的3种格式:字符串或数字格式:以'HHMMSS'或者HHMMSS表示。
例如,输入'102030'或102030,插入数据库中时间为10:20:30(10时20分30秒)。字符串格式:以'DHH:MM:SS'表示。其中D表示日,取值0~34,HH值为D*24+HH。
例如,输入'210:20:30',插入数据库中的时间为58:20:30。获取当前系统日期:使用CURRENT_DATE或者NOW()获取。6.4属性6.4.1属性的作用
先定一个小目标!熟悉属性的作用,能够能够说出为什么给字段设置属性6.4.1属性的作用什么是属性:属性定义在字段类型的后面,建立对字段类型之外的其他约束。添加或删除属性语法格式#①添加属性ALTERTABLE数据表名MODIFY字段名字段类型属性;#②删除属性,直接去掉属性ALTERTABLE数据表名MODIFY字段名字段类型;6.4.2非空属性
先定一个小目标!掌握非空属性的使用,能够为字段添加非空约束6.4.2非空属性非空属性:字段的值不能为NULL。语法格式字段名数据类型NOTNULL;6.4.2非空属性案例:非空属性的使用代码示例#①创建my_not_null数据表mysql>CREATETABLE`my_not_null`(`n1`INT,`n2`INTNOTNULL);#②省略n2字段,插入失败,提示n2没有默认值mysql>INSERTINTO`my_not_null`VALUES();Error1364(HY000):Field'n2'doesn'thaveadefaultvalue#③将n2字段设为NULL,插入失败,提示n2字段不能为NULLmysql>INSERTINTO`my_not_null`VALUES(NULL,NULL);Error1048(23000):Column'n2'cannotbenull#④
省略n1字段,插入成功mysql>INSERTINTO`my_not_null`(`n2`)VALUES(20);6.4.3默认属性
先定一个小目标!掌握默认属性的使用,能够为字段设置默认值6.4.3默认属性默认属性:用于为数据中的字段指定默认值,默认值是通过DEFAULT关键字定义的。语法格式字段名数据类型DEFAULT默认值;注意:TEXT类型数据类型不支持默认属性。6.4.3默认属性案例:创建默认属性数据表代码示例#创建my_default数据表mysql>CREATETABLE`my_default`(->`name`VARCHAR(10),->`age`INTUNSIGNEDDEFAULT18);表结构信息6.4.3默认属性案例:默认属性的使用代码示例#①在插入记录时省略name和age字段mysql>INSERTINTO`my_default`VALUES();#②在插入记录时省略age字段mysql>INSERTINTO`my_default`(`name`)VALUES('a');#③在age字段中插入NULL值mysql>INSERTINTO`my_default`VALUES('b',NULL);#④在age字段中使用默认值mysql>INSERTINTO`my_default`VALUES('c',DEFAULT);查询结果6.4.4主键属性
先定一个小目标!掌握主键属性的使用,能够为数据表设置主键6.4.4主键属性主键属性:记录的唯一标识,通过PRIMARYKEY定义,每个表最多只允许含有一个主键。语法格式#列级字段名数据类型PRIMARYKEY;#表级PRIMARYKEY(字段名1,字段名2,…)6.4.4主键属性案例:创建主键属性数据表代码示例#创建my_primary数据表mysql>CREATETABLE`my_primary`(->`id`INTUNSIGNEDPRIMARYKEY,->`name`VARCHAR(20));表结构信息6.4.4主键属性案例:主键属性的使用代码示例#①插入测试记录,插入成功mysql>INSERTINTO`my_primary`VALUES(1,'Tom');#②为主键插入NULL值,插入失败mysql>INSERTINTO`my_primary`VALUES(NULL,'Jack');Error1048(23000):Column'id'cannotbenull#③为主键插入重复值,插入失败mysql>INSERTINTO`my_primary`VALUES(1,'Alex');Error1062(23000):Duplicateentry'1'forkey'PRIMARY'6.4.5主键管理
先定一个小目标!掌握主键的管理,能够为数据表添加或删除主键约束6.4.5主键管理主键管理:添加或删除主键属性。代码示例#①删除主键属性mysql>ALTERTABLE`my_primary`DROPPRIMARYKEY;QueryOK,1rowaffected(0.00sec)Record:1Duplicates:0Warnings:0#②
添加主键属性mysql>ALTERTABLE`my_primary`ADDPRIMARYKEY(`id`);QueryOK,0rowsaffected(0.00sec)Record:0Duplicates:0Warnings:06.4.6自增属性
先定一个小目标!掌握自动增长属性的使用,能够通过AUTO_INCREMENT实现自动增长6.4.6自增属性自增属性:自动生成主键的值,通过AUTO_INCREMENT设置。语法格式字段名数据类型AUTO_INCREMENT;6.4.6自增属性使用自增属性注意事项:一个表中只能有一个自动增长字段,该字段的数据类型是整型,且必须定义为键,如主键PRIMARYKEY、唯一键UNIQUEKEY。插入NULL、0、DEFAULT或插入时省略该字段,则使用自动增长值;若插入的是一个具体值,则不会使用自动增长值。自动增长值从1开始自增,每次加1。若插入的值大于自动增长的值,则下次插入的自动增长值会自动使用最大值加1;若插入的值小于自动增长值,则不会对自动增长值产生影响。使用DELETE删除记录时,自动增长值不会减小或填补空缺。6.4.6自增属性案例:创建自增属性数据表代码示例#创建my_auto数据表,为id字段添加自动增长属性mysql>CREATETABLE`my_auto`(->`id`INTUNSIGNEDPRIMARYKEYAUTO_INCREMENT,->`name`VARCHAR(20));表结构信息6.4.6自增属性案例:自增属性的使用代码示例#①插入时省略id字段,将会使用自动增长值mysql>INSERTINTO`my_auto`(`name`)VALUES('Tom');#②为id字段插入NULL,将会使用自动增长值mysql>INSERTINTO`my_auto`VALUES(NULL,'Jack');#③为id字段插入具体值mysql>INSERTINTO`my_auto`VALUES(5,'Alex');#④为id字段插入0,使用自动增长值mysql>INSERTINTO`my_auto`VALUES(0,'Andy');查询结果6.4.7自增管理
先定一个小目标!掌握自动增长管理,能够修改自动增长值、删除自动增长,以
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 三相电路知识
- 二零二五年度茶叶原料供应与加工合作合同3篇
- 二零二五年版权质押合同详细规定3篇
- 专业化消防分包服务2024年协议范本版
- 2024煤炭行业风险评估委托采购服务协议3篇
- 二零二五年度离婚抚养权变更与子女全面发展保障协议范本3篇
- 二零二五年度环保节能设备租赁与改造服务合同3篇
- 2024版餐饮业经营权租赁协议版B版
- 2024版消防保卫协议书
- 专用车型租赁服务协议2024版版B版
- 封条模板完整
- 土壤肥料学:第一章-肥料学概述课件
- 焊接工艺简述课件
- 社工入户探访操作手册
- 古树名木保护建设项目可行性研究报告
- 一年级科学上册教学工作总结
- 医院体检报告范本
- 广东省韶关市各县区乡镇行政村村庄村名明细
- 无土栽培与植物工厂化课件
- 新概念英语第一册单词汇总打印版
- 刀模检测、保养记录
评论
0/150
提交评论