2022年SQL数据分析笔试 .pdf
1、如何创建表、修改表、删除表?Create table 表名Alter table 表名Drop table 表名2、存储过程的优点是什么?存储过程的优点:1)提高性能2)减轻网络拥塞3)一致性较好4)改善安全机制3、什么是触发器?触发器有哪几种?触发器有什么优点?一个触发器是由T-SQL语句集组成的代码块,在响应某些动作时激活该语句集有 insert,delete,update 触发器它防止了对数据的不正确、未授权的和不一致的改变4、常见的几种约束有哪些?分别代表什么意思?如何使用?主键约束,外键约束,检查约束,唯一约束,默认约束约束:在Create table 或 alter table 时加约束(1)主键:PRIMARY KEY(主键字段)保证了实体完整性,一个表只有一个主键,但一个主键可有包含多个字段,主键字段不能为空(2)唯一:UNIQUE(约束字段)保证了实体完整性,一个表只有多个唯一约束,一个唯一约束可有包含多个字段(3)外键:FOREIGN KEY(外键字段)REFERENCES 主键表(主键字段)保证了引用完整性,一个表可以有多个外键(4)检查:CHECK(检查表达式)保证了域完整性,一个表中可以有多个检查性约束(5)默认值:DEFAULT(默认值的表达式或NULL)for 字段名保证了域完整性,一个表可以有多个默认值约束,但是一个字段只有一个默认值5、什么是数据库的安全性?数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。6、简要说明事务的原子性。事务的所有操作必须完成,否则事务将被撤消。也就是说,事务是作为一个整体的单位处理,不可以被分割7、事务中的提交和回滚是什么意思?事务中的提交(COMMIT)是提交事务的所有操作。具体说就是将事务中所有对数据库的更新写回到磁盘上的物理数据库中去,事务正常结束。事务中的回滚(ROLLBACK)是数据库滚回到事务开始时的状态。具体地说就是,在事务运行的过程中发生了某种故障,事务不能继续执行,系统将事务中对数据库的所有已完成的更新操作全部撤消,使数据库回滚到事务开始时的状态。8、sql 优化具体指的是什么?a)升级硬件名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 4 页 -b)根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。c)扩大服务器的内存d)增加服务器CPU个数e)对于大的数据库不要设置数据库自动增长,它会降低服务器的性能f)在查询 Select 语句中用 Where 字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O 资源,加重了网络的负担降低性能。如果表很大,在表扫描的期间将表锁住,禁止其他的联接访问表,后果严重。g)查询时不要返回不需要的行、列h)用 select top 100/10 Percent 来限制用户返回的行数或者SET ROWCOUNT来限制操作的行i)在 IN 后面值的列表中,将出现最频繁的值放在最前面,出现得最少的放在最后面,减少判断的次数j)一般在 GROUP BY 个 HAVING字句之前就能剔除多余的行,所以尽量不要用它们来做剔除行的工作。他们的执行顺序应该如下最优:i.select 的 Where 字句选择所有合适的行,Group By用来分组个统计行,Having字句用来剔除多余的分组。这样Group By 个 Having 的开销小,查询快.对于大的数据行进行分组和Having 十分消耗资源。如果 Group BY的目的不包括计算,只是分组,那么用Distinct 更快k)一次更新多条记录比分多次更新每次一条快,就是说批处理好9、死锁产生的原因及四个必要条件产生死锁的原因主要是:(1)因为系统资源不足。(2)进程运行推进的顺序不合适。(3)资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。产生死锁的四个必要条件:(1)互斥条件:一个资源每次只能被一个进程使用。(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。死锁的解除与预防:理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。此外,也要防止进程在处于等待状态的情况下占用资源。因此,对资源的分配要给予合理的规划。10、为什么要创建索引呢?这是因为,创建索引可以大大提高系统的性能。第一,通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。第二,可以大大加快数据的检索速度,这也是创建索引的最主要的原因。第三,可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 4 页 -第四,在使用分组和排序子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。第五,通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。虽然,索引有许多优点,但是,为表中的每一个列都增加索引,是非常不明智的。这是因为,增加索引也有许多不利的一个方面。第一,创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。第二,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。第三,当对表中的数据进行增加、删除和修改的时候,索引也要动态的维护,这样就降低了数据的维护速度。11 内连接和外连接的区别是什么?1)内连接就是左表和右表相同的数据2)外连接分为:左外连接、右外连接、全外连接a)左外连接就是以左表为准,去匹配右表,左表有多少条数据,结果就是多少条数据b)右外连接就是与左外连接反之,以右表为准,去匹配左表,右表有多少条数据,结果就是多少条数据c)全外连接数据条数不一定,相当与是左外连接和右外连接的综合设计题1、学生表:Student 学生表(学号,姓名,性别,年龄,组织部门)Course 课程表(编号,课程名称)Sc 选课表(学号,课程编号,成绩)表结构如下:(1).写一个 SQL语句,查询选修了计算机原理的学生学号和姓名(2).写一个 SQL语句,查询周星驰同学选修了的课程名字(3).写一个 SQL语句,查询选修了5 门课程的学生学号和姓名select sno,sname from student where sno in(select sno from sc where cno=(select cno from course where cname=计算机原理 )(2)select cname from course where cno in(select cno 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 4 页 -from sc where sno=(select sno from student where sname=周星驰 )(3)select sno,sname From student Where sno in(select sno from sc group by sno having count(sno)=5)2、用 SELECT 语句删除表中字段B=b的重复数据。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 4 页 -