1、左连接和右连接的区别?
含义不同;使用方法不同;运行空值不同。 1.含义不同
左连接:只要左边表中有记录,数据就能检索出来,而右边有的记录必要在左边表中有的记录才能被检索出来。
右连接:右连接是只要右边表中有记录,数据就能检索出来。
2.使用方法不同
右连接与左连接相反,左连接A LEFT JOIN B,连接查询的数据,在A中必须有,在B中可以有可以没有。右连接A INNER JOIN B,在A中也有,在B中也有的数据才能查询出来。
3.运行空值不同
左连接是已左边表中的数据为基准,若左表有数据右表没有数据,则显示左表中的数据右表中的数据显示为空。右联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。
2、数据库优化的几种方式
第一个方法:选取最适用的字段属性。MySQL可以支持大数据量的存取,但是数据库中的表越小,在上面执行的查询就越快。所以可以将表中的字段宽度设置的尽可能小。图示为此方法的例子。
第二个方法:使用连接来代替子查询(Sub-Queries)。可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中
第三个方法:使用联合(UNION)来代替手动创建的临时表。MySQL可以把需要使用临时表的两条或者更多的select查询合并到一个查询中。
第四个方法:事务。不是所有的数据库操作都可以只用一条或少数几条SQL语句就可以完成的。更多的时候是需要用到一系列的语句来完成某种工作。可以保持数据库中数据的完整性和一致性
第五个方法:锁定表。由于在事务执行的过程中,数据库将会被锁定,因此其他的用户请求只能暂时等待直到该事务结束。有些情况下我们可以通过锁定表的放大来获得更好的性能。
第六个方法:使用外键。锁定表的方法可以保护数据的完整性,但是却不能保证数据的关联性。此时我们可以使用外键。
3、写出一条SQL语句:取出Student表中第31到第40条数据(以自动增长的ID作为主键,主键可能不连续)
Select Top(10) * from Student where id not in(Select Top(30) id from Student)
4、事务的四大特性?
原子性: 事务是一个整体的工作单元,事务对数据库所做的操作要么全部执行,要么全部取消,如果某条语句执行失败,那么所有语句全部回滚;
一致性:完成事务时,所有数据必须一致;
隔离性:由事务所做的修改必须与其他事务修改隔离;
持久性:提交事务后,对数据库所做的修改就会永久性的保存下来。
5、SQL Server是什么类型数据库,保证数据库的完整性都有什么?
常见的数据类型:网状模型、层次模型、关系模型
SQL Server是一种关系型数据库;
保证数据库完整性:实体完整性、区域完整性、参照完整性
6、SQL Server数据库中的基本约束及其作用?
主键约束:确定表中的标识列,必须是非空唯一,一个表只有一个主键;
唯一约束:确定这个字段的数据必须是唯一的,如果添加内容,内容不能重复;
外键约束:确定表与表之间的联系;
检查约束:确定这个字段中的数据特性;
非空约束:确定这个字段的数据不能为空;
默认约束:确定这个字段数据的默认值
7、叙述索引、视图、触发器、事务、存储过程?
索引:索引像书的目录,它提供了数据的逻辑,合理划分索引能够大大提高数据库性能;
视图:视图是一种虚拟表,可对虚拟表进行增改查操作;
触发器:触发器是一种特殊类型的存储过程,主要通过事件触发而被执行;
事务:事务是指一个工作单元,它包含了一组数据操作命令,这组命令要么执行,要么不执行;
存储过程:是指一组编译的SQL语句
8、SQL Server的聚合函数都有哪些?
Min():最小值
Max():最大值
Sum():总和
Avg():平均值
Count():总数
distinct():去重
Having():重复记录
9、什么是SQL注入?应如何防止?
利用SQL关键字对网站进行攻击;
防止:①通过存储过程执行所有查询;
②限制表单或查询字符串输入的长度
10、数据库访问量很大时,如何做优化?
SQL查询语句优化:
- 使用索引
- 任何地方都不要使用SELECT * FROM语句
- 数据库分表、分区、分库