资源描述
数据库操作基础,目标,关系数据库SQL语言,关系数据库的结构,一、关系数据模型的数据结构,在用户观点下,关系模型中数据的逻辑结构是一张二维表,它由行和列组成。,属性,元组,关系数据模型的数据结构,关系(Relation)一个关系对应通常说的一张表元组(Tuple)表中的一行即为一个元组属性(Attribute)表中的一列即为一个属性,给每一个属性起一个名称即属性名主码(Key)表中的某个属性组,它可以唯一确定一个元组,关系数据模型的数据结构,域(Domain)属性的取值范围分量元组中的一个属性值关系模式对关系的描述关系名(属性1,属性2,属性n),关系数据模型的数据结构,关系必须是规范化的,满足一定的规范条件最基本的规范条件:关系的每一个分量必须是一个不可分的数据项,不允许表中还有表,图1.27一个工资表(表中有表)实例,关系数据模型的数据结构(术语对比),二、关系数据模型的操纵与完整性约束,数据操作是集合操作,操作对象和操作结果都是关系,都必须满足关系的完整性约束条件查询插入删除更新数据操作是集合操作,操作对象和操作结果都是关系,即若干元组的集合存取路径对用户隐蔽,用户只要指出“干什么”,不必详细说明“怎么干”,关系数据模型的操纵与完整性约束,关系的完整性约束条件实体完整性规定基本关系的所有主属性都不能取空值参照完整性规定基本关系的主属性可以取空值或目标关系中已经存在的值用户定义的完整性针对某一具体关系数据库的约束条件反映某一具体应用所涉及的数据必须满足的语义要求,三、关系数据模型的存储结构,实体及实体间的联系都用表来表示表以文件形式存储有的DBMS一个表对应一个操作系统文件有的DBMS自己设计文件结构,SQL语言,SQL特点SQL分类Mysql中常用的数据类型SQL主要语句语法从Mysql中导入和导出数据库结构,SQL概述,SQLStructuredQueryLanguageSQL的功能:数据定义、操纵和控制。SQL的特点综合统一高度非过程化面向集合的操作方式语言简捷,易学易用SQL语言支持关系数据库三级模式结构,1SQL(StructuredQueryLanguage)全称是结构化查询语言,是一种关系数据库语言,提供数据的定义、查询、更新和控制等功能。功能强大、能够完成各种数据库操作。2SQL语言不是一个应用程序开发语言,它只提供对数据库的操作能力,不能完成屏幕控制、菜单管理、报表生成等功能。,SQL特点,SQL特点,3有利于各种数据库之间交换数据、有利于程序的移植、有利于实现程序和数据间的独立性;有利于实施标准化;4书写简单、易学易用。,1、数据定义语言(DDL:DataDefinitionLanguage)创建、修改或删除数据库中各种对象,包括表、视图、索引等。2、查询语言(QL:QueryLanguage)按照指定的组合、条件表达式或排序检索已存在的数据库中的数据,但并不改变数据库中数据。,SQL分类,SQL分类,3、数据操纵语言(DML:DataManipulationLanguage)对已经存在的数据库进行记录的插入、删除、修改等操作,4、数据控制语言(DCL:DataControlLanguage)用来授予或收回访问数据库的某种特权、控制数据操纵事务的发生时间及效果、对数据库进行监视注意:在书写各种SQL命令时,命令中所涉及的标点符号,如括号、逗号、分号、圆点(英文句号)等都应是英文半角,如果写成中文全角符号,则会在执行命令时出错。,SQL分类,数值类型(例如:Float,Int,Double等)日期和时间类型(例如:Date,Time等)String类型(例如:Char,Varchar),Mysql常用的数据类型:,MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEGER(Integer)、SMALLINT(SmallInt)等以及近似数值数据类型(FLOAT、REAL和DOUBLEPRECISION)。关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。,数值类型,数值类型,作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT,Float(同义real)小(单精度)浮点数。允许的值是-3.402823466E+38到-1.175494351E-38、0和1.175494351E-38到3.402823466E+38。Double(同义DOUBLEPRECISION)普通大小(双精度)浮点数。允许的值是-1.7976931348623157E+308到-2.2250738585072014E-308、0和2.2250738585072014E-308到1.7976931348623157E+308,日期和时间类型,表示时间值的DATE和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR。每个时间类型有一个有效值范围和一个“零”值,当指定不合法的MySQL不能表示的值时使用“零”值。TIMESTAMP类型有专有的自动更新特性,日期和时间类型-Date,DATE日期。支持的范围为1000-01-01到9999-12-31。MySQL以YYYY-MM-DD格式显示DATE值,但允许使用字符串或数字为DATE列分配值。,日期和时间类型-Datetime,DATETIME日期和时间的组合。支持的范围是1000-01-0100:00:00到9999-12-3123:59:59。MySQL以YYYY-MM-DDHH:MM:SS格式显示DATETIME值,但允许使用字符串或数字为DATETIME列分配值。,日期和时间类型-TIMESTAMP,TIMESTAMP(Mysql4.1版本以下)时间戳。范围是1970-01-0100:00:00到2037年。TIMESTAMP列用于INSERT或UPDATE操作时记录日期和时间。如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间。也可以通过分配一个NULL值,将TIMESTAMP列设置为当前的日期和时间。TIMESTAMP值返回后显示为YYYY-MM-DDHH:MM:SS格式的字符串,显示宽度固定为19个字符,日期和时间类型-Time,TIME时间。范围是-838:59:59到838:59:59。MySQL以HH:MM:SS格式显示TIME值,但允许使用字符串或数字为TIME列分配值。,日期和时间类型-Year,YEAR(2|4)两位或四位格式的年。默认是四位格式。在四位格式中,允许的值是1901到2155和0000。在两位格式中,允许的值是70到69,表示从1970年到2069年。MySQL以YYYY格式显示YEAR值,但允许使用字符串或数字为YEAR列分配值。,日期和时间类型,下面的表显示了各类“零”值的格式。请注意如果启用NO_ZERO_DATESQL模式,使用这些值会产生警告。,可以使用任何常见格式指定DATETIME、DATE和TIMESTAMP值:,YYYY-MM-DDHH:MM:SS或YY-MM-DDHH:MM:SS格式的字符串。允许“不严格”语法:任何标点符都可以用做日期部分或时间部分之间的间割符。例如,98-12-3111:30:45、98.12.3111+30+45、98/12/3111*30*45和981231113045是等价的。,YYYYMMDDHHMMSS或YYMMDDHHMMSS格式的没有间割符的字符串,假定字符串对于日期类型是有意义的。例如,19970523091528和970523091528被解释为1997-05-2309:15:28,但971122129015是不合法的(它有一个没有意义的分钟部分),将变为0000-00-0000:00:00。,YYYYMMDDHHMMSS或YYMMDDHHMMSS格式的数字,假定数字对于日期类型是有意义的。例如,19830905132800和830905132800被解释为1983-09-0513:28:00。,YYYY-MM-DD或YY-MM-DD格式的字符串。这里也允许使用“不严格的”语法。例如,98-12-31、98.12.31、98/12/31和981231是等价的。YYYYMMDD或YYMMDD格式的没有间割符的字符串,假定字符串对于日期类型是有意义的。例如,19970523和970523被解释为1997-05-23,但971332是不合法的(它有一个没有意义的月和日部分),将变为0000-00-00。,YYYYMMDD或YYMMDD格式的数字,假定数字对于日期类型是有意义的。例如,19830905和830905被解释为1983-09-05。,无效DATETIME、DATE或者TIMESTAMP值被转换为相应类型的“零”值(0000-00-0000:00:00、0000-00-00或者00000000000000)。,String类型,字符串类型指CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM等。,String类型-CHAR和VARCHAR类型,CHAR和VARCHAR类型声明的长度表示你想要保存的最大字符数。例如,CHAR(30)可以占用30个字符。CHAR列的长度固定为创建表时声明的长度。最大长度为8,000个字符。VARCHAR列中的值为可变长字符串。最大长度为8,000个字符。,下面的表显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR之间的差别:,String类型-BINARY和VARBINARY类型,BINARY和VARBINARY类类似于CHAR和VARCHAR它们包含字节字符串而不是字符字符串。BINARY和VARBINARY允许的最大长度一样,如同CHAR和VARCHAR,不同的是BINARY和VARBINARY的长度是字节长度而不是字符长度。,String类型-BLOB和TEXT类型,可以容纳可变数量的数据BLOB列被视为二进制字符串(字节字符串)。TEXT列被视为非二进制字符串(字符字符串)。Text数据类型的列可用于存储大于8kb的字符。,String类型-ENUM类型,ENUM是一个字符串对象,其值来自表创建时在列规定中显式枚举的一列值。ENUM(value1,value2,.)ENUM列最多可以有65,535个截然不同的值.,SQL主要语句语法,MySQL实用工具语句(DESCRIBE语法,USE语法)数据定义语句(创建,删除,修改数据库和表)数据操作语句(对表中的数据进行查询,修改,删除等操作),SQL主要语句语法MySQL实用工具语句,USE语法USEdb_nameUSEdb_name语句可以通告MySQL把db_name数据库作为默认(当前)数据库使用,用于后续语句。该数据库保持为默认数据库,直到语段的结尾,或者直到发布一个不同的USE语句:,SQL主要语句语法MySQL实用工具语句,DESCRIBE语法(获取有关列的信息)DESCRIBE可以提供有关表中各列的信息。也就是创建的表中各个属性的名字和数据类型等信息,SQL主要语句语法数据定义语句,CREATEDATABASE语法CREATETABLE语法CREATEINDEX语法DROPDATABASE语法DROPINDEX语法DROPTABLE语法ALTERTABLE语法RENAMETABLE语法,CREATEDATABASE语法,CREATEDATABASE用于创建数据库,并进行命名。如果要使用CREATEDATABASE,您需要获得数据库CREATE权限。CREATEDATABASEdb_name;例如:CreateDatabasetest1;,CREATETABLE语法,CREATETABLE(列级完整性约束条件,列级完整性约束条件),);,注:列级约束条件有两个任选项:NOTNULL,表示此列不得置NULL,在其后还可加UNIQUE任选项,表示列值不得重复。DEFAULT,当此列的值空缺时,填以缺省值例如:stu_idchar(20)notnull,pricefloatdefault0.01,表级完整性约束条件,主关键字约束指定表的一列或几列的组合的值在表中具有惟一性,即能惟一地指定一行记录。每个表中只能有一列被指定为主关键字,且IMAGE和TEXT类型的列不能被指定为主关键字,也不允许指定主关键字列有NULL属性。语法如下:,CONSTRAINTconstraint_namePRIMARYKEY(column_name)各参数说明如下:constraint_name指定约束的名称约束的名称。在数据库中应是惟一的。如果不指定,则系统会自动生成一个约束名。column_name指定组成主关键字的列名。,Createtableproducts(idchar(20)notnull,pricefloatdefault0.01,constraintprimarykey(id);,定义外关键字约束的语法如下:CONSTRAINTFOREIGNKEY(column_name1,column_name2,column_name16)REFERENCESref_table(ref_column1,ref_column2,ref_column16)ONDELETECASCADE|NOACTIONONUPDATECASCADE|NOACTION各参数说明如下:REFERENCES指定要建立关联的表的信息。ref_table指定要建立关联的表的名称。ref_column指定要建立关联的表中的相关列的名称。,ONDELETENOACTION|RESTRICT指定在删除表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情况下,NOACTION是缺省值.RESTRICT:凡被基表引用的主键,不得删除ONUPDATENOACTION|RESTRICT指定在更新表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情况下,NOACTION是缺省值.RESTRICT:凡被基表引用的主键,不得删除,createtableorders(order_idchar(8),p_idchar(8),p_namechar(10),constraintprimarykey(order_id),foreignkey(p_id)referencesproducts(p_id)ondeleterestrict);,CREATEINDEX语法,CREATEINDEXindex_nameONtbl_name(index_col_name,.)注:index_col_name:col_name(length)ASC|DESC例如:createindexstu_ageonstudent(ageASC);,DROPDATABASE语法,DROPDATABASEdb_name删除已有的数据库,DROPINDEX语法,DROPINDEXindex_nameONtbl_name删除表中的索引,DROPTABLE语法,删除表Droptabletable_name;,ALTERTABLE语法,ALTERTABLEtbl_nameADD完整性约束DROP列名MODIFY;ADD用于增加新列和新的完整性约束条件,新增加的列一律为空值。(index,primarykey等)DROP用于删除指定的完整性约束条件(index,primarykey,foreignkey)MODIFY用于修改原有的列定义,Altertableaaaddprimarykey(id);Altertableaaaddnamechar(20);Altertableaadropprimarykey;Altertableaamodifyidchar(100)notnull;,RENAMETABLE语法,RENAMETABLEtbl_nameTOnew_tbl_name对一个表重命名例如:renametablestudenttoss;,创建,删除视图(view),创建视图语法:Createview(,.)Asselect查询语句删除视图语法:Dropviewmysqldump-d-u用户名-p数据库名backup-file.sql(这个名字任意起)Enterpassword:*(数据库的密码)三、导入:mysqlbinpathmysql-u用户名-p创建好的空的数据库名backup-file.sql(你想导入的数据库文件)Enterpassword:*,
展开阅读全文