s数据库面试主要包含范式、事务、存储过程、SQL语言,以及索引等诸多方面。
1.数据库理论
第一范式:关系模式R的所有属性的值域中每一个值都是不可再分解的值,则称R属于第一范式。
第二范式:如果关系型数据库属于第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选键,则称第二范式。
第三范式:如果关系型数据库是第二范式,且每个非主属性每个非主属性都不传递依赖于R的候选键,则称R的第三范式。
BC范式:关系模式属于第一范式,且每个属性都不传递依赖于R的候选键。
第四范式:R是一个关系模式,D是R上的多值依赖集合。如果D中成立非平凡的多值依赖X->->Y时,X必是R的超键。
数据库事务:作为单个逻辑工作单元执行的一系列操作,这些单元要么全做要么全不做,是不可分割的工作单元。(原子性、一致性、独立性、持久性)
游标作用:定位结果集的行。
事前触发(事案件发生前触发)、事后触发、语句级触发(可以在语句执行前或者后执行)、行级触发(触发器影响的每一行触发)
SQL注入式攻击就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串中,欺骗服务器执行恶意的SQL命令。
2.SQL语言
select *from ppp where num<=all(select num from ppp) ------------找出表ppp中num最小的对应数据
selct top 1 num from ppp order by num
select *from ppp where num=(select Min(num) from ppp)
select * from ppp where num in(select num from ppp group by num having(count(num)>1))-------------选择ppp中num重复的记录
复制表(只复制结构,源表名:A,新表名:B)-----------select *into B from A where 1=0 (表示只创建表结构,1=0永远不成立,没有符合数据,也可 1<>1)
拷贝表(拷贝数据,源表名:A,新表名:B)-----------select *into B from A (创建表结构,同时也要数据)
多表联查---------select *from A,B.. where 关联条件
临时表创建:create table #Temp(字段1 类型,字段2 类型,...) ----------临时表要在表名前面加“#”当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下:
--执行where子句查找符合条件的数据;
--使用group by 子句对数据进行分组;对group by 子句形成的组运行聚集函数计算每一组的值;最后用having 子句去掉不符合条件的组。
--having 子句中的每一个元素也必须出现在select列表中。有些数据库例外,如oracle.
--having子句和where子句都可以用来设定限制条件以使查询结果满足一定的条件限制。
--having子句限制的是组,而不是行。where子句中不能使用聚集函数,而having子句中可以。
order by 在所有关键字的后面。
数据库语言(DML、DDL、DCL、DQL、TCL)
mysql:
创建数据库:---create database test;(test 是数据库名)
删除数据库:--drop database test;
创建表:--create table class
{
code varchar(20) primary key, (主键)
name varchar(20) not null;
};
----create table ceshi{}
删除表:--drop table ceshi;
插入表:三种方式
1)不指定具体字段:insert into ceshi values(value1,value2,value3);
2)依次指定表中字段:insert into ceshi(id,name) values(value1,value2);
3)同时插入多条记录:insert into ceshi values (1,xun,12),(2,ying,12),(3,five,13);
来源:https://www.cnblogs.com/xunyingFree/p/7356900.html