数据库与SQL语言<4>

筅森魡賤 提交于 2020-01-11 08:03:25

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) 

类型
※数据定义语言(DDL-data definition language),例如:CREATE、DROP、ALTER等语句。
※数据操作语言(DML-data manipulation language),例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。
※ 数据查询语言(DQL),例如:SELECT语句。(一般不会单独归于一类,因为只有一个语句)。
※数据控制语言(DCL-Data Control Language),例如:GRANT(授权)、REVOKE(收回授予权限)、deny等语句。
※事务控制语句(TCL),例如:COMMIT(注释)、ROLLBACK(回滚)等语句。

 

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);

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!