登录数据库有两种认证方式:
操作系统认证:默认情况下,如果在本机服务器登录oracle数据库,可以使用操作系统认证,不用输入数据库用户名及密码
用户密码认证:如果是远程连接数据库,则需要使用数据库的用户名 密码进行认证
oracle数据库默认有两个超级用户sys system
windows系统中查看oracle数据库是否已经启动
开始-控制面板-管理工具-服务
查看数据库名称
SQL> show parameter db_name
sql即结构化查询语言,市一中数据库查询和程序涉及语言,用于存取数据以及查询、更新和管理关系数据库系统。
数据库字典表dba_users表存储着oracle数据库的所有用户信息
查询用户的状态
SQL> select username,account_status from dba_users where username=‘SCOTT‘;
USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SCOTT OPEN
where条件后面的每个字段所表示的值是区分大小写的。
查看用户有哪些表
select table_name from user_tables;
字符左对齐
数字右对齐
表:是数据库中用来存储数据的对象,是有结构的数据的集合,是整个数据库系统的基础。
表的列类型,可以是数字、文本类型。
如果是数字类型,则不能输入文本,文本类型的字段则可以输入数字,数字可以作为文本。
主键:主键是关系数据库表中的某一列或者某几列的集合。它能够唯一标识数据库表中的一行。主键不能包含空值。
外键:外键是关系数据库表中的一列或者某几列的组合;它的值或者与另外一个表的某一列或者某几列相匹配,这一列是另一个表的主键。
oracle数据库共有5个约束:主键 外键 非空 唯一 条件
非空:就是这个列的值不能为空(not null)
唯一:这个列的值在表中是唯一存在的,不能重复,但可以为空值null
条件:可以对列的值设定在某个条件范围之内。比如,人的年龄就不能为负数,可以设置这个列的条件大于0,小于200
表的主键和唯一约束很像,有哪些区别?
表的主键是列的值为表中的唯一标识,不能为空值null,而表的唯一约束是列的值在表中唯一存在,可以为空值null
create table items(itemNO number(2) constraint pk_items primary key,itemName varchar2(20) not null);
如果是主键,该列的值不能有重复数据。
如果是外键,需要确认items表的deptno列中是否存在3号这个项目。没有存在是不能增加的,这就可以显示出两个表关联外键所起的作用。
alter table items modify (manager varchar2(8));
alter table items drop column manager;
create user lisi identified by lisi;
grant connect to lisi;
grant select on dept to lisi;
grant select on bonus to lisi;
grant select on salgrade to lisi;
revoke select on emp from lisi;
grant select,insert,delete,update on emp to lisi;
修改密码:
alter user lisi identified by lisi321;
删除用户
drop user lisi;
drop user lisi cascade;
查看数据库用户本身拥有的权限
select * from session_privs;
查看数据库用户拥有的角色
select * from user_role_privs;
查看角色拥有哪些权限
select * from dba_sys_privs where grantee=‘CONNECT‘;
一般开发人员拥有connect resource两个角色就可以满足需求了
数据库有哪些重要的对象:
表 视图 索引 函数 序列 触发器
对象是性质相同的数据元素的集合。
列中的数据类型和约束决定了数据的合法性和统一性
创建序列:
create sequence bookId
start with 1
increment by 1
maxvalue 999999
nocache
nocycle;
序列的nextval表示序列的下一个数值,currval表示序列的当前数值
虚表dual是oracle数据库与数据字典一起自动创建的一个表,它只有一列dummy,数据类型为varchar2(1)
创建一个通过员工的ID号获取其薪水的函数
create or replace function get_empsal(emp_no in number)
return number
is emp_sal number(7,2)
begin
select sal into emp_sal from emp where empno=emp_no;
return (emp_sal);
end;
create or replace function这是创建或者已经存在的函数,函数名为get_empsal,括号中的emp_no为输入的工号,输入的类型是number
return number该函数定义返回一个数值类型的值
测试函数的写法:
select get_empsal(7566) from dual;
存储过程是一组为了完成特定功能而建立的sql语句集,经编译后存储在数据库中。
用户通过指定存储过程的名字并给出参数来执行它
根据员工号来删除员工信息的存储过程
create or replace procedure delempno(empid in number) is
begin
delete from emp where emp.empno=empid;
commit;
end delempno;
用法:
execute delempno(7566);
索引是对数据库表中一列或多列的值进行排序的一种结构。
创建一个存储过程向某表插入大量数据
create table test_index(id number,name varchar2(200));
create or replace procedure insert_data
is
temp varchar2(20):= ‘Insert Data‘
begin
for i in 1...10000000 loop
insert into test_index(id,name) values(i ,temp);
end loop;
commit;
end;
execute insert_data;
同义词是现有对象的一个别名。分为私有同义词和公共同义词。
查询用户是否有创建同义词的权限
select * from session_privs where privilege like ‘%SYNONYM%‘;
grant create any synonym to scott;
grant create public synonym to scott;
oracle数据库中函数和存储过程有什么区别?
1 函数必须有返回值,而过程没有返回值
2 函数可以单独执行,而过程必须通过execute执行
3 函数可以嵌入sql中执行,而过程不能。
我们可以将比较复杂的查询写成函数,然后到存储过程中调用这些函数。
关闭数据库的不同命令有何区别