数据库总结(精选5篇)

时间:2019-05-12 00:13:05下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《数据库总结》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《数据库总结》。

第一篇:数据库总结

1、(神谕、甲骨文公司)提供的一款关系型数据库管理系统 使用表格作为存储数据的基本单元

2、在命令行取消设置折痕

set linesize 数字

3、在命令行设置每页显示数据长度

set pagesize 数字

4、命令行中的编辑操作

ed 文件名,回车,点击是,然后在记事本里输入查询语句比如:select * from emp 保存退出,最后在命令行输入 @文件名 点击回车,就会执行记事本里面的语句

5、查询不在当前用户下的表必须在表的前面加上用户名,在数据库中用户名也叫模式名称

6、连接操作:

切换用户

connect 用户名/密码 as sysdba 查看当前用户 show user

7、使用'||'可以连接查询结果

select '编号是:' || empno || '的姓名是:'|| ename 员工信息

from emp

8、数据库不在本机切换用户的方式

coun /connect 用户名/密码

服务名 as sysdba

9、查看数据字典包含的字段

desc dba_users

10、查询数据字典包含的用户 select username from dba_users

11、由于数据库用户有些事预制的,所以状态是锁定的,查看oracle用户的状态: select username,account_status from dba_users;

12、对于状态是锁定的用户,启用用户的语句

alter user 用户名 account unlock

13、管理员数据字典

dba_tablespaces,dba_users

14、普通用户数据字典

user_tablespaces,user_users

15、设置默认或临时的表空间

alter user 用户名 default/temporary tablespace 表空间名

16、创建表空间语法

create temporary | tablespace tablespace_name(表空间名)tempfile | datafile 数据文件名file.dbf size 大小

17、查看默认/临时表空间 select default_tablespace,temporary

_tablespace from

dba_user

where

username='system'(管理员的)select default_tablespace,temporary _tablespace from user_user where username='cotts'(普通用户的)

18、default_tablespace默认表空间 temporary _tablespace临时表空间

19、查询表空间

select tablespace_name from dba_tablespaces select tablespace_name from user_tablespaces(普通用户)20、创建永久表空间

create tablespace test1_tablespace datafile 'test1file.dbf' size 10M

21、创建临时表空间

create temporary tablespace temptest1_tablespace tempfile 'tempfile.dbf' size 10M

22、查询永久表空间包含的字段

desc dba_data_files

23、查询临时表空间包含的字段 desc dba_temp_files

24、设置联机或脱机状态

alter tablespace tablespace_name(表空间名)online /offline

25、查看表空间的状态

select status

from

dba_tablespaces

where

tablespace_name='TEST1_TABLESPACE'

26、设置只读或可读写的状态

alter tablespace tablespace_name(表空间名)read only / read write

read write默认

27、往表空间增加数据文件

create tablespace tablespace_name(表空间名)add datafile 数据文件名file.dbf size 大小

28、删除表空间的数据文件

create tablespace tablespace_name(表空间名)drop datafile 数据文件名_file.dbf

29、删除表空间

(保留数据)

drop tablespace tablespace_name(表空间名)

30、删除表空间

(不保留数据)

drop tablespace tablespace_name(表空间名)

including contents

31、查询一个用户下的所有表

select * from tab

32、windows调用本机操作系统的命令

host dir

33、复制一个文件

host copy 原文件名

新文件名

34、表空间

表空间是存储数据库对象的容器,表和表空间之间的关系就相当于文件和文件夹一样,每次创建数据库的时候,系统默认的创建一个system系统表空间一个数据库可以有一个system表空间,也可以包含若干个

35、常用的字符类型

char、varchar、varchar2

Varchar2(n):oracle自行定义的类型,兼容性特别,在企业中一般都是用varchar2

char(n)

用于标识固定长度的字符串,n表示该字符串最大的保存字符个数。当实际保存数据小于n,在右边使用空格补齐

Varchar(n):可变字符串,n表示该字符串中最大保存字符的个数,当实际保存数据的个数小于n的时候,则会按照实际长度进行保存

36、number:可以用来存储整数和小数

Number(参数):表示最大参数位数的数字

Number(参数1,参数2):参数1代表有效数字的最大位数,参数2代表小数的位数,整数的最大位数(参数1-参数2)。

37、SQL语句:结构化查询语言,是专门为操作数据库而建立所做的命令集,功能齐全的数据库语言,通过SQL完成对数据库的任何操作,每一种数据库都不太一样,都可以使用同一个Sql语句对数据库进行基本操作,掌握SQL语言就可以操作任何的数据库,学习的重点

38、DDL数据库定义语句,用来创建,修改删除表

create、drop、alter DML数据操作语句,用来操作表的数据。插入。修改,删除

insert、update、delete DCL(TCL)事务控制语句,用来管理数据库的事务 commit、rollback DQL数据查询语句,用来查询所需要的数据(重点)Select

39、创建表的格式

create

table

表名(列名1 数据类型

primary key, 列名2

数据类型, 列名n

数据类型);40、查看表结构

desc 表名

41、修改格式

update 表名

set 列名1=该列新值,列名2=该列新值…… Where 条件;注意;where前面没有逗号

根据where条件修改表中的数据,没有where条件,可以修改表中所有的数据

42、删除语句

delete

from

表名

where 条件

根据where条件删除表中对应数据,没有where条件删除表中所有数据

43、向表中所有的列插入数据

insert into 表名 values(列值1,列值2…...)插入的字符串类型必须单引号

44、查询表中所有数据 select * from 表名

修改表名的方法:alter table old_table_name rename to new_table_name

45、向指定的列插入数据表名()中列名必须跟values中列值一一对应。没有插入值默认为空

insert into 表名(列名1,列名2…..)values(列值1,列值2….)插入的字符串必须单引号

46、truncate 删除表中数据

truncate

table 表名

直接删除表中所有的数据。而且使用truncate删除的数据,永远都不能还原。但是删除速度是最快

47、删除表

drop

table

表名

48、去掉重复的列值

distinct

49、查询某些列的所有数据

select

列名1,列名2,列名3…………...from 表名

50、删除表中字段(批量删除)

alter table 表名 drop(字段1,字段2,..)也可以单个删除

删除表中的字段(单个删除)

alter table 表名 drop column 字段名

51、oracle下修改字段长度的语法

alter table 表名 modify 字段名 类型(长度);

52、修改字段名语法

alter table 表名 rename column 原字段名 to 新字段名

53、向表中添加新字段

alter table 表名 add(字段1 类型 [NOT NULL],字段2 类型 [NOT NULL],....)

54、给表起别名

在多表的连接查询中,建议每一张都起一个别名,通过别名指向对应的表中的列,避免出现多个表之间列名一致

select 别名.列名1,别名2.列名2,别名3.列名3......from 表名 别名

55、使用as给列起别名

select 列名1 as 别名1,列名2 as 别名2.....from 表名

56、使用空格给列起别名

select 列名1 别名1,列名2 别名2....from 表名

57、排序

对查询返回的结果,根据某一个列或者某几个列进行升序或者降序

格式1:

select 列名/* from 表名 where 条件

order by 列名 desc/asc

格式2:

select 列名 /* from 表名 where 条件

order by 列名1 asc/desc,列名2 asc/desc desc降序

asc升序、默认值 排序永远是最后被执行的

58、可以使用别名进行排序

select 列名1 别名1,列名2 别名2 from 表名 where 条件

order by 别名

desc/asc

59、带条件的查询

select

列名/*

from

表名 where条件

60、可以使用序号进行排序

select ename,empno,sal from emp order by 3 desc 用的是sal排序

61、关系运算符:>,>=,<,<=,=(等于),!=(不等于)或者<>(不等于)

判断该列列值是否为null为null:

is null

不为null: is not null 62、模糊查询:

like是,包含的意思

%:指代0个或多个字符

_:指代任意一个字符

not like 不包含,不是的 意思

63、nvl函数

专门处理空值的问题

64、使用‘+’连接数字和null返回的结果也为null 65、nvl(数字/列名,数值);如果该列的列值为null,返回数值;如果该列的列值不为null,则返回该列的列值

nvl(列名,0)66、nvl2(数字/列,返回结果一(不为null显示),返回结果二(为null显示))67、nullif(表达式一,表达式二)

判断表达式是否相等,如果相等返回null,不相等返回表达式一 68、select case 列/数值 then 表达式1 then 显示结果1

then 表达式2 then 显示结果2 …

else 表达式n end 别名 from 表名

如果数值/列等于表达式1则显示结果1 如果等于表达式2则显示结果2,如果都不等于。则执行表达式n 69、select decode(列/表达式,值1,输出结果1,值2,输出结果2….默认值)别名

from 表名

如果表达式/列的值等于值1,输出结果1,如果等于值2,输出结果2,如果两者都不满足输出默认值 所有条件都要判断否则显示为null 70、select coalesce(表达式1,表达式 2,表达式3….表达式n)coalesce主要对null进行操作,如果表达式1为null,显示表达式2的内容,如果表达式2为null,显示表达式3的内容,如果执行到最后还是null,那么最终结果就显示null 71、逻辑运算符: and 与

,or或,not非

72、between 初值

and 终值

求出初值到终值之间满足条件的列值 73、where 列名 in(列值1,列值2,列值3...)

在什么范围

74、where 列名 not in(列值1,列值2...)不在什么范围 75、any

where 列名 =any(列值1,列值2,列值3...)与in相同(然而<>any不等价于not in

where 列名

>any(列值1,列值2,列值3...)比子查询结果中最小的要大(包含了>=any)

76、some和any用法相同

where 列名

77、<>any返回的是表中的全部数据

<>all等价于not in(但是=all并不等价于in)

>all比子查询中值最大的还要大(还包含了>=all)

79、空数据判断exists SQL提供的判断子查询是否有数据返回,如果有数据返回,exists结构则返回true,否则返回false select * from emp where exists(select * from emp where empno=9999)没有结果返回

select * from emp where exists(select * from emp)

80、not exists select * from emp where not exists(select * from emp where empno=9999)

select * from emp where not exists(select * from emp)没有结果返回

81、聚合函数(分组函数)

count()数据总数

sum()求和

max()

最大值

min()最小值

avg()平均值 count(*/列名):*,求出该表中总的数据的条数; 列名,查询该列不为null的列值的个数

sum(列名):求出该列所有列值的累加之和 max(列名);求出该列的最大值 min(列名):求出该列的最小值 avg(列名):求出该列的平均值 median(列):求出中间值 variance(列):返回方差 stddev(列):返回标准差 82、多字段分组

格式:

select 分组字段1,分组字段2,列名/聚合函数

from

表名 where 条件

group

by 分组字段1,分组字段2...order by 列名/聚合函数/别名

asc/desc

select d.dname,d.loc,d.deptno, nvl(count(e.empno),0),nvl(max(e.sal),0)最高工资,nvl(min(e.sal),0)最低工资,nvl(round(avg(e.sal),2),0)平均工资

from emp e,dept d

where d.deptno=e.deptno(+)

group by d.dname,d.loc,d.deptno

83、字符处理函数

lower(字符串/列名);把字符串/列值中所有的大写字母改成小写字母

dual:虚拟表,专门用来进行测试的表

upper(列名/字符串):把列值/字符串中所有的小写字母改成大写字母

length(列名/字符串):统计当前列值/字符串中字符的个数 select ename,job,lower(ename),lower(job)

from emp select upper('ximenchunxue')from dual select ename,length(ename)from emp 84、给出一个整数并返回与之对应的字符串

CHR(数字)返回与指定字符对应的十进制数字

ASCII('字符')首字母大写函数

INITCAP(列/字符串)85、在左或右填充指定长度的字符串

LPAD('列/字符串',总长度,'填充字符')RPAD('列/字符串',总长度,'填充字符')还可以组合使用

86、查找函数 instr(列/字符串,查找的字符串,开始位置,出现位置)

87、替换函数

replace(列名/字符串,指定字符,新的字符串)

select replace('ename','e','-')from dual

88、substr(参数1,参数2,参数3):截取字符串

参数1:列名/字符串,指定要截取的列或者字符串

参数2;如果为正数表示从正数的标号开始截取,起始是1,比如参数2(5),从第五个字母开始截取。反之如果为负数表示从倒数第几个字符开始截取,比如参数2(-3),表示从倒数第三个字符开始截取。参数3:表示要截取字符的个数

没有参数3表示截取所有

89、求出emp表中ename的最后3个字符(两种方法)

第一种方法

select substr('ename',-3,3)from emp

第二种方法

select substr('ename',length('ename')-2,3)from emp

90、TRIM(列名/字符串):删除列删除列值/字符串两端的空格

select trim('

liu

ying

')from emp 91、去掉左或右的空格

LTRIM('字符串')RTRIM('字符串')92、连接(串联)字符串: 使用|| 连接多个字符串

93、concat(字符串1,字符串2): 串联字符串

94、to_char();把其他类型的数据转换为字符类型

95、数值处理函数

sqrt(数值);求出平方根

mod(参数1,参数2):求出余数

floor(数值);向下取整截断

(变小)

ceil(数值):向上取整

(变大)power(底数,指数):求出乘方 abs(数值):求出绝对值

round(数值,位数):四舍五入函数

如果位数为正数,保留几位小数,如果位数为0,则只保留正数,如果位数为负数,则表示小数点前第几位进行四舍五入。如果不指定位数则从小数点后面四舍五入

sign(数值):标记性函数,如果数值是正数,返回值是1,如果数值是0,返回值是0,如果数值是负数,返回值是-1 96、trunc:截取函数

trunc(数值,参数):如果参数为正数,表示保留几位小数,如果参数为0,表示舍弃所有的小数,如果参数为负数,表示对小数点前第几位舍弃。如果不指定参数,表示从小数点后面全部舍弃。97、having 子句

跟group by 结合使用,对分组以后的数据进行再次过滤

格式1:

select 列名/聚合函数 from 表名 where 条件

;对表中所有数据进行过滤 group by 列名

having 子句;对分组后的数据进行过滤 order by 列名/别名/聚合函数

asc /desc 98、也可以和多字段分组结合 格式2:

select 字段1,字段2...,列名/聚合函数 from 表名 where 条件

;对表中所有数据进行过滤 group by 字段1,字段2...having 子句;对分组后的数据进行过滤 order by 列名/别名/聚合函数

asc /desc

列出至少有一个员工的部门编号,名称,并统计这些部门的平均工资,最高工资,最低工资

select d.dname,d.deptno,round(avg(e.sal),2), max(e.sal),min(e.sal)

from dept d ,emp e

where d.deptno=e.deptno(+)

group by d.dname,d.deptno

having count(e.empno)>1

分析:首先执行where条件,对表中所有的数据进行过滤,然后执行group by,根据某一组对余下的数据进行分组,之后使用having子句对分组后的数据再次进行过滤。最后使用order by 进行排序

having子句中经常跟聚合函数结合使用

99、案例:显示非销售人员的工作名称以及从事同一工作的员工的月工资总和,并且要满足从事同一工作的员工的月工资总和大于5000,输出结果按月工资总和升序排列

select distinst job ,sum(sal)月工资总和 from emp where job<>'clerk' group by job having sum(sal)>5000 order by 月工资总和

100、from子句中子查询

要求查出每个部门编号,名称,地址,部门人数,平均工资 select d.deptno,d.dname,temp.count,temp.avg from dept d,(select deptno dno,count(sal)count,round(avg(sal),2)avg from emp group by deptno)temp where d.deptno=temp.dno(+)

思想:把聚合函数和列值分开查询先查询聚合函数,对查询的结果起别名,最后查询列值,temp表可以看成一个临时表,temp是临时表的别名

案例、查询出所有在销售部门sales的员工的编号,姓名,职位,奖金,基本工资,入职日期,部门最高工资,部门最低工资

select e.empno,e.ename,e.sal,e.comm,e.job,e.hiredate, temp.max,temp.min from emp e,(select deptno dno,max(sal)max,min(sal)min from emp group by deptno)temp where e.deptno=(select deptno from dept where dname ='SALES')and e.deptno=temp.dno

思想:把聚合函数和列值分开查询先查询聚合函数,对查询的结果起别名,最后查询列值,temp表可以看成一个临时表,temp是临时表的别名

案例、查询出所有薪资高于公司平均薪资的员工编号,姓名,职位,入职日期,所在部门名称,地址,、上级领导姓名公司的工资等级,部门人数,平均工资,平均服务年限

select e.empno,e.ename,e.hiredate,d.dname,d.loc,m.ename,s.grade,temp.count,temp.avg,temp.avgyear from emp e,dept d,salgrade s,emp m,(select deptno dno ,count(empno)count, round(avg(sal),2)avg, round(avg(months_between(sysdate,hiredate)/12),2)avgyear from emp group by deptno)temp

where e.sal >(select avg(sal)from emp)and e.deptno=d.deptno and e.sal between s.losal and s.hisal and e.deptno=temp.dno and e.mgr=m.empno(+)

101、select子句查询和from子句查询: from子句是把聚合函数放到from中

select 子句是把聚合函数放到select语句里面

102、with子句

使用with子句将emp表中的数据定义为临时表

with e as(select * from emp)select * from e;103、查询中每个部门的编号,名称,地址,人数,平均工资

with e as(select deptno dno,count(empno)count, round(avg(sal),2)avg from emp group by deptno)select d.deptno,d.dname,d.loc,e.count,e.avg from e,dept d where d.deptno=e.dno(+)104、每个部门工资最高的员工编号,姓名,职位,入职日期,工资,部门编号,部门名称,按照部门编号升序

with x as(select deptno dno,max(sal)max from emp group by deptno)select e.empno,e.ename,e.job,e.hiredate,e.sal,d.dname,d.deptno from x,emp e,dept d where e.deptno=x.dno and x.max=e.sal and d.deptno=x.dno order by d.deptno 105、约束

设计表的时候,提前添加一些限制(条件),只有满足这些条件的数据可以插入到表中,这些限制(条件)就是约束,只能满足这些约束的数据可以真正保存到表中

1.主键约束 2.唯一约束 3.检查约束 4.默认值约束 5.外键约束 6.非空约束 106、主键约束

被主键约束修饰的列,该列的列值必须非空而且唯一,通过主键约束来避免表的数据出现冗余(重复的数据)

1.一个表中只能有一个主键(约束)

2.使用主键修饰一个列或者多个列的组合值,修饰多个列的组合值,称为联合主键或者复合主键 106、创建表的时候指定主键名字

create table worker2(id number(4)constraint pk_w2_id primary key, name varchar2(50))107、创建表的时候设置联合主键

create table worker3(id number(4), name varchar2(50), age number(3), address varchar2(50), constraint pk_w3_id_name

primary key(id,name))

108、修改表的时候设置主键约束 alter table 表名 add constraint 约束名 primary key(列名1,列名2...)

109、删除主键 只能用来删除主键 格式: alter table 表名 drop primary key

可以删除大部分约束 格式:

alter table 表名 drop constraint 约束名

110、唯一约束

用来指定一个列或者多个列的组合值具有唯一性,防止在该列中输入重复的列值,一张表中可以有多个唯一约束

1.使用唯一约束修饰的列,该列的列值可以为空值 2.不能使用唯一约束修饰主键所在的列。111、修改表的时候设置唯一约束 格式:

alter table 表名

add constraint 约束名

unique(列名1,列名2,列名3...)

112、主键约束和唯一约束的区别

1.一张表中只有一个主键约束,但是可以有多个唯一约束

2.主键约束修饰的列,该列的列值必须不能为null,而被唯一约束修饰的列,该列列值可以为null 113、删除唯一约束

alter table 表名 drop constraint 约束名

114、检查约束

用于限定某列的值必须要满足什么条件,只有满足特定条件的数据才可以插入进去,避免用户输入一些非法的数据

1、创建表的时候设置检查约束 create table worker10(id number(4)primary key, name varchar2(50)unique, sex char(2)check(sex in('男','女')), age number(3), email varchar2(50))

2、修改表的时候指定检查约束 格式:

alter table 表名

add constraint 约束名 check(约束名)

115、删除检查约束 格式:

alter table 表名

drop constraint

约束名

116、默认值约束

系统默认为列设置的数值,如果在执行insert语句中,该列没有插入列值,使用默认值作为该列的列值,而且每一个列只能设置一个默认值。

117、创建表时候设置默认值约束 create table worker14(id number(4)primary key, name varchar2(50), age number(3)default 20, salary number(7,2)default 5000)

118、修改表时候设置默认值 alter table 表名 modify 列名 数据类型 default 默认值

119、删除默认值:--使用modify 把默认值设置为null

alter table 表名 modify 列名 数据类型 default null

120、非空约束

该列的列值不能为空(null)

121、创建表的时候设置非空约束

create table worker15(id number(4)primary key, name varchar2(50)not null unique, age number(3), address varchar2(50))

122、修改表的时候设置非空约束

使用modify,可以设置多个列的非空约束 alter table 表名 modify(列名1 not null)modify(列名2 not null)....modify(列名n not null)

123、删除非空约束

使用modify,可以删除多个列的非空约束 alter table 表名 modify(列名1 null)modify(列名2 null)……

modify(列名n null)

124、外键约束

用于维护两张表之间的关联关系,被外键约束所修饰的列该列的列值必须跟与之关联另外一张表中,主键所在的列的列值对应 子表:外键所在的表,称为子表 父表/主表:没有外键的表,称为父表。

当执行插入操作的时候,要先往主表中插入数据,然后在往子表中插入数据

外键的作用就是维护两张表之间的关联的关系,外键所修饰的列值,必须参照与之关联的主表中主键所在的列的列值

125、序列 序列是oracle中的一个数据库对象,通过序列可以生成自动增长的数字,经常使用序列生成的数字作为主键所在列的列值 创建序列的格式

create

sequence 序列名

126、nextval:第一次使用nextval返回是默认值(如果不设置默认值,默认情况返回是1),之后每次调用nextval都生成一个自增的数字

select id_seq1.nextval from dual

currval:获得序列当前的值 select id_seq3.currval from dual 127、序列的初始值 start with 初值

第一次使用nextval的时候,返回的就是初值

增长的步长(每次使用nextval,生成数据的增量,默认步长是1

increment by 增量

序列最大值 :

maxvalue 最大值 序列最小值:

minvalue 最小值

create sequence id_seq4 start with 100 increment by 10 minvalue 1 maxvalue 100000000

128、索引

索引是建立在表中列上的数据库对象,用于提高数据查询的速度,而且索引一旦被创建以后就会被oracle系统指定进行维护,在查询语句中不需要指定使用的是哪一个索引 create table worker12(id number(4)primary key, name varchar2(50)unique)

1)一种提高查询效率的机制,提高索引可以最大化提高查询的速度 2)主键所修饰的列,系统会默认添加一个索引。3)使用唯一约束修饰的列,系统会默认添加一个索引

129、索引的创建 格式

create index 索引名名称 on 表名(列名)

删除索引

drop index索引名称

130、索引的优点和缺点

优点:提高查询速度

缺点:

1.索引会占用磁盘空间

2.索引会提高查询数据的速度,但是减缓了对数据的修改(insert ,update,delete)速度

131、事物

把对表的一系列操作封装到一个事务中,要么一起成功,要么一起失败

commit:提交事物,执行commit把之前对表中所有的操作,真实发生修改,在数据库底层真正修改数据。

rollback:回退(回滚)之前所有未提交(commit)的操作。撤销之前没有提交修改的操作(insert。update,delete)

132、关联查询

所需要查询的数据来源于多张表,通过关联查询,在同一条SQL语句查询多张表的信息 格式

select 别名1.*/列名,别名2.*/列名...from 表1 别名1,表2 别名2 where 关联条件

笛卡尔积:在关联查询中,如果没有加入关联条件,两张表中数据会进行任意的组合,这种现象称为笛卡尔积。笛卡尔积是数学中的一个概念在关联查询中,必须要避免出现笛卡尔积。关联条件:必须先查看两张表之间的关联关系,然后在编写关联条件

133、内连接;只查询两张表中有关系的数据,不查询没有关联关系的数据。之前写的所有的关联查询都属于内连接

1.等值连接:关联条件中是以=进行连接,称为等值连接。2.非等值连接:关联条件不是以=连接,称为非等值连接 自连接:把一张表看成两张表,自己跟自己进行连接

另外一种内连接(很少见)格式

select 别名1.*/列名,别名2.*/列名

from 表名1 别名1 inner join 表名2 别名2 on 关联条件 where 条件

134、使用Oracle的专用语法实现外连接

外连接:既要查询两张表中有关联关系的数据,还要查询没有关联关系的数据。在Oracle中可以在关联条件中加入(+)来实现外连接操作

oracle外连接专用语法只能应用oracle数据库,不能应用于其它的数据库 oracle外连接是在对方的关联条件后面加上(+)

135、标准SQL外连接查询(重点):使用标准SQL语句 实现外连接查询操作,可以匹配任意的数据库

左外连接查询:以左表为主,查询左表中所有的数据,以及与之关联的右表中的数据 格式:

select 别名1.*/列名,别名2.*/列名

from 左表 别名1 left(outer)join 右表 别名2 on 关联条件 where 条件

右外连接查询:以右表为主,查询右表中所有的数据,以及与之有关联的左表中的数据 格式:

select 别名1.*/列名,别名2.*/别名

from 左表 别名1 right(outer)join 右表 别名2 on 关联条件 where 条件

全外连接:连接与之关联的所有表中所有的数据 格式:

select 别名1.*/列名,别名2.*/列名

from 表1 别名1

full(outer)join 表2 别名2 on 关联条件 where 条件

136、交叉连接cross join 格式:

select 别名1.*/列名,别名2.*/列名 from 表1 别名1

cross join 表2 别名2 where 条件

交叉连接作用于两个关系上,并且第一个关系的每个元组与第二个关系的所有元组进行连接这样的操作形式与笛卡尔积是完全相同的

137、自然连接

natural join 运算作用于两个关系最终会通过两个关系产生一个关系作为结果,自然连接只考虑那些在两个关系模式中都出现的属性上取值相同的元组对 格式:

select 别名1.*/列名,别名2.*/列名

from 表1 别名1

natural join 表2 别名2 where 条件

select * from emp natural join dept 自然连接自动匹配关联数据消除笛卡尔积是内连接的方式 138、Using子句 格式:

select 别名1.*/列名,别名2.*/列名

from 表1 别名1

join 表2 Using(关联列名称)where 条件

select * from emp join dept using(deptno)using不使用关联字段也可以消除笛卡尔积

139、on子句

在SQL:1999语法中由用户手工设置关联条件 格式:

select 别名1.*/列名,别名2.*/列名

from 表1 别名1

join 表2 on(关联条件)where 条件

select * from emp e join salgrade s on(e.sal between s.losal and s.hisal)

140、日期函数

主要用于处理date类型的数据 常见的日期格式 年月日;yyy-mm-dd(y:年份

m:月份

d:几号)

年月日时分秒;yyy-mm-dd hh24:mi:ss hh24: 24小时制,小时 mi: 分钟 s: 秒钟

系统默认的日期格式 dd-mon月-yy eg:11-11月-11

2011-11-11

sysdate:指代当前的系统时间 select sysdate from dual

修改日期时间格式

先输入alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss' 然后输入select sysdate from dual;

141、to_char()函数:把date类型的数据转换为char类型数据进行显示

to_char(date数据,'日期格式')select sysdate,to_char(sysdate,'yyyy-mm-dd hh24:mm:ss')from dual 142、to_char()函数中主要转变数字: 9

显示

一位数字,显示

千位符.显示

小数点 0

显示

前导0 L

根据语言环境,自动选择货币 $

显示

美元符号

select to_char(9568436.635,'000,000,000,000.000000')from dual

select to_char(9568436.635,'L999,999,999.999')显示货币, to_char(9568436.635,'$999,999,999.999')显示美元

from dual;

143、months_between(d1,d2):两个日期d1和d2之间间隔了多少个月 select empno,enmae,job,sal,hiredate, months_between(sysdate,hiredate)from emp

add_moths(d1,数字):d1之后数字个月 案例3个月后的今天 select sysdate,add_months(sysdate,3)from dual 数字为负数表示之前 144、下一个指定日期 next_day(日期,星期数)

求出指定日期当月的最后一天 last_day(日期)

145、时间日期分割,或计算给定两个日期的间隔 extract(格式from数据)select

extract(year from systimestamp)years ,extract(month from systimestamp)months ,extract(day from systimestamp)days,extract(hour from systimestamp)hours ,extract(minute from systimestamp)minutes,extract(second from systimestamp)seconds

from dual;

146、将字符串转变为时间戳

to__timestamp()select to_timestamp('2015-12-10 12:25:30','yyyy-mm-dd hh24:mi:ss')from dual

147、将制定数据类型转变为数字型

to_number(列/字符串)select to_number('10')*to_number('21')from dual;

148、to_date()函数:把char类型数据转换为date类型的数据,经常用于跟insert语句结合使用

to_date('日期格式字符串','日期格式')

149、使用默认的日期格式插入数据

insert into emp(empno,ename,hiredate)values(6911,'孙权','21-12月-16')

150、视图

1)视图是一张虚拟表,通过视图查看一张或者多张表中的数据。

2)视图中不存储任何物理数据,视图是查看数据的窗口。所以删除一个视图,对表中的数据没有任何影响。

3)视图中的数据都是来源于表,是在视图被使用的动态生成的。

通过视图可以集中,简化,定义数据的显示,用户可以通过视图来访问表中的数据,而不需要直接查询表。

151、创建视图的格式

create view 视图名as 查询语句

案例:查询emp表中所有的数据,查询结果作为视图emp_view1 create view emp_view1 as select * from emp

152、修改视图的格式

create or replace view 视图名称 as 查询语句

例:查询emp表中工资高于1000所有员工的编号,姓名,职位,工资,查询结果修改视图emp_view1 create or replace view emp_view1 as select empno,ename,job,sal from emp where sal > 1000

153、通过视图修改(insert ,update,delete)表中数据 create view dept_view3 as select * from dept 154、通过视图插入语句

insert into dept_view3 values(70,'财务','杭州')155、通过视图修改语句

update dept_view3 set loc = '苏州' where dname = '测试'

通过视图删除语句 delete from dept_view3 where deptno in(50,60,70)

156、只读视图:只能通过该类视图查看表中的数据,不能通过视图修改表中的数据 格式:

create view 视图名称 as 查询语句 with read only

157、删除视图

格式:drop view 视图名称

drop view emp_view1

158、根据旧表创建新表

create table 新表 as select * from 旧表

159、oracle数据库默认端口号:1521 MySQL默认端口号:3306 SQL Server默认端口号:1433 Https默认 端口:443 HTTP默认端口:80 FTP默认端口:21 SOCKS代理协议服务器常用端口号:1080 Telnet(远程登录)协议代理服务器常用端口:23 TOMCAT默认的端口号:8080 ORACLE EMCTL默认的端口号:1158

MS SQL*SERVER数据库monitor:1434 QQ默认的端口号:1080 Oracle XDB FTP服务,默认的端口号:2100 Oracle XDB(XML 数据库),默认的端口号:8080 WebLogic,默认的端口号:7001 Webshpere应用程序,默认的端口号:9080 JBOSS,默认的端口号:8080 webshpere管理工具,默认的端口号:9090 DB2 默认端口号为:5000 PostgreSQL默认端口号为:5432 200资源(网页等)被永久转移到其它URL

404内部服务器错误

select e.empno 员工编号,e.ename 员工姓名, to_char(e.hiredate,'yyyy-mm-dd')入职日期,e.job 工作,m.ename 领导姓名, e.sal 月工资,(e.sal+ nvl(e.comm,0))*12 年薪,s.grade 工资等级,d.deptno 部门编号, d.loc 地址,d.dname 部门名称

from emp e,dept d,salgrade s,emp m where d.deptno=e.deptno and e.mgr=m.empno and e.sal between s.losal and s.hisal and e.sal between 1500 and 3500 and to_char(e.hiredate,'yyyy')= '1981' order by 年薪 desc, 工作 desc

160、集合运算

集合运算时一种二目运算符,包括交,差,并,笛卡尔积

union all(并集)返回若干个查询结果全部内容,重复的元组也会显示 select * from dept union all select * from dept where deptno=10;结果为5条数据(有1条重复)

union(并集)返回若干个查询结果全部内容,重复的元组不会显示 select * from dept union select * from dept where deptno=10;结果4条数据

intersect(交集)返回若干个查询结果相同中的部分 select * from dept intersect select * from dept where deptno=10;结果为1条数据

minus(差集)返回若干个查询结果中不同的部分 select * from dept minus select * from dept where deptno=10 结果为3条数据

161、分析函数 函数名称([参数])over(partition by 子句

字段,..Order by 子句 字段,…[asc | desc] [nulls first | nulls last] windowing子句);

函数名称: 类似于count(),sun()等

over子句: 为分析函数指明一个查询结果集,此语句 在select中使用

partition by 子句: 将一个简单的结果分为N组(或者分区),而后按照不同的组对数据进行统计

order by子句: 明确指明数据在每个组中的排列顺序,分析函数的结果与顺序无关 nulls first | nulls last: 表示返回数据行中包含null值出现在排列序列的前还是尾 windowing子句(代名词): 给出在定义变化固定的数据窗口方法,分析函数将对此数据进行操作

第二篇:数据库总结

数据库老师画的重点

数据库:数据库是长期存储在计算机内、有组织、可共享的大数据集合。数据库操纵功能:查询select、插入insert、删除delete、修改update 数据库系统的特点:1数据结构化2数据的共享高,冗余度低,易扩充3数据独

立性高4数据由DBMS统一管理和控制

数据模型的组成要素:数据结构、数据操作、完整性约束 概念模型:要出大体,画图 信息世界中的基本概念————

1、实体:客观存在并可以相互区别的事物称为实体

2、属性:实体所具有的某一特性

3、码(key):唯一标识实体的属性集称为码

4、域(domain):域是一组具有相同数据类型的集合

5、实体型(entity type):具有相同属性的实体必然具有共同的特征和性质。用实体名

及属性名集合来抽象和刻画同类实体,称为实体型。

6、实体集(entity set):同一类型的实体的集合

7、联系:在现实世界中,事物内部以及事物之间是有联系的,这些联系在信息世界中

反应为实体(型)内部的联系和实体(型)之间的联系。实体内部的联系通常是指

组成实体的各属性之间的联系;实体之间的联系通常是指不同实体集之间的联系

最常用的数据模型:

1、层次模型(Hierarchical Model)

2、网状模型(Network Model)

3、关系模型(Relational Model)

4、面向对象模型(Object Oriented Model)

5、对象关系模型(Object Relational Model)其中层次模型和网状模型统称为格式化模型

数据库系统的三级模式结构:

1、模式(scheme):模式也称逻辑模式,是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。他是数据库系统模式结构的中间层,既不设计涉及数据的物理存储细节和硬件环境,也与具体的应用程

序、所使用的应用开发工具及高级程序设计语言无关。

2、外模式(external schema):外模式也称为子模式(subschema)或用户模式,他是数

据库用户(包括应用程序员和最终用户)能看见和使用

的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。

3、内模式(internal scheme):内模式也称存储模式(storage schema),一个数据库只有

一个内模式。他是数据库物理结构和存储方式的描述,是

数据在数据库内部的表达方式。数据库的二级映像功能与数据库独立性————

为了能够在系统内部实现这3个抽象层次的联系和转换,数据库管理系统在这三个模式之间提供了两层映像:

·外模式/模式 映像 ·模式/内模式 映像

正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性 关系(relation):D1*D2*D3··*Dn的子集叫做在域D1、D2、D3···Dn上的关系,表示

为R(D1、D2、D3···Dn)

这里的的R表示关系的名字,n是关系的目或度(degree)关系中每个元素是关系中的元组,通常用t表示 当n=1时,称关系为单元关系(unary relation),或一元关系 当n=2时,称该关系为二元关系(binary relation)

关系是笛卡尔积的有限子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性(attribute)。n目关系必有n个属性。

若关系中的某一属性组的值能够唯一的标识一个元组,则称该属性组为候选码(candidate key)

若一个关系有多个候选码,则选定其中一个为主码(primary key)候选码的诸属性称为主属性(prime attribute)。不包含在任何候选码中的属性称为非主属性(non-prime attribute)或非码属性(non-key attribute)P46 没有搞明白干嘛使得!!!!!!!!!!!

关系的三类完整性约束:实体完整性、参照完整性、用户定义的完整性 实体完整性和参照完整性被称作关系的两个不变性

1、实体完整性(entity integrity):主码中的属性即主属性不能取空值

2、参照完整性(referential integrity):

若属性(或属性组)F是基本关系R的外码,它与基本关系S的的主码K相对应(基

本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:

·或者取空值(F的每个属性值均为空值)·或者等于S中某个元组的主码值

SQL(Structured Query Language),即结构化查询语言,是关系数据库的标准语言。SQL 的特点:

1、综合统一

2、高度非过程化

3、面向集合的操作方式

4、以同一种语法结构提供多种使用方式

5、语言简洁、易学易用 SQL的动词:

数据查询:select 数据定义:create、drop、alter(房间)修改表

数据操纵:insert、update(家具)修改数据、delete 数据控制:grant、revoke

绘制ER图————

在ER图中有如下四个成分:

矩形框:表示实体,在框中记入实体名。菱形框:表示联系,在框中记入联系名。

椭圆形框:表示实体或联系的属性,将属性名记入框中。对于主属性名,则在其名称下

划一下划线。

连线:实体与属性之间;实体与联系之间;联系与属性之间用直线相连,并在直线上

标注联系的类型。(对于一对一联系,要在两个实体连线方向各写1; 对于一对

多联系,要在一的一方写1,多的一方写N;对于多对多关系,则要在两个实体

连线方向各写N,M。

基本表是本身独立存在的表,在SQL中一个关系就对应一个基本表。一个(或多个)基本表对应一个存储文件,一个表可以带若干索引,索引也可以放在存储文件中。存储文件的逻辑结构组成了关系数据库的内模式。存储文件的物理结构是任意的,对用户是透明的。

视图是从一个或几个基本表导出的表。它本身不独立存储在数据库中,即数据库中只存放视图的定义而不存放视图对应的数据。这些数据仍存放在导出视图的基本表中,因此视图是一个虚表。视图在概念上与基本表等同,用户可以在视图上再定义视图。

基本表的定义、删除与修改:

1、定义基本表:create table ***()

2、定义主键:Primary key == not null(中间不用连接符号)unique

3、定义外码的语句:foreign key(某个字段)references 某表(某字段)

4、定义主码语句:primary key(***,***)

5、修改基本表:alter table 某表名 add 列名<数据类型>[完整性约束]

drop <完整性约束名>(字段名)

alter column<列名><数据类型>

6、删除表:drop table 表名[restrict | cascade级联删除]

7、建立索引:create [unique] [clustered] index 索引名

on 表名(列名[asc | desc],······)·clustered 表示是聚簇索引

·unique表明此索引的每一个索引值只对应唯一的数据记录 ·用户可以在最经常查询的列上建立聚簇索引以提高查询效率 ·在一个基本表上只能建立一个聚簇索引

·建立局促索引后,更新该索引列上的数据时,往往导致表中记

录的物理顺序的额变更,代价较大,因此对于经常更新的列不

宜建立聚簇索引

8、删除索引:drop index <索引名>

上机的时候不太一样:drop index 表名。索引名字

9、数据的查询:

select [all | distinct] <目标列表达式>,······ from 表名或者视图名,··· where 条件表达式

group by 列名1 [having 条件表达式] order by 列名2 [asc | desc] ·如果有group by 子句,则结果按“列名1”的值进行分组,该属性列值相

等的元组为一个组。通常会在每组中作用聚集函数。如果group by 子句带

having短语,则只有满足指定条件的组才予以输出。

·如果有order by 子句,则结果表按“列名2”的值的升序或降序排序 ·select Sname Name,‘Year of Birth:’Birth,2013-Sage Birthday,lower

(Sdept)Department

from Student

lower表示小写

常用的查询条件————

较:大于、等于、小于、不等于(< >/!=)、大于/小于等于、不小于、不大于、not+上述比较运算符

确定范围:between and,not between and 确定集合:in,not in 字符匹配:like,not like 空

值:is null,is not null 多重条件(逻辑运算):and,or,not

例子————

·select Sname,Sage

from Student

where Sdept(not)in(‘cs’,‘ma’,‘is’)

字符匹配:[not] like ‘字符串’[escape‘换吗字符’] 百分号表示任意长度、下划线表

示任意单个字符 聚集函数————

count([distinct | all] *)

统计元组个数 count([distinct| all] 列名)

统计一列中值的个数 sum([distinct| all] 列名)

计算一列值的总和(此列必须是数值型)avg([distinct| all] 列名)

计算一列的平局值(此列必须是数值型)max([distinct| all] 列名)

求一列中的最大值 min ·如果指定distinct短语,则表示在计算时要取消指定列中的重复值。如果不指定distinct

短语或者指定all短语(all为缺省值),则表示不取消重复。

·注意在聚集函数遇到空值时,除count(*)外,都跳过空值而只处理非空值。·注意where子句中不能用聚集函数作为条件表达式

group by子句————

where 子句与having 短语的区别在于作用对象不同。Where 子句作用对象作用于基本表或试图,从中选择条件的元组。Having短语作用于组,从中选择满足条件的组。

例子:select Sno from SC

group by Sno having count(*)>3 查询了选修3门以上课程的学生学号 链接查询—————— 例子:

非自然链接

·select Student.*,SC.*

from Student,SC

Where Student.Sno=SC.Sno

自然链接

·select Student.Sno,Sname,Ssex,Sage,Sdept,Cno,Grade

from Student,SC

where Student.Sno=SC.Sno

自身链接

·select FIRST.Cno,SECOND.Cpno

from Course FIRST,Course SECOND

where FIRST.Cpno=SECOND.Cpno

外连接

·select Student.Sno,Sname,Sage,Sdept,Cno,Grade

from Student left outer join SC

on Student.Sno=SC.Sno ·左外链接列出左边关系中所有的元组,右外连接列出右边关系中的所有元组

嵌套查询

·select Sname from Student

where Sno in(select Sno from SC where Cno=‘2’)

·找出每个学生超过他选修课程平均成绩的课程号

Select Sno,Cno From SC x Where Grade >=(select avg(Grade)

From SC y Where y.Sno=x.Sno)

授权————

Grant 权限,····· On 对象类型 对象名,····· To 用户,·····

[with grant option]只一句表示权限的传递

例子: ·Grant all privileges

On Student,Course

To U1,U2

·grant update(Sno),select

on Student

to u4

·revoke update(Sno)

on table Student

from u4

一个满足BCNF的关系模式有:

·所有非主属性对每一个码都是完全函数依赖

3NF 编辑

3NF,即第三范式是要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。例如,存在一个部门信息表,其中每个部门有部门编号(dept_id)、部门名称、部门简介等信息。那么在员工信息表中列出部门编号后就不能再将部门名称、部门简介等与部门有关的信息再加入员工信息表中。如果不存在部门信息表,则根据第三范式(3NF)也应该构建它,否则就会有大量的数据冗余。简而言之,第三范式就是属性不依赖于其它非主属性。满足第三范式(3NF)必须先满足第二范式(2NF)

2NF(第二范式)

第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。如图3-2 员工信息表中加上了员工编号(emp_id)列,因为每个员工的员工编号是唯一的,因此每个员工可以被唯一区分。这个惟一属性列被称为主关键字或主键、主码。

第三篇:数据库总结

数据库总结:共三天的课程

数据库的概念:数据库是一组有序的数据的集合; 数据库的作用:为了有效的管理数据; 数据类型:

一 字符串相关的类型:一般用于人名、大于2147483647(10位数)的数字、地址等字符信息

使用格式:字段名 char(存放字符的长度)

或者

字段名

varchar(存放字符的长度)Char:代表的是定长的字符串类型,定义了多长,就分配多长的存储空间,只要不超过定义的长度,分配给char的空间长度就不会改变,余下的部分用空格代替;

Varchar:代表的是可变长度的字符串类型,定义的长度可以理解为是虚拟的空间,只要字符串的长度不超过定义的长度,那么varchar的分配空间长度就是字符串实际的长度,余下的部分自动消失; 二 数字相关的类型:一般用于工资、人数统计等方面; 使用格式:字段名

int/float/double 【此处不用定义字段的长度】 int :取值的范围-2147483648~2147483647,后面可以设置主键及自增长;

float/double:用于带有小数的数据定义 decimal:多用于金钱的数据 三 时间相关的数据类型:一般用于时间的统计,例如登录时间、修改时间、退出时间等;

使用格式:字段名

date/time/datetime/timestamp 【此处不用定义字段的长度】,插入表的时候格式与字符串的插入格式一样,都是用单引号插入

date:日期类型

格式:yyyy-MM-dd time:时间类型

格式:hh:mm:ss Datetime:日期时间

格式:yyyy-MM-dd hh:mm:ss Timestamp:时间戳

格式:yyyy-MM-dd hh:mm:ss 数据库的操作:

一 查看所有数据库:select databases;二 查看所有表:select tables;三 创建数据库:create database 数据库名称;

use 数据库名称;

四 创建表:create table 表名(字段1

类型(长度)[约束], 字段2

类型(长度)[约束], 字段n

类型(长度)[约束])注:字段n的结尾处不需要用逗号分隔

五 删除当前表/数据库:drop table 表名/ 数据库名;

六 向表中插入数据:insert into 表名(字段1,字段2,字段n)values(值1,值2,值n),(值1,值2,值n),(值1,值2,值n),(值1,值2,值n)...注:此处的插入数据可以用逗号隔开,想要插入几条数据就插入几个值。

七 查看当前表的值:select * from 表名

注:*是通配符,代表全部的意思,此处*还可以用表中的字段名代替,那么查看就是相应的字段名下的数据。

约束:

一 主键约束:primary key 代表的是唯

一、不重复,非空的约束 使用格式: 字段名

类型(长度)primary key 自增长:auto_increment 必须与主键约束一同使用,字段的类型是整型,插入数据的时候可以不用向设置自增长的字段添加数据,起始的默认数字是:1 二 唯一约束:unique 不可以重复,唯一 使用格式: 字段名

类型(长度)unique 注:空格是不可以作为字符串使用的,空格相当于null,如果向设置unique的字段内插入数据是存在【‘空格’、null、(‘’)】当中两个或两个以上的时候就会报错【’null’是字符串,不是空】 三 非空约束:not null 插入数据时必须要为设置not null的字段插入数据,这个字段不能为空

使用格式: 字段名

类型(长度)not null 注:空格是不可以作为字符串使用的,空格相当于null,如果向设置not null的字段内插入数据是存在【‘空格’、null、(‘’)】当中一个或一个以上的时候就会报错

四 默认约束:default 为字段设置默认值,当不为设置默认约束的字段插入数据是,系统自动将默认值赋予这个字段 使用格式: 字段名

类型(长度)default 值 五 检查约束:check(检查的内容)使用格式: 字段名

类型(长度)check(检查的内容)注:在SQL语句中没有实际的含义,但是需要会用

六 外键约束:foreign key 必须是另一个表的主键(唯一的),设置了外键的字段,受到关联表中相应主键的字段的约束,当要为外键约束插入数据的时候,必须先为被关联的表插入相应主键的数据;

使用格式: 创建表时候就设置外键约束

字段名

类型(长度),Foreign key(字段名)references 表名(对应主键的字段名)表已经创建完,插入外键约束

Alter table 表名 add constraint fk_f foreign key(要设置外键的字段名)references 被关联的表名(被关联的字段名);表的结构:

查看表结构:desc/describe 表名;修改表名:alter table 表名 rename 新表名 添加新字段:alter table 表名 add 字段名 类型(长度)修改字段:alter table 表名 change 旧字段 新字段 新字段类型(长度)删除字段:alter table 表名 drop 字段名

记录的操作:

一 插入记录:insert into 表名(字段名1,字段名n)values(值1,值n)二 修改记录:update 表名 set 字段名=值 where 条件

注:这里如果不加where条件,那么这个表的这个字段名下的数据全部赋值成为“值”

三 删除记录:delete from表名 where 条件

注:此处删除的是表中的符合where条件的整条记录 注意:使用delete和update的时候要千万注意,必须要写where条件语句,要不然就会将当前表中的所有数据改变,在想改回来的话会非常非常费劲!!!

四 查询记录:select 字段名1,字段名n from 表名 where 查询条件 查询去掉重复的值:关键字 distinct 格式:select distinct 字段名1,字段名n from 表名命别名/赋值表: 关键字 as 命别名:select 字段名 as ‘自定义名’

from 表名 赋值表:create table 新表名 as select * from 旧表名 3 查询条件语句的范围:in(等值判断)/not in select 字段名1,字段名n from 表名 where 字段名

in/not in(值1,值n)4 模糊查询:like

匹配标识符:’_’代表一个字符、%代表多个字符

Select 字段名 from 表名 where 字段名 like ‘_sth%’ 注:like后面的判断值如果是数字的话要加单引号,例如想要查询的条件是12345,可以这样写:’%3%’,单引号必须加 5 区间查询:limit m,n

查询从第m个记录开始,一共n条记录,这里的m指的是类似Java数组里的下标,计数从0开始

Limit m

查询从头开始的一共m条记录

Select */字段名 from 表名 limit m,n 6 查询值是否存在某段区间内:between 最大值 and 最小值(int 型的最大值、最小值)Select 字段名1,字段名n from 表名

where 字段名 between 最大值

and 最小值:

注意这里面的条件含有等于最大值和等于最小值

字段名 between 最大值 and 最小值= 字段名>=最小值 and 字段名<=最大值

逻辑运算符在此处可通用:<

<=

>

>=

=

!=

集合函数: 使用方法与Java中的方法的使用类似,注意的是函数名后面紧跟着(),中间不能有空格 一 符合条件的记录的个数:countil

Select count(字段名)from 表名

where 查询条件 二 求某个字段的值的总和:sum Select sum(字段名)from 表名

where 查询条件 三 求某个字段的值的平均值:avg Select avg(字段名)from 表名

where 查询条件 四 求某个字段的值的最大值:max Select max(字段名)from 表名

where 查询条件 五 求某个字段的值的最大值:min Select min(字段名)from 表名

where 查询条件

多表查询:

笛卡尔积:select(字段1,字段n)from 表1,表n 自己想要的查询(找到所有被查询的表的相同的字段): Select(a.字段1,a.字段n,b.字段1,b.字段n)from 表名 as a,表名 as b where a.字段名=b.字段名;

联合查询:

左连接:select 字段名/* from 左表名

left join 右表名

on 左表名.字段名=右表名.字段名

查询结果:左表全部显示,右表与左表相同的字段名的部分显示 右连接:select 字段名/* from 左表名

right join 右表名

on 左表名.字段名=右表名.字段名

查询结果:右表全部显示,左表与右表相同的字段名的部分显示 内连接:select 字段名/* from 左表名

inner join 右表名

on 左表名.字段名=右表名.字段名

查询结果:只有左表与右表相同的部分才显示

全连接:select 字段名/* from 左表名

full join 右表名 查询结果:’*’的结果是笛卡尔积

‘字段名’的结果是这个字段名下的笛卡尔积

函数:函数名与小括号之间不能有空格,字符串必须用单引号圈起来

一 求字符串长度:length Select

length(字符串)二 字符串的截取:substring(字符串,m)/(字符串,m,n)Select

substring(字符串,m)/(字符串,m,n)三 小写转大写:upper Select

upper(字符串)四 大写转小写:lower Select

lower(字符串)五 加密:MD5 Select

MD5(字符串)六 显示现在的时间:now Select

now()

迷糊中: group by

order by 子查询

第四篇:数据库课程设计总结

课 程 设 计 报 告

课程名称数据库课程设计—总结题目个人CD盘管理系统_________________________________

指导教师设计起止日期

学院计算机学院

系别专业计算机科学与技术

学生姓名班级/学号 成绩___________________

课程设计总结:

经过近2个月的设计,CD盘管理系统基本开发完成,该系统是一个简单的关于数据库与现实相结合的管理系统,它集各种功能用于一身,在系统的各个模块中体现了它的功能,针对音乐爱好者的需求方面进行设计的,方便了用户的一些信息操作,为音乐爱好者节省了管理成本,提高管理效率。该系统的界面简单大方,非常方便用户的操作,同时,也为以后系统的扩展留出了足够的空间。

在此次设计中后台主要采用了servlet和JavaBean技术,数据库则加入了存储过程和触发器的控制。我进一步理解了servlet和JavaBean的工作机制和所提供的便利,也感受到了存储过程和触发器所带来的方便。

servlet具有以下的优势:方便Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。* 功能强大在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。

2可移植性好Servlet用Java编写,Servlet API具有完善的标准。因此,为IPlanet

Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、Microsoft IIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。3 节省投资不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。

JavaBean具有以下特点:

用户可以使用JavaBean将功能、处理、值、数据库访问和其他任何可以用java代码创造的对象进行打包,并且其他的开发者可以通过内部的JSP页面、Servlet、其他JavaBean、applet程序或者应用来使用这些对象。用户可以认为JavaBean提供了一种随时随地的复制和粘贴的功能,而不用关心任何改变。JavaBean可分为两种:一种是有用户界面(UI,User Interface)的JavaBean;还有一种是没有用户界面,主要负责处理事务(如数据运算,操纵数据库)的JavaBean。JSP通常访问的是后一种JavaBean。

存储过程的能力大大增强了SQL语言的功能和灵活性。存储过程可以用流控制语

句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。可保证数据的安全性和完整性。通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。通过存储过程可以使相关的动作在一起发生,从而可以维护数据库的完整性。在运行存储过程前,数据库已对其进行了语法和句法分析,并给出了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执行。可以降低网络的通信量。使体现企业规则的运算程序放入数据库服务器中,以便集中控制。当企业规则发生变化时在服务器中改变存储过程即可,无须修改任何应用程序。企业规则的特点是要经常变化,如果把体现企业规则的运算程序放入应用程序中,则当企业规则发生变化时,就需要修改应用程序工作量非常之大(修改、发行和安装应用程序)。如果把体现企业规则的运算放入存储过程中,则当企业规则发生变化时,只要修改存储过程就可以了,应用程序无须任何变化。

触发器可通过数据库中的相关表实现级联更改;不过,通过级联引用完整性约束可以更有效地执行这些更改。触发器可以强制比用 CHECK 约束定义的约束更为复杂的约束。与 CHECK 约束不同,触发器可以引用其它表中的列。例如,触发器可以使用另一个表中的 SELECT 比较插入或更新的数据,以及执行其它操作,如修改数据或显示用户定义错误信息。触发器也可以评估数据修改前后的表状态,并根据其差异采取对策。一个表中的多个同类触发器(INSERT、UPDATE 或 DELETE)允许采取多个不同的对策以响应同一个修改语句。

在本系统的设计过程中,首先通过对CD盘管理系统功能进行详细的分析,得到系统功能模块图,然后根据系统功能分析,围绕它进行系统的设计,介绍开发环境和开发技术,再可行性分析、功能和性能需求,然后得出系统业务流图、数据流图、E-R图,并进行数据库的设计和模块化的实现。由于之前有稍微接触过Java Web方面的知识,再加上利用自己的课余时间的学习,做起来感觉没太多的困难。经过这次系统设计过程,加深了我对数据库操作的认识,更加熟悉了Java Web的构架,如servlet,struts,SOA等等。完成本设计后,才知道平日里书本上所学的东西太少,仅是些概念知识,没运用到实践中来,知识是无法得到升华的。只有不断地学习才能够跟上科技和知识的发展步伐。

第五篇:数据库课程总结

数据库课程总结

软件0701

07301024

杨彦妍

在学习数据库之前一直觉得数据库没有什么深入研究的价值,觉得无非是将数据存起来进行增删改查的操作就是了。直到真正接触到了数据库这门课才真地发现了这里面得奥妙和值得专研的价值。不知不觉中已经过了将近一个学期,这是第一次接触王老师的课堂,但是老师清晰地讲解让我这一个学期收益匪浅。

数据已然成为当今信息社会的一种极为重要的资源,各个部门无时无刻不在于数据打交道,对于这些大量数据的处理使得数据库应运而生。作为学习软件的我们对于数据库的学习更加是必不可少。

虽然对于SQL语言这些东西以前基本上没有太多的接触,但是清晰易懂语言的模式并没有对学习造成太大的困扰。而实际上这学期的双语教学的确让我的学习变的有些吃力,不是因为读不懂,而是读过之后理解仅仅停留在字面意思上,不能很透彻地理解到位。但是老师课堂上深入浅出的讲解,和对于课件的翻译让我对此有了很大的弥补。对于数据库的理解已经不仅仅是知道增删改查这些简单的基本操作,知道表之间的连接,一些运算,一些模式等等。实际上,对于数据库进行建立与操作是十分复杂的,中间要经过很多考虑对于现实的结合,对于软硬件的要求都需要考虑在内。

从某种意义上看来说,对于数据库的学习不仅仅改变了我对与数据库的看法,同时也改变了我对于程序设计的看法。从前简单的看到就做是不科学的,应该经过规划和研究分析才能上手。于此同时,老师留的项目其实是对于我们的所学习知识的一种检验与扩充。因为项目结合很多的其他知识,同时做项目的过程是一个对于知识的重新审视与巩固的过程。

总地来说,这学期的数据库课程让我觉得有所收获,有所得。加强了对于课程本身的理解,同时也知道了更广的知识面。其实感受最深的还是老师的讲课方式,很详细很透彻,不懂的地方老师还会很耐心地讲解,总很和蔼,问问题的时候也不会紧张。

关于意见、建议,总体上来说,老师的方法很好。如果真说意见,建议的话,我觉得针对双语教学,上课让同学翻译一些要点是必要的。因为本身大家对于英语的理解就不容易透彻,再加上一部分同学的英语水平并不是很好,所以容易造成误解。如果自己翻译,老师更正的话,会让我们的记忆更加深刻,理解更加透彻,掌握更加牢固。另一点就是我觉得可以减少对于PPT 的依赖。因为每次上课的时候,看课件有时候并不是很清楚,但是当老师在黑板上演示过后就觉得特别的理解,很清晰,感觉线索被理顺了,明了了。

这就是我对于今年着学期上数据库的一些感受,真的很希望以后还有机会选王老师的课。

下载数据库总结(精选5篇)word格式文档
下载数据库总结(精选5篇).doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    数据库复习总结

    数据管理技术的发展经历了3个阶段:人工管理阶段、文件系统阶段、数据库管理阶段。 数据库的三级模式由[模式]、[外模式]、[内模式]组成。(模式又叫概念模式、逻辑模式,外模式......

    数据库复习总结

    第一章数据库系统概论 1.试述数据、数据库、数据库系统、数据库管理系统的概念。 数据:描述事物的符号记录称为数据。数据的种类有文字、图形、图象、声音、正文等等。数据与......

    数据库原理总结

    1关系的范式及规范化 范式是衡量关系模式优劣的标准。范式级别越高,其数据冗余和操作异常现象就越少。第一范式:如果一个关系模式R的所有属性都是不可分的基本数据项,则这个关......

    数据库总结(简答题)

    数据的定义 :描述事物的符号记录 数据库的定义:数据库(Database,简称DB)是长期储存在计算机内、有组织的、可共享的大量数据集合 DBMS的定义:数据库管理系统(Database Manage......

    【数据库知识点总结】

    数据库概念总结 第一章 绪论 1、数据:描述事物的符号记录称为数据。可以是数字也可以是文字、图形、图像声音、语言等。 2、数据库:是长期储存在计算机内、有组织的、可共享的......

    数据库编程总结(推荐)

    数据库编程总结 当前各种主流数据库有很多,包括Oracle, MS SQL Server, Sybase, Informix, MySQL, DB2, Interbase / Firebird, PostgreSQL, SQLite, SAP/DB, TimesTen, MS A......

    数据库实验总结

    实验总结 在上一个星期,我们用数据库做了一个学生管理系统,分别实现了学生管理系统的添加学生信息、删除学生信息、修改学生信息退出等几大功能。 在这次项目中,我们都很用心去......

    数据库课程设计总结

    篇一:数据库课程设计个人总结 数据库课程设计个人总结 姓名:邢王秀 学号:200924101215 班级:09计本班 一个月的时间非常快就过去了,这一个月我不敢说自己有多大的进步,获得了多少......