02 销售部 应伟东
03 服务部 周垠
04 财务部 陈力胜
4.数据库中什么叫视图?
答:视图(View)是从一个或多个表(或
视图)导出的表。视图与表(有时为与视图区别,也称表为基本表——Base Table)不一样,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操做时,系统根据视图的定义去操做与视图相关联的基本表。
1.若视图是由两个以上基本表导出的,则此视图不容许更新。
2.若视图的字段来自字段表达式或常数,则不容许对视图执行INSTER和UPDATE操做,但容许delete。
3.若视图的字段来自汇集函数,则此视图不容许更新。
4.若视图中含有GROUP by子句,则此视图不容许更新。
5.若视图中含有DISTINCT短语,则此视图不容许更新。.
6若视图定义中有嵌套查询,而且内层查询的FROM子句中涉及的表也是导出该视图的基本表,则此视图不容许更新。.
7.一个不容许更新的视图上定义的视图不容许更新。
视图除了进行查询记录外,也能够利用视图进行插入、更新、删除记录的操做,减小对基表中信息的直接操做,提升了数据的安全性。
在视图上使用INSERT语句添加数据时,要符合如下规则。
(1)使用INSERT语句向数据表中插入数据时,用户必须有插入数据的权利。
(2)因为视图只引用表中的部分字段,因此经过视图插入数据时只能明确指定视图中引用的字段的取值。而那些表中并未引用的字段,必须知道在没有指定取值的状况下如何填充数据,所以视图中未引用的字段必须具有下列条件之一。
该字段容许空值。
该字段设有默认值。
该字段是标识字段,可根据标识种子和标识增量自动填充数据。
该字段的数据类型为timestamp或uniqueidentifier。
(3)视图中不能包含多个字段值的组合,或者包含使用统计函数的结果。
(4)视图中不能包含DISTINCT或GROUP BY子句。
(5)若是视图中使用了WITH CHECK OPTION,那么该子句将检查插入的数据是否符合视图定义中SELECT语句所设置的条件。若是插入的数据不符合该条件,SQL Server会拒绝插入数据。
(6)不能在一个语句中对多个基础表使用数据修改语句。所以,若是要向一个引用了多个数据表的视图添加数据时,必须使用多个INSERT语句进行添加。
6.设有一个关系:DEPT(DNO,DNAME),若是要找出倒数第三个字母为W,而且至少包含4个字母的DNAME,则查询条件子句应写成WHERE DNAME LIKE__________.
7.查找 student表中全部电话号码(列名:telephone)的第一位为8或6,第三位为0的电话号码?
答:SELECT telephone FROM student WHERE telephone LIKE ‘[8,6]_0%’
8.用命令()能够查看mysql数据库中user表的表结构?
答:desc user;show create table user;
9.内链接与外联结?
答:内链接返回的结果集是两个表中全部相匹配的数据,不包含没有匹配的行。
外链接有三种:左外链接,右外链接,全外链接。外链接不只包含符合链接条件的行,还包含左表(左外链接)、右表(右外链接)或两个表(全外链接)中的全部数据行。对于没有匹配的行就用NULL值来填充。
所以,外链接中:既包含相匹配的行也包括不相匹配的行、不相匹配的行就用NULL值填充、外链接中也能够只有不匹配的行。
10.怎样设置主键?
答:最小性原则,个人理解是,单列,int型产生方便,维护方便,易比较,缺点是没啥实际意义。
惟一性原则,若是不能有同时重复的username和password,那么username和password能够组合在一块儿做为主键。
11.mysql怎样开启事务?
答:
MySQL事务控制语句
在mysql命令行的默认下,事务都是自动提交的,sql语句提交后立刻会执行commit操做。所以开启一个事务必须使用begin,start transaction,或者执行 set autocommit=0;
可使用的事务控制语句设计
start transction | begin : 显示的开启一个事务
12.有订单表orders,包含字段用户信息userid,字段产品信息productid,如下语句可以返回至少被订购过两会的productid?
答:select productid from orders group by productid having count(productid)>1
13.创建索引的原则?
答:
14.
表中删除主键为:
alert table table_test drop primary key;
表中增长主键为:
alert table table_test add primary key(id);
15.在一个表中能够创建()
答:多个普通索引,多个惟一索引,多个候选索引,一个主索
16.mysql 数据库有选课表 learn(student_id int,course_id int),字段分别表示学号和课程编号, 如今想获取每一个学生所选课程的个数信息,请问以下的 sql 语句正确的是()?
答:select student_id,count(course_id)from learn group by student_id
17.未提交读(Read Uncommitted):容许脏读,也就是可能读取到其余会话中未提交事务修改的数据提交读(Read Committed):只能读取到已经提交的数据.可重复读(Repeated Read):在同一个事务内的查询都是事务开始时刻一致的。
18.关于group by子句的做用描述正确的是?
答:
用于过滤数据的子句是where
根据题目给出的答案去作推论
首先group by的做用是用来分组,这点明确了;而后看答案
A过滤数据,这个和分组没什么关系pass
而后BC sum和avg两个函数分别是求和和求平均,这个时候分组就有存在价值了,一组数据的和,一组数据的平均数两个;
D having这个关键字自己就是用来和分组一块儿使用的,是分组后的过滤条件
GroupBy语句从英文的字面意义上理解就是“根据(by)必定的规则进行分组(Group)”。它的做用是经过必定的规则将一个数据集划分红若干个小的区域,而后针对若干个小区域进行数据处理。
19.为了提升数据的查询效率,须要在数据库中创建索引,则下列设计索引的原则描述正确的是()
答:
在频繁进行排序或分组(即进行group by 或order by操做)的列上创建索引
考虑列中指的分布,列的基数越大,索引的效果越好
不包含(在select关键字后选择列表的列上,创建索引,错,应该是where命令)
表的某个字段值得离散度越高,该字段越适合选做索引的关键字。主键字段以及惟一性约束字段适合选做索引的关键字,缘由就是这些字段的值很是离散。尤为是在主键字段建立索引时, cardinality (基数,集的势)的值就等于该表的行数。 MySQL 在处理主键约束以及惟一性约束时,考虑周全。数据库用户建立主键约束的同时, MySQL 自动建立主索引( primary index ),且索引名称为 Primary;数据库用户建立惟一性索引时, MySQL 自动建立惟一性索引( unique index ),默认状况下,索引名为惟一性索引的字段名。
二、 占用存储空间少的字段更适合选做索引的关键字。例如,与字符串相比,整数字段占用的存储空间较少,所以,较为适合选做索引关键字。指针
三、 存储空间固定的字段更适合选做索引的关键字。与 text 类型的字段相比, char 类型的字段较为适合选做索引关键字。
四、 Where 子句中常用的字段应该建立索引,分组字段或者排序字段应该建立索引,两个表的链接字段应该建立索引。
五、 更新频繁的字段不适合建立索引,不会出如今 where 子句中的字段不该该建立索引。
六、 最左前缀原则。
七、 尽可能使用前缀索引。