《习题3补充题目:数据库基础知识题目.docx》由会员分享,可在线阅读,更多相关《习题3补充题目:数据库基础知识题目.docx(8页珍藏版)》请在第一文库网上搜索。
1、本题的主要目的,1 .为数据分析打基础,这里面是基础的基础。2 .除下面内容外,还有视图,存储过程等高级用法,先不要求掌握。3 .后面还要学习维度建模。4 .所有要点,都要写例子,证明自己操作过了,也会抽查。5 .学的内容是给自己的,不是检查官的。检查官同学自己会。1 .建表语句1. 1用语名建立一个名为fjuser表要求有下面字段:Id,自增主键uid,字符串长充64(目的是将来存UUido格式的数据)-主键fjnamc,字符串 长度25PaSSWd,字符串 长度25Chinesename,字符串长度25ave_grade,数值型长度61. 2 重命名该表为fanruan user2.修改表
2、中字段,添加,删除,修改2. 1在USer表中加一个address字段 字符串类型 长度1002. 2删除user表的Chinesename 字段2. 3更改passwd的类型,长度为363 .子查询,左右连接,外连接,内连接的应用场景;并分析rhere与内联接的关系分别写几个高级的语句-自己准备的两个表,建表语句3.1 :沿用Sql查询的数据表,答案:3.2 :答案:子查询:查询类别名称为“饮料”的产品名称答案:左连结:答案:右连结:答案:应用场景(与传统的WherC进行对比):答案:4 . Insert操作一4.2、4.2.1暂不要求1 .1用己有数据表去插入到新表中 答案:4 . 2插入
3、数据到一个业务表,分拆到两个表中,用一个关联id关联。答案:(提示:先思考下,怎么做到 把信息如:如果没有方法就先做后面的,可以运用触发器,存储过 程,sequence)公司省份城市联系人电话南京帆软软件有限公司江苏省南京张三17777777777南京帆软软件有限公司江苏省南京李四18888888888江苏软件园上海市上海张五19999999999江苏软件园上海市上海李六16666666666要求:构建三个表:业务表tmp001 (公司,省份,城市,联系人,电话)公司表:ComPany(公司编号,公司,省份,城市)联系人表:PCrSonS(员工编号,公司编号,联系人,电话)执行,4. 2.1这
4、里面的uid(下面变色的字块)是自动生成的,不是写死的,自动关联上,用的函数UUid() , Sqlserver 用guid()生成)得到结果:公司表 company (ucompanyid, company_name, provice, city)15e93b6f-6d43-102f-9089-ad5cc5c899a4江苏省南京 上海市上海南京帆软软件有限公司 江苏软件园联系人表 persons (upersonid, ucompanyid, per name, tel)1777777777718888888888199999999991666666666615e93b6f-6d43-102
5、f-9089-ad5cc5c899a4 15e93b6f-6d43-102f-9089-ad5cc5c899a4 张三25e93b6f-6d43-652f-9089-ad5cc5c899a4 15c93b6f-6d43T02f-9089-ad5cc5c899a4 李四35e93b6f-6d43-662f-9089-ad5cc5c899a4张五45e93b6f-6d43-872f-9089-ad5cc5c899a4李六5. 2. 2思考:怎么把uuid,换成流水号sequence代替参考:sqlserver2008是没有sequence的,怎么模拟实现;SqlSerVer2012就有了http:
6、/Ineetrice, iteye. ComZblog/89426 http:/blog, 51Cto. ComZgghhgame51333/41210得到结果:公司表 company (ucompanyid, company_name, provice, city)2018company001南京帆软软件有限公司江苏省 南京2018company002江苏软件园上海市上海联系人表 persons (upersonid, ucompanyid, Pejname, tel)201SpcrsonOOl 201ScompanyOOl张三177777777772018person002 201Scom
7、panyOOl李四188888888882018pcrson003 2018company002张五199999999992018pcrson004 2018company002李六166666666666. DELETE 操作6.1 普通的DELETE操作,用第三方表做判断标准来删除目标表中的数据答案:5. 2级联删除(百度一下)子表对父表做级联删除,如果删除父表的数据那么与之对应子表的数据也会相应的删除 答案:6. UPDATE,6. 1更新单表中的内容答案:7. 2同时更新两个表,两个表有主键关联答案:7.触发器和事务一暂不要求7.1 在删除一个表中一条记录前,把数据转存到另外一个备份表
8、中答案:7.2 在更新了一个表中某一条记录后,把更新前的该记录存入另外一个备份表中,并在备份表中记录该更新记 录的更新日期答案:7. 3.在插入一条记录到目标表时,,同时插入到另外一张表(提示:insert操作4. 2题)答案:7. 4.事务的应用场景答案:8. 5事务的提交机制和如何回滚答案:8.外键8.1 外键与主键的区别,举例说明答案:8.2 为什么要用外键,参照完整性,外键有哪些应用答案:8. 3,建立新表COUrSe(Uid, course_name, user) 记录 表user中用户的选 课信息Uid为表COUrSe的主键course_name为课程名 USer字段信息 来源 为
9、USer表中的name 建立外键fk_course_user 使COUrSe表中的USer字段中值 参照USer表中的name 答案:9. 4,怎么让表user和表course中的数据库同时更新删除 级联更新答案:(提示,怎么配置)10. 表三个范式参考资料:http:/SUiYUan bk)g977274 三个范式实例题目9.1有了以上基础看下面文章:完成后完成该题目:实例:借书证号,读者姓名,单位,电话,书号,书名,出版社,出版社地址,借阅日期 用建表三范式来跟据以上业务建表1 .要求每表有主键2 .适当的外键约束3 .参照完整性 答案:10.扩展题 0: (sqlserver 环境) L
10、rowjumber 用于分组后的组内排序 Select row_number() over(partition by 排序依据)from 表名 2.1eft join right jion full join 内联 left join:在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录 right join:在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录 full join:在两张表进行连接查询时,会返回两张表中所有的行,即使没有匹配记录 3.with用法 子查询部分,该部分作为一个片段,会被整个查询中用到 With Aas (select/inse
11、rt/update) 4.truncate 用法 删除表中所有的行truncate表名 5 .delete from 用法 删除表中部分的行,后面可以添加Where条件 6.convert 用法 把日期转换成不同类型 ConVert (类型(长度),日期字段,格式ID) 7.cast用法 转换数据类型 SelectCast (原数据AS系统数据类型) 8.主键外键 数据格式后面添加primary key Alter表名add Constrant字段名foreign key主表关联字段references关联表字段 9.索引.表中数据量较大,每次执行查询都需要全部读一遍整个表,因此需要建立索引来
12、提高查询效率 10.A表有 id name1 A 2 B 3 C B表有 id name1 D2 F问题: update A set A.name = B.name from A left join B onA.id = B.idupdate Aset A.name = B.namefrom A, B whereA.id = B.id分别执行完,A表数据有区别吗?如果改右连接,外连接会有什么结果,为什么?第一个查询完成只更新符合条件的数据行第二个查询完成值会把右表中不符合匹配条件的行更新为空11.基它题目:11.3. Sequence用法,流水号生成11.4. Char varchar nch
13、ar nvarchar 区别与用法,效率Char是定长的,不够会设为空值补足,超出会截取(英文和数字)8000Varchar是可变长度的,设定一个最高线,输入插入多少字符就是多少(英文和数字)8000Nchar含中文4000Nvarchar 含中文 400011.5. PlsqK NaViCat 的使用。PLSQL是Orade数据库对SQL语句的扩展。在普通SQL语句的使用上增加了编程语言的特点(不能) Navicat是一款简单轻便的数据库管理工具11.6. SqI语句的执行顺序,以及怎么查看写的Sql是否最优I、FrOm (告诉程序 来自哪张表 如果是表表达式 依旧是如此顺序)2、Where
14、 (条件筛选 谓词筛选)3、Group by (分组)4、Having (分组谓词筛选)5、SeleCt (表达式)6、表达式(开窗函数聚合函数等等)7、DiStinet(去重复)8、ORDER BY9、Te)P/OFFSET-FETCH1 .系统内存2 .非阻断式运算3 .全局扫描11.7. 索引,聚集索引,非聚集索引(每张表允许不同类型的索引分别最多有几个?为什么?索引最多可以设在多 少个字段上,为什么?)聚集索引:建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇 索引的索引项顺序与表中记录的物理顺序一致非聚集索引:非聚集索引中键值的逻辑顺序与行的物理存储位置不
15、一致11.8. 代理键(数据仓库专用,区分开逻辑主键和业务主键)代理键是指在关系型数据库设计中,当资料表中的候选键都不适合当主键时,例如资料太长,或是意义层面太 多,就会用一个attribute来当代理主键,此主键可能是用流水号,来代替可辨识唯一值的主键11.9. 下面写的数据库建表原则必须要遵守吗,什么情况下用什么样的结构呢?范式一共有几个,三范式的每个 特性是指什么,用数据举例说明!第一范式是最基本的范式,数据库表中的所有字段值都是不可分解的原子值第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而 言)第三范式确保数据表中的每一列数据都和主键直接相关,而不能间接相关 数据库建表原则1 .原始单据与实体之间的关系可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊情况 下,它们可