数据库札记

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值