已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章数据库和表,3.1数据库的创建和使用,1,复习,1、创建数据库CREATEDATABASE|SCHEMAIFNOTEXISTSdb_namecreate_specification,create_specification.2.修改数据库ALTERDATABASE|SCHEMAdb_namealter_specification,alter_specification.3.删除数据库DROPDATABASEIFEXISTSdb_name4、选择数据库USEdb_name;5.查看数据库SHOWDATABASES;6.查看当前使用数据库selectdatabase()查看当前使用数据库,创建数据库test1,2,3.2创建表,1、创建表创建表使用CREATETABLE命令。语法格式:CREATETEMPORARYTABLEIFNOTEXISTStbl_name(column_definition,.|index_definition)table_optionselect_statement;说明:TEMPORARY:该关键字表示用CREATE命令新建的表为临时表。不加该关键字创建的表通常称为持久表,在数据库中持久表一旦创建将一直存在,多个用户或者多个应用程序可以同时使用持久表。有时候需要临时存放数据,例如,临时存储复杂的SELECT语句的结果。此后,可能要重复地使用这个结果,但这个结果又不需要永久保存。这时,可以使用临时表。用户可以像操作持久表一样操作临时表。只不过临时表的生命周期较短,而且只能对创建它的用户可见,当断开与该数据库的连接时,MySQL会自动删除它们。IFNOTEXISTS:在建表前加上一个判断,只有该表目前尚不存在时才执行CREATETABLE操作。用此选项可以避免出现表已经存在无法再新建的错误。table_name:要创建的表的表名。该表名必须符合标志符规则,如果有MySQL保留字必须用单引号括起来。,3,3.2创建表,4,3.2创建表,1、创建表创建表使用CREATETABLE命令。语法格式:CREATETEMPORARYTABLEIFNOTEXISTStbl_name(column_definition,.|index_definition)table_option;说明:column_definition:列定义,包括列名、数据类型,可能还有一个空值声明和一个完整性约束。index_definition:表索引项定义,主要定义表的索引、主键、外键table_option:用于描述表的选项。,5,3.2创建表,列定义column_definition格式如下:col_nametypeNOTNULL|NULLDEFAULTdefault_valueAUTO_INCREMENTUNIQUEKEY|PRIMARYKEYCOMMENTstringreference_definition说明:col_name:表中列的名字。列名必须符合标志符规则,长度不能超过64个字符,而且在表中要唯一。如果有MySQL保留字必须用单引号括起来。type:列的数据类型,有的数据类型需要指明长度n,并用括号括起NOTNULL|NULL:指定该列是否允许为空。如果不指定,则默认为NULL。AUTO_INCREMENT:设置自增属性,只有整型列才能设置此属性。当插入NULL值或0到一个AUTO_INCREMENT列中时,列被设置为value+1,在这里value是此前表中该列的最大值。AUTO_INCREMENT顺序从1开始。每个表只能有一个AUTO_INCREMENT列,并且它必须被索引。,6,3.2创建表,列定义column_definition格式如下:col_nametypeNOTNULL|NULLDEFAULTdefault_valueAUTO_INCREMENTUNIQUEKEY|PRIMARYKEYCOMMENTstringreference_definition说明:DEFAULTdefault_value:为列指定默认值,默认值必须为一个常数。其中,BLOB和TEXT列不能被赋予默认值。如果没有为列指定默认值,MySQL自动地分配一个。如果列可以取NULL值,默认值就是NULL。如果列被声明为NOTNULL,默认值取决于列类型:(1)对于没有声明AUTO_INCREMENT属性的数字类型,默认值是0。对于一个AUTO_INCREMENT列,默认值是在顺序中的下一个值。(2)对于除TIMESTAMP以外的日期和时间类型,默认值是该类型适当的“零”值。对于表中第一个TIMESTAMP列,默认值是当前的日期和时间。(3)对于除ENUM的字符串类型,默认值是空字符串。对于ENUM,默认值是第一个枚举值。UNIQUEKEY|PRIMARYKEY:PRIMARYKEY和UNIQUEKEY都表示字段中的值是唯一的。PRIMARYKEY表示设置为主键,一个表只能定义一个主键,主键一定要为NOTNULL。COMMENTstring:对于列的描述,string是描述的内容。reference_definition:指定参照的表和列,具体定义在第8章参照完整性中介绍。,7,3.2创建表,表选项table_option定义如下ENGINE|TYPE=engine_name/*存储引擎*/|AUTO_INCREMENT=value/*初始值*/|AVG_ROW_LENGTH=value/*表的平均行长度*/|DEFAULTCHARACTERSETcharset_nameCOLLATEcollation_name/*默认字符集和校对*/|CHECKSUM=0|1/*设置为1表示求校验和*/|COMMENT=string/*注释*/|CONNECTION=connect_string/*连接字符串*/|MAX_ROWS=value/*行的最大数*/|MIN_ROWS=value/*列的最小数*/|PACK_KEYS=0|1|DEFAULT|PASSWORD=string/*对.frm文件加密*/|DELAY_KEY_WRITE=0|1/*对关键字的更新*/|ROW_FORMAT=DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT/*定义各行应如何储存*/|UNION=(tbl_name,tbl_name.)/*表示哪个表应该合并*/|INSERT_METHOD=NO|FIRST|LAST/*是否执行INSERT语句*/|DATADIRECTORY=absolutepathtodirectory/*数据文件的路径*/|INDEXDIRECTORY=absolutepathtodirectory/*索引的路径*/,8,3.2.1数据类型,MySQL支持多种数据类型,数值类型、日期/时间类型和字符串(字符)类型不区分大小写。(1)数值数据类型MySQL支持所有标准SQL数值数据类型。MySQL支持5个主要整数类型是TINYINT,SMALLINT,MEDIUMINT,INT和BIGINT。这些类型在很大程度上是相同的,只有它们存储的值的大小是不相同的。MySQL支持3个浮点类型是FLOAT、DOUBLE和DECIMAL类型。FLOAT数值类型用于表示单精度浮点数值,而DOUBLE数值类型用于表示双精度浮点数值。关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。,9,3.2.1数据类型,(1)数值数据类型,10,3.2.1数据类型,(2)字符串数据类型,11,3.2.1数据类型,(2)字符串数据类型TEXT和BLOB类型对于字段长度要求超过255个的情况下,MySQL提供了TEXT和BLOB两种类型。根据存储数据的大小,它们都有不同的子类型。这些大型的数据用于存储文本块或图像、声音文件等二进制数据类型。,12,3.2.1数据类型,(3)日期和时间数据类型,13,3.2.1数据类型,(4)复合类型MySQL还支持两种复合数据类型ENUM和SET,它们扩展了SQL规范。虽然这些类型在技术上是字符串类型,但是可以被视为不同的数据类型。一个ENUM类型只允许从一个集合中取得一个值;而SET类型允许从一个集合中取得任意多个值。,14,3.2.2NULL值,空值NULL通常表示未知、不可用或将在以后添加的数据。若一个列允许为空值,则向表中输入记录值时可不为该列给出具体值;而一个列若不允许为空值,则在输入时必须给出该列的具体值。注意:表的关键字不允许为空值。空值不能与数值数据0或字符类型的空字符混为一谈。任意两个空值都不相等。,15,3.2.1创建表-例,【例3】创建学生成绩数据库(xscj)中,并在其中创建一个学生情况表,表名xs。输入以下命令:CREATEDATABSExscj;usexscjcreatetablexs(学号char(6)notnullprimarykey,姓名char(8)notnull,专业名char(10)null,性别tinyint(1)notnulldefault1,出生日期datenotnull,总学分tinyint(1)null,照片blobnull,备注textnull),16,用showtables命令显示xscj数据库中产生了学生(xs)表,用describexs/descxs/showcolumnsfromxs命令可以显示xs表的结构。如图所示。,3.2.1创建表-例,17,练习,1、建立db_school数据库2、在数据库中建立一张学生表tb_student3、按照P36表3.1建立学生表,其中字符型用varchar,前三列非空,籍贯默认为汉。学号为主键。4、在mysql内查看表结构,18,3.2创建表,2.查看表SHOWTABLES用于查看表,显示表的名称。SHOWCOLUMNSFROMtbl_name或DESCtbl_name显示表的结构ShowCreatetable可以查看建立表时的语句以及引擎、字符集,19,3.2创建表,3.复制表语法格式:CREATETEMPORARYTABLEIFNOTEXISTStbl_name()LIKEold_tbl_name|AS(select_statement);说明:使用LIKE关键字创建一个与old_table_name表相同结构的新表,列名、数据类型、空指定和索引也将复制,但是表的内容不会复制,因此创建的新表是一个空表。使用AS关键字可以复制表的内容,但索引和完整性约束是不会复制的。select_statement表示一个表达式,例如,可以是一条SELECT语句。,20,3.2创建表,练习:复制tb_student为tb_stu,并查看,21,3.2创建表,4.修改表ALTERTABLE用于更改原有表的结构。例如,可以增加或删减列,创建或取消索引,更改原有列的类型,重新命名列或表,还可以更改表的评注和表的类型。语法格式:ALTERIGNORETABLEtbl_namealter_specification,alter_specification.,22,3.2创建表,4.修改表alter_specification:ADDCOLUMNcolumn_definitionFIRST|AFTERcol_name/*添加列*/|ALTERCOLUMNcol_nameSETDEFAULTliteral|DROPDEFAULT/*修改默认值*/|CHANGECOLUMNold_col_namecolumn_definition/*对列重命名*/FIRST|AFTERcol_name|MODIFYCOLUMNcolumn_definitionFIRST|AFTERcol_name/*修改列类型*/|DROPCOLUMNcol_name/*删除列*/|RENAMETOnew_tbl_name/*重命名该表*/|ORDERBYcol_name/*排序*/|CONVERTTOCHARACTERSETcharset_nameCOLLATEcollation_name/*将字符集转换为二进制*/|DEFAULTCHARACTERSETcharset_nameCOLLATEcollation_name/*修改默认字符集*/|table_options|列或表中索引项的增、删、改,23,3.2创建表,练习:在tb_student中增加一列StudentID,varchar(20),非空。并查看,24,ADDCOLUMN子句:向表中增加新列。指定位置:FIRST/AFTER.例如,在表t1中增加新的一列a在b列之后:ALTERTABLEt1ADDCOLUMNaTINYINTNULLAFTERb;,3.2创建表,练习:在tb_student中增加一列年级grade,varchar(4),非空,默认值2017,放在出生日日期列之后。并查看,25,说明:修改字段FIRST|AFTERcol_name:表示在某列的前或后添加,不指定则添加到最后。ALTERCOLUMN子句:修改表中指定列的默认值。CHANGECOLUMN子句:修改列的名称和数据类型。重命名时,需给定旧的和新的列名称和列当前的类型,old_col_name表示旧的列名。column_definition中定义新的列名和当前数据类型。例如,要把一个INTEGER列的名称从a变更到b:ALTERTABLEt1CHANGEabINTEGER;MODIFYCOLUMN子句:修改指定列的类型。例如,要把一个列的数据类型改为BIGINT:ALTERTABLEt1MODIFYbBIGINTNOTNULL;,3.2创建表,26,CHANGECOLUMN子句:修改列的名称和数据类型。(注意必须为完整列定义,即不论是否修改数据类型都必须加上列名和数据类型说明)例如,将Birthday重命名为Age,改为int类型,并添加默认值18.ALTERTABLE,3.2创建表,请自行练习,27,MODIFYCOLUMN子句:修改指定列的类型。例如,将StudentID的数据类型改为char(20),并移动到StudentName之后。,3.2创建表,请自行练习,28,ALTERCOLUMN子句:修改表中指定列的默认值:SETDEFAULT/DROPDEFAULT例如,将Grade的默认值改为2017,3.2创建表,请
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 税法原理章节试题及答案网盘链接
- 病房医院感染管理制度
- 06第六章-利率及其决定
- 国际政治概论练习题及答案分享
- 呼吸系统主管考试题目及答案
- 医药行业洁净室安全管理培训
- 京东客服入驻考试题目与答案
- 2026年全科主治医师考试备考冲刺模拟试卷含答案解析
- 海运船员考试题及答案分享
- 2025年企业股权合规试题库及答案
- 2026学年湖北省武汉市四年级数学期末深度自测重点试卷(详细参考解析)详细答案和解析
- 2026年甘肃金麟锂电新材料有限公司招聘78人笔试备考题库及答案详解
- 公司车辆使用管理制度文档模板
- 2026年全国导游基础知识真题卷及答案(共二十套)
- 2026年中央安全生产考核巡查组问题通报(2026年更新)
- 2026年uom民用无人机考试试题及答案
- 航天禁(限)用工艺目录(2021版)-发文稿(公开)
- GB/T 41819-2022信息安全技术人脸识别数据安全要求
- 中医学课件气血津液
- 宝钢高炉炼铁工艺介绍201607
- 《车辆工程专业导论》全套教学课件
评论
0/150
提交评论