数据库常见面试题补充
1,常用哪些数据库说一下?
MySQL ,SqlServer,Oracle数据库
2,简单说说增删改查语句
①添加数据
insert into 表名 values('p009','张三',1,'n001','2016-8-30 12:9:8') ;
给特定的列添加数据
insert into Info (code,name) values('p010','李四');
②select * from Info where code='p003'
模糊查询 like "_"1个任意字符和"%" 0个或多个任意字符
排序查询 order by field1 [DESC]降序/[ASC]升序 ,二级排序逗号隔开即可
分页查询 limit m, n
查询一条数据的命令 limit 1= limit 0,1 ;在SqlServer中也有top1
3、修改数据
update 表名 set name='王永乐' where code='p002'
4,删除一个表,删除表语句
delete from 表名 where 条件
5,删除一个表格里面的一行记录,只删除表中数据的语句
delete from 表名 where 条件
6,delete与drop与truncate的区别
相同点:
1、都有删除表的功能;
不同点:
1、delete、truncate仅仅删除表里面的数据;drop会把表的结构也删除掉
2、delete是DML语句,操作完了,还可以回滚;truncate和drop是DDL语句,删除之后立即生效,不能回滚;
3、在执行速度上drop>truncate>delete;
7,操作数据的命令。
【show databases】,该命令可以查看所有的数据库。
如果我们要查看数据库中的表,可以使用命令【show tables】。
如果输入了错误命令,可以使用【\c】结束。
使用 use 命令可以选择数据库 例如 use information_schema
如果要查看表结构,可以使用命令desc table_name;
如果要查看表状态,可以使用命令show table status from db like 条件
8、查看一个数据库有没有打开使用什么命令
使用命令 # service mysqld status 命令来查看mysql 的启动状态,
如果出现mysqld is stopped 那就说明mysql服务是停止状态
如果出现mysqld is running那就说明mysql服务是启动状态。
9,连表查询有哪几种?
在mysql数据库中,主要有三种连表方式,分别是:
①外连接 outer join
②内连接 inner join
③交叉连接 cross join
交叉连接相当于求左右两表的笛卡尔积,
比如我有两组数据,a(1, 2) 与 b(4, 5),求它们的笛卡尔积的结果就是:
【(1,4),(1,5),(2,4),(2,5)】

外连接又可以细分为三种:
①左外连接 select * from 表1 left join 表2 on user.id=article.user_id;
②右外连接 无论右表在左表有无匹配,都返回右表的数据,缺失的左表数据为NULL
③完全外连接 mysql并不支持full join,可以通过union all子句,将left join与right join组合在一起,达到类似full join的效果
10,sql语句中内外连接的区别
内连接相对于外链接,就是内连接只要左右表都匹配的数据,也就是交集
内连接(inner join):取出连接表中匹配到的数据,匹配不到的不保留
外连接(outer join):取出连接表中匹配到的数据,匹配不到的也会保留,其值为NULL
10,数据库去重
:原表数据不会被修改,只是查询结果去重。
去重需要使用一个关键字:distinct
select distinct 字段1,字段2 from emp; --注意这样写是两个字段联合起来去重
11,数据库10000条订单中两条相同,怎样用sql语句找出来
select * from ord where id in (select id from people group by id having count (id) > 1)
12,数据库范式
要想设计—个好的关系,必须使关系满足一定的约束条件,此约束已经形成了规范,分成几个等级,一级比一级要求得严格。
关系数据库有六种范式:
第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
通常所用到的只是前三个范式,
第一范式就是属性不可分割,每个字段都应该是不可再拆分的。比如地址就可以拆分为省份,市,详细地址,这样就能避免经常需要访问地址中的省份
第二范式就是主键约束,要求表中要有主键,表中其他字段都依赖于主键。比如学生表中的姓名就不能作为主键,因为可能同名,不唯一
第三范式就是外键约束,确保数据表中的每一列数据都和主键直接相关,比如学生表,可以将班主任的主键编号作为一个外键和学生表建立相应的关系,而不可以在学生表中添加关于班主任其它信息(比如姓名、年龄等)的字段。可以看做是消除冗余
13,数据库索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。避免全表扫描
select * from table1 where id=10000。如果没有索引,必须遍历整个表,直到ID等于10000的这一行被找到为止;有了索引之后(必须是在ID这一列上建立的索引),即可在索引中查找。由于索引是经过某种算法优化过的,因而查找次数要少的多。
简而言之,数据库索引是排好序的数据结构。
索引的一个主要目的就是加快检索表中数据
可以在数据库设计器中创建三种索引:唯一索引、主键索引和聚集索引。
14,数据库索引优化
数据库索引优化可以通过创建合适的索引、维护好索引、避免全表扫描、优化聚簇索引和压缩索引等方式来提高查询效率和性能。需要根据具体的数据库和应用场景选择合适的优化方案。