mysql知识点(二)

1.什么叫汇集索引和非汇集索引?mysql

答:sql

汇集索引:该索引中键值的逻辑顺序决定了表中相应行的物理顺序。数据库

     汇集索引肯定表中数据的物理顺序。汇集索引相似于电话簿,后者按姓氏排列数据。因为汇集索引规定数据在表中的物理存储顺序,所以一个表只能包含一个汇集索引。但该索引能够包含多个列(组合索引),就像电话簿按姓氏和名字进行组织同样。

非汇集索引:数据存储在一个地方,索引存储在另外一个地方,索引带有指针指向数据的存储位置。安全

      非汇集索引中的项目按索引键值的顺序存储,而表中的信息按另外一种顺序存储(这能够由汇集索引规定)。对于非汇集索引,能够为在表非汇集索引中查找数据时经常使用的每一个列建立一个非汇集索引。有些书籍包含多个索引。例如,一本介绍园艺的书可能会包含一个植物通俗名称索引,和一个植物学名索引,由于这是读者查找信息的两种最经常使用的方法。
2.外键的参考完整性?
答:

雇员表是部门字段使用了外键ide

05 不存在与部门表中,因此不能插入,不然违反了参考完整性。函数

 

3.建立符合数据库三范式的表,好比:.net

答:命令行

雇员信息表: 
雇员号 雇员名 部门号 工资 
001       张山      02         2000 
010      王宏达   01         1200 
056      马林生   02         1000 
101       赵敏      04         1500 

部门信息表 
部门号 部门名 主任 
01         业务部 李建 
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__________.
答:‘_ % W _ _’
 
             
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 子句中的字段不该该建立索引。

六、   最左前缀原则。

七、   尽可能使用前缀索引。

相关文章
相关标签/搜索