sql测试题

1.为什么需要存储引擎

答:由于不同用户对数据的容量,访问速度,数据安全性有着不同的要求。为了满足不同用户的需求,mysql数据库采用多种存储引擎来进行数据的存储

 

 

 

2.MyISAM和InnoDB的区别

答:MyISAM无需事务,空间小,以查询访问为主;InnoDB多删除、更新操作,安全性高,事务处理及并发控制

 

 

 

3.InnoDB引擎以及MyISAM生成的文件,以及各自的含义

答:InnoDB类型的文件:

*.frm:表结构定义文件,存放表的元数据,与存储引擎无关

*.ibd:数据文件,存放表中的数据

MyISAM类型的文件:

*.frm:表结构定义文件

*.MYD:数据文件

*.MYI:索引文件

 

 

 

4.模拟向teacher表中同时新增3条数据,两种方式

答:01. insert into teacher (‘id’,‘name’) values (3,‘小黑3’);

insert into teacher (‘id’,‘name’) values (4,‘小黑4’);

insert into teacher (‘id’,‘name’) values (5,‘小黑5’);

02. insert into teacher (‘id’,‘name’) values(3,‘小黑3’),(4,‘小黑4’),(5,‘小黑5’);

 

 

 

5.修改teacher表中id=5的sex和address

答:update `teacher` set sex='女',address='五道口' where id=5;

 

 

 

6.delete ,drop ,truncate的区别

答:1)delete后面可以拼接where条件,删除指定的行

  truncate只能删除表中所有的数据,不能有where

2)速度上,drop>truncate>delete

3)delete可以回滚,数据库可以恢复

  truncate不能事务回滚,数据不可恢复

4)delete、truncate都是删除数据表的结构,索引、约束等属性不会删除。而drop则是删除全部。

 

 

 

7.使用别名的方式以及注意点

答:列名 AS 别名 或省略AS 列名 别名

如果别名中有特殊符号,必须把别名用单引号引起来

 

 

 

8. %和_的区别

答:%表示任意个字符,而_表示一个字符

 

 

 

9.常用的聚合函数 5个

答:count()查询某个字段的行数

max()查询某个字段的最大值

min()查询某个字段的最小值

sum()查询某个字段的和

avg()查询某个字段的平均值

 

 

 

10.谈谈你对dual表的理解

答:dual:伪表,是一个只有一行一列的表,只能查询,不能对dual进行增删改

mysql中是一个摆设,而在order中则必须使用from dual;

 

 

 

11.分页使用的关键字 以及每个参数的含义

答:limit(a,b) a表示开始查询的位置,b表示每页显示几条数据

 

 

 

12.分组的关键字,分组之后带条件查询使用什么关键字

答:分组group by

分组后带条件查询having

 

 

 

13.数据库设计

公司业务发展迅速,人员在组织结构上做了详细的规划,重新制定了人员组织架构。为了更好的管理公司的人员。HR 需要设计数据库结构来管理。下面给出了包含的表结构,请完善表字段,并且写出要求的SQL 。(每题只能写一个SQL)

书写格式: 表名(英文名称):字段1名称(字段1英文名称),字段2名称(字段2英文名称)

人员表(tb_person):

creat table tb_person(

id int(4) not null comment '卡号' primary key,

name varchar(50) not null comment '姓名',

date datetime not null comment '入职日期'

)

职位表(tb_job):

creat table tb_job(

j_id int(4) not null comment '职位编号' primary key,

j_name varchar(50) not null comment '职位',

id int(4) not null comment '卡号'

)

人员变更记录表(tb_person_his):

creat table tb_person_his(

id int(4) not null,

f_time datatime not null comment '入职时间',

l_time datatime comment '离职时间',

date datetime comment '职位变更时间',

first_id int(4) not null comment '变更前职位编号',

last_id int(4) not null comment '变更后职位编号'

)

1.统计2018年新增人员占比(显示为 % 制格式)。

select concat((select concat(id) from tb_person where datetime like '2018%')/(select count(id) from tb_person),'%');

2.查询2018年职位变更的人员名单。

select name '姓名' from tb_person where id in(select id from tb_person_his where date like '2018%');

3.查询截止到目前各个职位的人员总数。

select j_name '职位',count(id) '人数'

from tb_person_his,tb_job

where tb_job.id=tb_person_his.id

group by job_name;

 

 

 

14.编程题

请编写代码将字符串 “服微端云入加迎欢|welcome join us !” 按照 “欢迎加入云端微服 welcome join us !” 正确的表达格式输出,并且统计英文字母的个数并输出。

代码:

String str = “服微端云入加迎欢|welcome join us !”;

答:String str="服微端云入加迎欢|welcome join us !";

int flag=0;

String str1=str.substring(0, 8);

String str2=str.substring(9);

StringBuffer sb1=new StringBuffer(str1);

sb1.reverse();

String newStr=sb1.append(str2).toString();

System.out.println(newStr);

for (int i = 0; i < str2.length(); i++) {

char letter=str2.charAt(i);

if (String.valueOf(letter).matches("^[a-zA-Z]$")) {

flag++;

}

}

System.out.println("英文字符有:"+flag+"个");

 

 

 

15.查询所有老师对应导师的姓名

答:SELECT s.id,s.name,p.name'导师' FROM teacher s LEFT JOIN teacher p ON s.tid=p.id ORDER BY id

阅读更多
个人分类: SQL
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭