




已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章数据库和表,2.1命令行方式创建数据库和表,2.2界面创建数据库和表,2.3有关表结构,2.1命令行方式创建数据库和表,2.1.1创建数据库1.创建数据库使用CREATEDATABASE或CREATESCHEMA命令可以创建数据库。语法格式:CREATEDATABASE|SCHEMAIFNOTEXISTSdb_namecreate_specification,create_specification.其中create_specification:DEFAULTCHARACTERSETcharset_name|DEFAULTCOLLATEcollation_name,说明:语句中“”内为可选项。db_name:数据库名。在文件系统中,MySQL的数据存储区将以目录方式表示MySQL数据库。因此,命令中的数据库名字必须符合操作系统文件夹命名规则。值得注意的是:在MySQL中是不区分大小写的。IFNOTEXISTS:在建数据库前进行判断,只有该数据库目前尚不存在时才执行CREATEDATABASE操作。用此选项可以避免出现数据库已经存在而再新建的错误。DEFAULT:指定默认值。CHARACTERSET:指定数据库字符集(Charset),charset_name为字符集名称。,2.1命令行方式创建数据库和表,2.1.1创建数据库,COLLATE:指定字符集的校对规则,collation_name为校对规则名称(字符集和校对规则的概念见附录D)。【例2.1】创建一个名为test1的数据库。MySQL不允许两个数据库使用相同的名字,使用IFNOTEXISTS从句可以不显示错误信息,例如:为了表达问题简单,在以后的示例中单独描述命令而不需要界面结果时,在命令前省略“mysql”提示符。,2.1.1创建数据库,创建了数据库之后使用USE命令可指定当前数据库。语法格式:USEdb_name;说明:这个语句也可以用来从一个数据库“跳转”到另一个数据库,在用CREATEDATABASE语句创建了数据库之后,该数据库不会自动成为当前数据库,需要用这条USE语句来指定。注意:在MySQL中,每一条SQL语句都以“;”作为结束标志。,2.修改数据库数据库创建后,如果需要修改数据库的参数,可以使用ALTERDATABASE命令。语法格式:ALTERDATABASE|SCHEMAdb_namealter_specification,alter_specification.其中alter_specification:DEFAULTCHARACTERSETcharset_name|DEFAULTCOLLATEcollation_name,2.1.1创建数据库,说明:ALTERDATABASE用于更改数据库的全局特性,这些特性储存在数据库目录中的db.opt文件中。用户必须有对数据库进行修改的权限,才可以使用ALTERDATABASE。修改数据库的选项与创建数据库相同,功能不再重复说明。如果语句中数据库名称忽略,则修改当前(默认)数据库。,2.1.1创建数据库,【例2.2】修改数据库mydata(假设mydata已经创建)的默认字符集和校对规则。ALTERDATABASEmydataDEFAULTCHARACTERSETgb2312DEFAULTCOLLATEgb2312_chinese_ci;3.删除数据库已经创建的数据库需要删除,使用DROPDATABASE命令。语法格式:DROPDATABASEIFEXISTSdb_name其中,db_name是要删除的数据库名。可以使用IFEXISTS子句以避免删除不存在的数据库时出现的MySQL错误信息。示例如下:,2.1.1创建数据库,注意:这个命令必须小心使用,因为它将删除指定的整个数据库,该数据库的所有表(包括其中的数据)也将永久删除。,2.1.1创建数据库,2.1.2创建表,创建表使用CREATETABLE命令。语法格式:CREATETEMPORARYTABLEIFNOTEXISTStbl_name(column_definition,.|index_definition)table_optionselect_statement;,2.1.2创建表,说明:TEMPORARY:该关键字表示用CREATE命令新建的表为临时表。不加该关键字创建的表通常称为持久表,在数据库中持久表一旦创建将一直存在,多个用户或者多个应用程序可以同时使用持久表。有时候需要临时存放数据,例如,临时存储复杂的SELECT语句的结果。此后,可能要重复地使用这个结果,但这个结果又不需要永久保存。这时,可以使用临时表。用户可以像操作持久表一样操作临时表。只不过临时表的生命周期较短,而且只能对创建它的用户可见,当断开与该数据库的连接时,MySQL会自动删除它们。,2.1.2创建表,IFNOTEXISTS:在建表前加上一个判断,只有该表目前尚不存在时才执行CREATETABLE操作。用此选项可以避免出现表已经存在无法再新建的错误。table_name:要创建的表的表名。该表名必须符合标志符规则,如果有MySQL保留字必须用单引号括起来。column_definition:列定义,包括列名、数据类型,可能还有一个空值声明和一个完整性约束。index_definition:表索引项定义,主要定义表的索引、主键、外键等,具体定义将在第5章中讨论。,2.1.2创建表,table_option:用于描述表的选项。select_statement:可以在CREATETABLE语句的末尾添加一个SELECT语句,在一个表的基础上创建表。列定义column_definition格式如下:col_nametypeNOTNULL|NULLDEFAULTdefault_valueAUTO_INCREMENTUNIQUEKEY|PRIMARYKEYCOMMENTstringreference_definition,2.1.2创建表,说明:col_name:表中列的名字。列名必须符合标志符规则,长度不能超过64个字符,而且在表中要唯一。如果有MySQL保留字必须用单引号括起来。type:列的数据类型,有的数据类型需要指明长度n,并用括号括起,MySQL支持的数据类型在附录C中介绍。AUTO_INCREMENT:设置自增属性,只有整型列才能设置此属性。当插入NULL值或0到一个AUTO_INCREMENT列中时,列被设置为value+1,在这里value是此前表中该列的最大值。AUTO_INCREMENT顺序从1开始。每个表只能有一个AUTO_INCREMENT列,并且它必须被索引。,2.1.2创建表,NOTNULL|NULL:指定该列是否允许为空。如果不指定,则默认为NULL。DEFAULTdefault_value:为列指定默认值,默认值必须为一个常数。其中,BLOB和TEXT列不能被赋予默认值。如果没有为列指定默认值,MySQL自动地分配一个。如果列可以取NULL值,默认值就是NULL。如果列被声明为NOTNULL,默认值取决于列类型:(1)对于没有声明AUTO_INCREMENT属性的数字类型,默认值是0。对于一个AUTO_INCREMENT列,默认值是在顺序中的下一个值。,2.1.2创建表,(2)对于除TIMESTAMP以外的日期和时间类型,默认值是该类型适当的“零”值。对于表中第一个TIMESTAMP列,默认值是当前的日期和时间。(3)对于除ENUM的字符串类型,默认值是空字符串。对于ENUM,默认值是第一个枚举值。UNIQUEKEY|PRIMARYKEY:PRIMARYKEY和UNIQUEKEY都表示字段中的值是唯一的。PRIMARYKEY表示设置为主键,一个表只能定义一个主键,主键一定要为NOTNULL。COMMENTstring:对于列的描述,string是描述的内容。reference_definition:指定参照的表和列,具体定义在第5章参照完整性中介绍。type定义如下:,2.1.2创建表,说明:以上是各种数据类型的定义格式,值得注意的是,在字符数据类型和数值数据类型之后,MySQL允许指定一个数据类型选项用来改变数据类型的属性和功能。对于字符数据类型,MySQL支持两种数据类型选项:CHARACTERSET和COLLATE。如果要区分字符的大小写情况,可以在字符类型后面加上BINGARY。对于除BIT以外的数值数据类型,MySQL允许添加一个或多个数据类型选项。UNSIGNED:不允许负值。ZEROFILL:当插入的值长度小于字段设定的长度时,剩余部分用0填补。spatial_type是空间类型数据,本书不讨论。表选项table_option定义如下:,2.1.2创建表,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/*对关键字的更新*/,2.1.2创建表,|ROW_FORMAT=DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT/*定义各行应如何储存*/|UNION=(tbl_name,tbl_name.)/*表示哪个表应该合并*/|INSERT_METHOD=NO|FIRST|LAST/*是否执行INSERT语句*/|DATADIRECTORY=absolutepathtodirectory/*数据文件的路径*/|INDEXDIRECTORY=absolutepathtodirectory/*索引的路径*/,2.1.2创建表,说明:表中大多数的选项涉及的是表数据如何存储及存储在何处。多数情况下,不必指定表选项。ENGINE选项是定义表的存储引擎,具体在附录E中介绍。【例2.3】设已经创建了数据库XSCJ,在该数据库中创建学生情况表XS。USEXSCJCREATETABLEXS(学号char(6)NOTNULLPRIMARYKEY,姓名char(8)NOTNULL,专业名char(10)NOTNULL,性别tinyint(1)NOTNULLDEFAULT1,出生日期dateNOTNULL,总学分tinyintNULL,照片blobNULL,备注textNULL)ENGINE=InnoDB;,2.1.2创建表,在上面的例子里,每个字段都包含附加约束或修饰符,这些可以用来增加对所输入数据的约束。“PRIMARYKEY”表示将“学号”字段定义为主键。“DEFAULT1”表示“性别”的默认值为1。“ENGINE=InnoDB”表示采用的存储引擎是InnoDB,InnoDB是MySQL在Windows平台默认的存储引擎,所以“ENGINE=InnoDB”可以省略。,2.1.2创建表,2.修改表ALTERTABLE用于更改原有表的结构。例如,可以增加或删减列,创建或取消索引,更改原有列的类型,重新命名列或表,还可以更改表的评注和表的类型。语法格式:ALTERIGNORETABLEtbl_namealter_specification,alter_specification.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|列或表中索引项的增、删、改(见第5章索引部分),2.1.2创建表,说明:tb1_name:表名。col_name:指定的列名。IGNORE:是MySQL相对于标准SQL的扩展。若在修改后的新表中存在重复关键字,如果没有指定IGNORE,当重复关键字错误发生时操作失败。如果指定了IGNORE,则对于有重复关键字的行只使用第一行,其他有冲突的行被删除。column_definition:定义列的数据类型和属性,具体内容在CREATETABLE的语法中已做说明。ADDCOLUMN子句:向表中增加新列。例如,在表t1中增加新的一列a:ALTERTABLEt1ADDCOLUMNaTINYINTNULL;FIRST|AFTERcol_name:表示在某列的前或后添加,不指定则添加到最后。ALTERCOLUMN子句:修改表中指定列的默认值。CHANGECOLUMN子句:修改列的名称。重命名时,需给定旧的和新的列名称和列当前的类型,old_col_name表示旧的列名。column_definition中定义新的列名和当前数据类型。例如,要把一个INTEGER列的名称从a变更到b:ALTERTABLEt1CHANGEabINTEGER;MODIFYCOLUMN子句:修改指定列的类型。例如,要把一个列的数据类型改为BIGINT:ALTERTABLEt1MODIFYbBIGINTNOTNULL;,2.1.2创建表,注意,若表中该列所存数据的数据类型与将要修改的列的类型冲突,则发生错误。例如,原来CHAR类型的列要修改成INT类型,而原来列值中有字符型数据“a”,则无法修改。DROP子句:从表中删除列或约束。RENAME子句:修改该表的表名,new_tbl_name是新表名。例如,将表a改名为b:ALTERTABLEaRENAMETOb;ORDERBY子句:用于在创建新表时,让各行按一定的顺序排列。注意,在插入和删除后,表不会仍保持此顺序。在对表进行了大的改动后,通过使用此选项,可以提高查询效率。在有些情况下,如果表按列排序,对于MySQL来说,排序可能会更简单。ORDERBY子句会在第4章中具体介绍。table_options:修改表选项,具体定义与CREATETABLE语句中一样。可以在一个ALTERTABLE语句里写入多个ADD、ALTER、DROP和CHANGE子句,中间用逗号分开。这是MySQL相对于标准SQL的扩展。在标准SQL中,每个ALTERTABLE语句中每个子句只允许使用一次。【例2.4】假设已经在数据库XSCJ中创建了表XS,表中存在“姓名”列。在表XS中增加“奖学金等级”列并将表中的“姓名”列删除。USEXSCJALTERTABLEXSADD奖学金等级tinyintNULL,DROPCOLUMN姓名;,2.1.2创建表,3.修改表名除了上面的ALTERTABLE命令,还可以直接用RENAMETABLE语句来更改表的名字。语法格式:RENAMETABLEtbl_nameTOnew_tbl_name,tbl_name2TOnew_tbl_name2.说明:tbl_name:修改之前的表名。new_tbl_name:修改之后的表名。【例2.5】假设数据库XSCJ中已经存在table1表和table2表,将table1表重命名为student,table2表重命名为course。USEXSCJRENAMETABLEtable1TOstudent,table2TOcourse;,2.1.2创建表,4.复制表语法格式:CREATETEMPORARYTABLEIFNOTEXISTStbl_name()LIKEold_tbl_name|AS(select_statement);说明:使用LIKE关键字创建一个与old_table_name表相同结构的新表,列名、数据类型、空指定和索引也将复制,但是表的内容不会复制,因此创建的新表是一个空表。使用AS关键字可以复制表的内容,但索引和完整性约束是不会复制的。select_statement表示一个表达式,例如,可以是一条SELECT语句。【例2.6】假设数据库XSCJ中有一个表test,创建test表的一个名为test_copy1的拷贝。CREATETABLEtest_copy1LIKEtest;【例2.7】创建表test的一个名为test_copy2的拷贝,并且复制其内容。CREATETABLEtest_copy2AS(SELECT*FROMtest);,2.1.2创建表,5.删除表需要删除一个表时可以使用DROPTABLE语句。语法格式:DROPTEMPORARYTABLEIFEXISTStbl_name,tbl_name.其中,tb1_name:要被删除的表名。IFEXISTS:避免要删除的表不存在时出现错误信息。这个命令将表的描述、表的完整性约束、索引及和表相关的权限等都全部删除。【例2.8】删除表test。USEXSCJDROPTABLEIFEXISTStest;,2.2界面创建数据库和表,2.2.1创建数据库创建数据库的必须是系统管理员,或者拥有用户级别的CREATE权限。在安装MySQL的过程中已经创建了系统管理员,名为root,假设密码为123456。【例2.9】创建一个学生成绩数据库XSCJ(假设在这之前已经将XSCJ数据库删除)。创建XSCJ数据库步骤如下:(1)“开始”“程序”“MySQL”“MySQLAdministrator”,如图2.1所示,Serverhost为“localhost”,Username为“root”,输入密码,单击“OK”按钮。,图2.1登录MySQLAdministrator,2.2.1创建数据库,(2)在MySQLAdministrator窗口中展开“Catalogs”选项栏,出现如图2.2所示的数据库列表,在任意一个数据库名上右击鼠标,选择“CreateNewSchema”子选项。,图2.2选择创建数据库选项,2.2.1创建数据库,(3)出现如图2.3所示的界面,输入需要创建的数据库名XSCJ,单击“OK”按钮。这样数据库XSCJ就创建成功了。,图2.3输入数据库名,2.2.2创建、删除和修改表,在数据库中创建表,步骤如下:(1)在MySQLAdministrator窗口中展开Catalogs选项栏,鼠标单击指定数据库,在右方的快捷选单上选择“CreateNewTable”子菜单,或者直接单击“CreateTable”按钮。(2)在弹出的“MySQLTableEditor”窗口中填写表名(这里以KC表为例),在“ColumnsandIndices”子选框中填写表的各列及数据类型,如图2.4所示,单击“ApplyChanges”按钮。在弹出的“ConfirmTableEditor”对话框中单击“Execute”按钮,即可成功创建表KC。说明:创建完KC表之后,使用相同的方法创建附录A中的其他两个表,这里不再重复说明。,2.2.2创建、删除和修改,图2.4创建表的各列及数据类型,2.2.2创建、删除和修改,如果要在数据库中删除表,步骤如下:(1)MySQLAdministrator窗口中展开“Catalogs”栏,选择数据库(如XSCJ),在右方的快捷选单上右击KC表,选择“DropTable”子菜单,如图2.5所示。(2)在弹出对话框中单击“DropTable(s)”按钮,即删除了表KC,这里不做删除。,图2.5删除表,2.2.2创建、删除和修改,在数据库中修改表,步骤如下:(1)在MySQLAdministrator窗口中展开Catalogs,选择数据库(如XSCJ),在右方的快捷选单上右击KC表,选择“EditTable”子菜单,图略。(2)在弹出的“MySQLTableEditor”窗口中即可修改表的结构,修改完后单击“ApplyChanges
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025福建漳州市第五中学秋季编外教师招聘8人笔试备考题库及答案解析
- 2025年皮肤科皮肤病变辨识能力检测答案及解析
- 能源项目施工管理配合和协调措施
- 2025年感染科院内感染控制与防控知识考核答案及解析
- 通信基站建设质量通病预防措施
- (2025年标准)山推股份协议书
- 2025年整形外科常见手术并发症案例分析答案及解析
- 2025年肿瘤学肺癌化疗护理考试答案及解析
- 2025年新所有股权赠与协议书
- 2025年明珠集团抵债协议书
- 孩子抵抗力提升的方法与技巧
- 教学副校长给教师培训课件
- 一级建造师之一建矿业工程实务高分复习资料
- 交通信号设施施工技术交底
- 关于股权性质与货币市场的思考
- 市场监管个人纪律作风整顿心得体会
- 育婴员理论模拟考试试题及答案
- 小学数学教师业务水平考试试题
- 安全文明施工措施费支付申请表实用文档
- 杨式85式太极拳现用图解
- YY/T 1095-2015肌电生物反馈仪
评论
0/150
提交评论