您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 第5章关系数据库标准语言SQL.
第5章关系数据库标准语言SQLSQL语言特点⒈简洁易学。SQL语言非常简洁,只有9个语句⒉高度集成化。SQL是一种一体化的语言。集定义、查询、操纵控制于一身。⒊高度智能化。SQL是一种高度非过程化的语言⒋高度灵活化。SQL可以直接以命令方式交互使用。5.1数据定义功能•5.1.1表的定义基本格式:CREATETABLE/DBF表名(字段名类型(宽度,小数位,字段名类型(宽度,小数位),……)除此之外的参数:主索引:PRIMARYKEY定义域完整性:CHECK出错信息提示:ERROR默认值:DEFAULT表之间的联系:FOREIGNKEY和REFERENCES长表名:NAME长表名建立自由表:FREE字段是否允许为空值:NULL建立候选索引:UNIQUE从数组建立表:FROMARRAY数组名•例:•Createdatabasecampust•Createtablestudent(身份证号c(15)primarykey,学生姓名c(12),性别l,出生日期d,身高n(5,1)check身高100error‘身高必须大于100’)•注意:•⒈用命令创建表一定注意保存位置,设置默认目录,否则在表名前加路径。•⒉各种数据类型字母的表示。5.1.2表结构的修改⒈格式1ALTERTABLE表名ADD/ALTER/COLUMN字段名类型(宽度,小数位)[NULL/NOTNULL][CHECK…ERROR….DEFAULT…][PRIMARYKEY/UNIQUE][REFERENCES表2TAG表1]功能:实现添加新字段(用ADD)、修改已有字段(ALTER)。5.1.2表结构的修改⒉格式2格式2:ALTERTABLE表名alter[column]字段名[NULL/NOTNULL][SETDEFAULT默认值][SETCHECK规则ERROR信息][DROPDEFAULT][DROPCHECK]功能:实现修改指定字段的DEFAULT、CHECK规则,但不影响原有表中的数据。5.1.2表结构的修改⒊格式3ALTERTABLE表名DROP[column]字段名[SETCHECK规则ERROR信息][DROPCHECK][renamecolumn旧字段名to新字段名][addunique候选关键字名tag候选标志名]….⒉功能:对前两个功能的补充和增强,可以修改字段名(RENAME)、删除字段(DROP),并且对有效性规则可以进行增加(ADD)、删除(DROP)等。5.1.3表的删除•语法:•DROPTABLE表名•功能:直接从磁盘上或当前打开的数据库中删除表所对应的.dbf文件。•注意:删除表最好打开相应的数据库,再执行删除操作。否则以后会出现错误。5.1.4视图的定义•语法•Createview视图名asselect查询语句•功能•按照select查询语句创建一个指定视图名的本地视图或远程视图。•注意•视图是一个虚表,只能放在数据库中才能存在。5.2数据操作功能•5.2.1插入记录格式1Insertinto表名[(列名1,列名2….)]values(值1,值2……)格式2Insertinto表名fromarray数组名/frommemvar说明:给表中所有字段赋值时,可省略列名1,列名2…Fromarray数组名:从指定的数组中插入记录值Frommemvar:从指定的内存变量中插入记录值5.2.2更新记录格式:Update表名;Set字段名=表达式,字段名=表达式….Where条件功能对没有打开的数据库表进行更新,必须加入参数数据库名。例:Updatestudentset身高=身高+10where学生姓名=‘许建仁’Updatecjset总分=语文+数学+计算机,平均分=总分/35.2.3删除记录•语法•DELETEFROM表名WHERE条件•功能:给满足条件的记录加下删除标记。如要彻底删除还需用命令pack•例:•Deletefromstudentwhere身高1605.3数据查询功能查询语句select----from----where基本格式SELECT列名表(逗号隔开)FROM基本表或视图序列[WHERE条件表达式](行条件子句)[GROUPBY列名序列](分组子句)[HAVING组条件表达式](组条件子句)[ORDERBY列名[ASC|DESC]..](排序子句)5.3.1简单查询•⒈无条件查询•Select[all/distinct]选项1as显示列名,….•Distinct去掉查询结果中的重复记录•例:从学生表student中查出所有记录•Select*fromstudent•例:从选课表中查出所有选课的学生•Selectdistinct姓名from选课表•⒉条件查询•例:查身高大于170的学生姓名•Select学生姓名fromstudentwhere身高1705.3.2联接查询•1.内部联接•语法:•From表名1innerjoin表名2on联接条件•功能:此联接是默认联接。在查询结果中包含满足连接条件的全部记录。•例•Selectstudent.身份证号码,学生姓名,语文成绩fromstudentinnerjoinscoresonstudent.身份证号码=score.身份证号码5.3.2联接查询•⒉外部联接•(1)左联接•From表名1leftjoin表名2on联接条件•功能:在查询结果中包含表1的全部记录,和表2中满足连接条件的全部记录,不满足条件的用null表示。•例•Selectstudent.身份证号码,学生姓名,语文成绩fromstudentleftjoinscoresonstudent.身份证号码=score.身份证号码5.3.2联接查询•⒉外部联接•(2)右联接•From表名1rightjoin表名2on联接条件•功能:在查询结果中包含表2的全部记录,和表1中满足连接条件的全部记录,不满足条件的用null表示。•例•Selectstudent.身份证号码,学生姓名,语文成绩fromstudentrightjoinscoresonstudent.身份证号码=score.身份证号码5.3.2联接查询•⒉外部联接•(3)完全联接•From表名1fulljoin表名2on联接条件•功能:在查询结果中先进行右联接,再进行左联接,不满足条件的用null表示。•例•Selectstudent.身份证号码,学生姓名,语文成绩fromstudentfulljoinscoresonstudent.身份证号码=score.身份证号码5.3.3带特殊运算符的条件查询•⒈IN运算符•Select身份证号码,学生姓名fromstudentwhere性别in(.t.)•⒉like运算符•通配符%代表0个或多个字符,_代表一个字符•Select身份证号码,学生姓名fromstudentwhere学生姓名like’林%’•⒊between…..and运算符•Select身份证号码,学生姓名fromstudentwhere身高between160and1705.3.3带特殊运算符的条件查询•⒋and运算符•Select身份证号码,学生姓名fromstudentwhere性别in(.t.)and身高between160and170•⒌not运算符•Select身份证号码,学生姓名fromstudentwherenot性别•⒍isnull运算符•Select身份证号码,学生姓名fromstudentwhere性别isnull5.3.4排序查询•Orderby排序列名asc/desc,排序列名asc/desc•例•select*fromscoreorderby语文,数学desc•Selectstudent.身份证号码,学生姓名,score.*fromstudent,scorewherestudent.身份证号码=score.身份证号码orderby语文asc•先联接再排序。5.3.5分组与计算查询•⒈分组查询•Groupby分组选项名[having条件]•分组中常用函数•计数count,求和sum,求平均值avg,最大值max,最小值min,四舍五入round•例selectiif(性别,‘男’,‘女’)as性别,count(*)as人数•fromstudentgroupby性别•⒉计算查询•selectiif(性别,‘男’,‘女’)as性别,avg(身高)as平均身高•fromstudentgroupby性别5.3.6别名与多表查询•语法:•From表名1别名1,表名2别名2…•例•Selectstu.学生姓名,cj.*fromstudentstu,scorecj;•Wherestu.身份证号码=cj.身份证号码5.3.7嵌套查询•例•Selectstu.学生姓名,cj.语文;•Fromstudentstu,scorecj;•Wherestu.身份证号码in(select身份证号码fromscorewhere语文=90andstu.身份证号码=cj.身份证号码5.3.8查询结果处理•语法•Intoarray数组名/cursor临时表名/dbf表名/table表名/tofile文件名[additive]/toprinter[prompt]•例•Selectstu.学生姓名,cj.*fromstudentstu,scorecj;•Wherestu.身份证号码=cj.身份证号码intoarraysco1
本文标题:第5章关系数据库标准语言SQL.
链接地址:https://www.777doc.com/doc-3811789 .html