您的位置:首页 > 数据库

数据库札记

2016-03-21 21:45 363 查看
1.数据库厂商

oracle oracle9i,oracle10g,oracle11g,oracle12c

mysql

sqlsever(microsoft) sybase db2(金融产业,IBM产)

2.**基本概念 设计时称实体(关系,表格),属性(列),元组(记录,一行数据),主键(确定每一行的唯一性)

3. 设计数据库遵循关系范式, 第一范式:每个属性不可再分,第二范式:存在主属性(主键),第三范式:解除非主属性之间的依赖

4. 表空间是存储数据库对象的容器,表和表空间的关系就相当于文件和文件夹的关系,表空间是由一个或者多个数据文件组成

数据类型:字符型(char,varchar,varchar2),数值型(number),日期类型(date)

5.SQL语句(结构化查询语言)

DDL数据定义语句,定义和修改表结构 create drop alter (Data Definition Language)

DML操作数据语句,对表中数据进行插入修改和删除 insert delete update (Data manipulation language)

DCL事务控制语句,用来管理事务 commit rollback (Data Control Language)

DQL查询数据语句 select (data query language)

6.insert into (列名1,列名2,列名3) values(列值1,列值2,列值3)

7.模糊查询:like

%:指代任意0个或者多个字符

_:指代任意一个字符

8.distinct 去除重复的

9.order by 列名1 asc/desc,列名2 asc/desc

10.between(a,b) in(a,b,c,d)

11.having语句中不能包含别名,经常使用聚合函数

select - from - where - group by - having - order by

查询s_emp表,在含有上级领导且名字中不含’Z’的员工中,统计每个部门的信息,要求部门平均高于1800,求出每个部门的编号,人数,平均工资,

工资总和,最后根据人数进行降序排列,如果人数一致,根据工资总和进行升序排列

  select dept_id,count(*),avg(salary),sum(salary) from s_emp where manager_id is not null and first_name not like ‘%Z%’

group by dept_id having avg(salary)>1800 order by count(*) desc,sum(salary);

12.字符串长度length,转大小写lower/upper,substr(字符串<列名>,正/负<头尾>,截取的长度),

ltrim/rtrim/trim(字符串<列名>)[去除空格左、右、两边]

13 abs() 绝对值 ceil()/floor() 向上/下取整 mod(a,b) 取余 sign(num) 判断数字正负,返回1正,-1负 sqrt() 平方根 power(a,b) 乘方

to_number(字符串)

14 to_date(字符串,格式) to_char(date类型,格式)

15 如果表的连接查询中,没有加入关联条件,就会出现两张表的数据交叉连接,称为笛卡尔积。

16 内连接:只查询两张表中有关联关系的数据

a)等值连接

b)非等值连接

c)自连接

17 外连接:查询两张或者多张表,既要查询有关联关系的数据,还要查询某一张表或者所有表所有的数据(还要查询没有关联关系的数据)

a)使用Oracle中专用语法来实现外连接查询(+):要查询某一张表中的所有的数据,在关联条件的对方加入(+)

b)重点:使用标准sql语句来实现外连接查询,可以匹配任意的数据库

*内连接 功能一样,格式特别一点

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

from 左表 别名1 inner join 右表 别名2

on 关联条件

*左外连接: 查询左表中所有的数据,以及有关联关系的右表中的数据

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

from 左表 别名1 left(outer) join 右表 别名2

on 关联条件

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

18 序列:oracle数据库中的一个数据库对象,通常用来记录主键 create sequence 序列名 nextval.currval 来使用

create sequenece id_seq3 start with 1000 increment by 10 minvalue 1 maxvalue 1000000000;

19 子查询(嵌套查询):在一条查询语句内部,又包含了一条查询语句

select id,name from s_dept where id=(select dept_id from s_emp where first_name =’Mai’);

select id,name,region_id from s_dept where id=(select dept_id from s_emp where id=(select manager_id from s_emp

where first_name=’Elena’)); //elena的领导所在的部门信息

20 事务:把一系列连续的操作封装到一起,要么一起成功,要么一起失败,封装这些连续的操作就是事务。commit rollback

事务用来封装一系列连续的操作,用来保持一致性

21 视图:是一张虚拟表,通过视图来间接查看表中的数据。

1) 视图中不保存任何的数据,但是可以通过视图间接去查看,修改表中的数据,删除视图对表中的数据没有任何的影响。

2) 创建视图 create view 视图名 as 查询语句 (with read onley 只读视图)

3) 修改视图 create or replace view 视图名 as 查询语句 drop view 视图名

4) 视图列名不能重复,重复需要取别名

22 约束:对表中的某些列,设置特定的规则,要求插入的数据必须要复合这些规则。如果用户插入的数据不符合约束(规则),将无法

对数据进行任何的修改操作。

约束的类型:

主键约束:用于保证数据完整性,最主要作用避免出现重复的数据

a.一个表只能定义一个主键约束,使用主键约束修饰的列,可以是一个或者多个列的组合,多列组合叫做联合主键

b.创建时指定主键名称 id number(4) constraint 主键名 primary key,

c.创建时指定联合主键名称 constraint 主键名 priamry key(列名1,列名2) //二者都重复了才冲突

d.修改时添加主键名 alter table 表名 add constraint 主键名 primary key(列名)/key(列名1,列名2)

e.删除主键 alter table 表名 drop constraint 主键名

唯一性约束:唯一约束用于指定一个或者多个列的组合值具有唯一性,防止在该列上输入重复的值

a.唯一约束修饰的列,可以插入null值。

b.一张表中可以出现多个唯一约束。

c.可以使用一个唯一约束修饰多个列。

d.唯一约束不能修饰主键所在的列。

e. 创建时指定 name varchar2(5) unique/ 修改时指定alter table 表名 add constraint 约束名 unique(列名)/unique(列名1,2)

f. 删除 alter table 表名 drop constriant 约束名

g. 唯一约束与主键的区别. 1)一个表只有一个主键约束,多个唯一约束。2)主键约束修饰的列不能为空,唯一的可以。

检查约束:用于限定某列的值必须要满足什么条件,避免用户输入一些非法数据。

a.创建时指定 sex char(2) check(sex in(‘m’,’w’));

b.修改时添加 alter table 表名 add constraint 约束名 check(age between 1 and 120);

c.删除 alter table 表名 drop constraint 约束名

默认值约束:在指定的列上设置默认值,如果插入数据时候,该列没有插入数据,默认使用默认值

a.添加age number(3) default 18

b.添加/修改alter table 表名 modify age number(3) default 22

c.删除 alter table 表名 modify age number(3) default null;

非空约束:被非空约束修饰的列,该列必须要有值

name varchar2(50) not null unique //经常与unique 结合使用

外键约束:

1) 参照完整性:在两张表之间,一张表(子表)的数据依赖于另外一张表(主表)的数据而存在,称为表之间的参照完整性

2) 外键约束:用来描述两张表的关联,在子表中(s_emp)定义某一个列(dept_id)使用外键进行修饰,

该列的列值依赖于主表(s_dept)中主键(id)的值,通过外键来维护关联关系。

3) 主表:没有外键的表,外键所在的列的列值依赖主表中主键的值

子表:含有外键的表

插入数据时候,先往主表中插入数据,然后再往子表中插入数据。

s_emp(子表)- dept_id s_dept(主表) - id

alter table s_emp add constraint fk_s_mep_s_dept_deptid foreign key(dept_id) references s_dept(id);

5 创建表空间:

create tablespace userspace111 datafile ‘/home/tarena/userspace111.dbf’ size 3M //初始大小

autoextend on //自动增长

next 1M //每次1M

maxsize1000M //最大1000M
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: