`
- 浏览:
11070 次
- 性别:
- 来自:
深圳
-
oracle中的用户管理
grant update on emp to xiaoming --让xiaoming用户有更新emp表的权限
scott用户让xiaoming可以查询emp表,又让xiaoming可以把这个权限传递下去
--如果是对象权限用 with grant option
grant select on emp to xiaoming with grant option
grant select on scott.emp to xiaohong --xiaoming给xiaohong赋权emp查询
revoke select on emp from xiaoming
---如果scott用户收回xiaoming的权限 那么小红的权限也将被收回
--如果是系统权限用 with admin option
grant connect to xiaoming with admin option
6.用户口令的管理--profile
profile 是口令限制,资源限制命令的集合。当创建数据库的时候,oracle会自动创建名称为default的profile文件,如果建立的用户指定的profile选项,oracle会自动将default分配给用户。
一般用dba的身份去执行profile命令
a.账户锁定
用户最多尝试登陆3次,如果3次都错误,账户被锁定2天
1.创建profile:create profile lock_account limit failed_login_accounts 3 password_lock_time 2;
2.分配给用户:alter user tea profile lock_account;
b.给账户解锁
alter user tea account unlock;
3.让用户定期修改密码(终止口令)
10天修改一次密码,宽限2天
1.创建profile: create profile myprofile limit password_life_time 10 password_grace_time 2;
2:分配给用户
alter user tea profile myprofile;
4.口令历史
用户修改密码时,新密码不能与旧密码相同,旧密码的使用需在这次更改的10天后
create profile password_history limit password_life_time 10 password_grace_time 2 password_reuse_time_10;
alter user tea profile password_history;
5.删除profile文件
drop profile password_history [cascade]
二、表的管理
表的命名:必须以字母开头,不能超过30字符,不能使用系统保留关键字
数据类型
1.字符型
char() 定长,最大2000字符,char(10),存入“小明”占了4个字符 ,其余6个用空格补齐
varchar2() 可变长度,最大4000字符 ,varchar(10),存入“小明”,其实就占了4个字符
2.数字型
number -10的38~~10的38
number(5,2)可以表示小数 有效位为5位,小数点后2位 范围:-999.99~999.99
number(5) 范围 99999~99999
clob (character large object) 存放大数据 最多4g
3.日期型
date --包含年月日时分秒 oracle中默认的格式是:DD-MON-YY 如:“12-1月-1997”
4.图片 blob 二进制数据,存放图片视频等,最大4g 一般以链接的形式保存图片视频数据,数据另外存放在一个文件夹,除非从安全角度考虑,才把图片视频置于数据库中。
如何建表?
create table student(
xh number(4),
xm varchar(20),
sex char(2),
birthday date,
sal number(7,2)
);
create table classes(
classId number(2),
cname vachar2(20)
);
修改表?
--添加一个字段
alter table student add(classId number(2));
--修改字段长度
alter table student modify(xm varchar(30));
--修改字段类型 或名称(表中如果有数据的话不建议)
alter table student modify(xm char(30));
--删除字段(开发中切忌此做法,会造成数据紊乱,添加字段OK)
alter table student drop column sal;
--修改表的名字
rename student to stu;
添加数据?
--向表中所有字段赋值
insert into student values(1,'小明','男','01-3月-99')
oracle 中默认的日期格式‘dd-mon-yy’ dd 日子(天) mon 月份 yy 2 位的年 ‘09-6 月-99’ 1999 年6 月9 日
修改日期的默认格式(临时修改,数据库重启后仍为默认;如要修改需要修改注册表)
alter session set nls_date_format='yyyy-mm-dd';
修改后我们可以插入自己喜欢的日期格式
insert into student values(2,'小明2','男','2011-12-10');
--插入部分字段
insert into student(xh,xm,sex) values(3,'lily','女')
--插入空值
insert into student(xh,xm,sex,birthday) values(4,'tina','女','2011-12-11');
--查询空值
select * from student where birthday is null;
delete from student --删除数据 表结构还在 写日志
--创建一个回滚点
savepoint a
delete from student;
rollback to a;
一个有经验的 DBA,在确保完成无误的情况下要定期创建还原点。
drop table student;--删除表的结构和数据
truncate table student --删除表的数据 不写日志 效率高
表的查询?
简单的查询语句
--查看表结构
DESC emp;
--查询所有列
SELECT * FROM dept;
--切忌动不动就用 select *
SET TIMING ON; --打开显示操作时间的开关,在下面显示查询时间。
CREATE TABLE users(userId VARCHAR2(10), uName VARCHAR2 (20), uPassw VARCHAR2(30));
INSERT INTO users VALUES('a0001', '啊啊啊啊', 'aaaaaaaaaaaaaaaaaaaaaaa');
--从自己复制,加大数据量 大概几万行就可以了 可以用来测试 sql 语句执行效率
INSERT INTO users (userId,UNAME,UPASSW) SELECT * FROM users;
SELECT COUNT (*) FROM users;---统计行数
--查询指定列
SELECT ename, sal, job, deptno FROM emp;
--如何取消重复行 DISTINCT
SELECT DISTINCT deptno, job FROM emp;
--查询 SMITH 所在部门,工作,薪水
SELECT deptno,job,sal FROM emp WHERE ename = 'SMITH';
注意:oracle 对内容的大小写是区分的,所以 ename='SMITH'和 ename='smith'是不同的
--使用算术表达式 nvl null
问题:如何显示每个雇员的年工资?
SELECT sal*13+nvl(comm, 0)*13 "年薪" , ename, comm FROM emp;
--使用列的别名
SELECT ename "姓名", sal*12 AS "年收入" FROM emp;
-- 如何处理 null 值
使用 nvl 函数来处理
-- 如何连接字符串(||)
SELECT ename || ' is a ' || job FROM emp;
结果如下:
ENAME||'ISA'||JOB
-------------------------
SMITH is a CLERK
ALLEN is a SALESMAN
WARD is a SALESMAN
JONES is a MANAGER
MARTIN is a SALESMAN
BLAKE is a MANAGER
CLARK is a MANAGER
SCOTT is a ANALYST
KING is a PRESIDENT
TURNER is a SALESMAN
ADAMS is a CLERK
JAMES is a CLERK
FORD is a ANALYST
MILLER is a CLERK
--使用 where 子句
问题:如何显示工资高于 3000的 员工?
SELECT * FROM emp WHERE sal > 3000;
--问题:如何查找 1982.1.1 后入职的员工?
SELECT ename,hiredate FROM emp WHERE hiredate >'1-1 月-1982';
--问题:如何显示工资在 2000到 3000 的员工?
SELECT ename,sal FROM emp WHERE sal >=2000 AND sal <= 3000;
--如何使用 like 操作符
%:表示 0 到多个字符 _:表示任意单个字符
问题:如何显示首字符为 S 的员工姓名和工资?
SELECT ename,sal FROM emp WHERE ename like 'S%';
如何显示第三个字符为大写 O的所有员工的姓名和工资?
SELECT ename,sal FROM emp WHERE ename like '__O%';
在 where 条件中使用 in
问题:如何显示 empno 为7844, 7839,123,456 的雇员情况?
SELECT * FROM emp WHERE empno in (7844, 7839,123,456);
--使用 is null 的操作符
问题:如何显示没有上级的雇员的情况?
错误写法:select * from emp where mgr = '';
正确写法:SELECT * FROM emp WHERE mgr is null;
-- 使用逻辑操作符号
问题:查询工资高于 500 或者是岗位为 MANAGER 的雇员,同时还要满足他们的姓名首字母为大写的 J?
SELECT * FROM emp WHERE (sal >500 or job = 'MANAGER') and ename LIKE 'J%';
--使用 order by 字句 默认 asc
问题:如何按照工资的从低到高的顺序显示雇员的信息?
SELECT * FROM emp ORDER by sal;
--问题:按照部门号升序而雇员的工资降序排列
SELECT * FROM emp ORDER by deptno, sal DESC;
--使用列的别名排序
问题:按年薪排序
select ename, (sal+nvl(comm,0))*12 "年薪" from emp order by "年薪" asc;
别名需要使用“”号圈中,英文不需要“”号
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
【hibernate_day02笔记】的文档主要涵盖了学习Hibernate框架的基础内容,包括ORM思想、Hibernate入门案例、配置文件解析、核心API的使用等。以下是详细的讲解: **ORM思想**: ORM(Object-Relational Mapping)即...
《Hibernate-day02》 在深入探讨Hibernate-day02这个主题之前,让我们先理解一下Hibernate的基本概念。Hibernate是一个开源的对象关系映射(ORM)框架,它简化了Java开发者与数据库之间的交互,允许开发者以面向...
《黑马程序员_hibernate框架开发2016版讲义和笔记资料_day02》 本文将深入探讨2016年黑马程序员发布的Hibernate框架开发课程的第二天内容。Hibernate,一个强大的Java持久化框架,简化了数据库操作,为开发者提供了...
这个“mybatis-day02”的主题可能涵盖MyBatis的基本概念、配置、映射器(Mapper)以及动态SQL等内容。 1. **MyBatis简介** MyBatis是由Google Code托管,后来迁移到GitHub的开源项目,由Clinton Begin创建。它消除...
在“springmvc_day02”的主题下,我们将深入探讨视图解析器(View Resolver)这一核心组件,它在Spring MVC中扮演着至关重要的角色,简化了控制器(Controller)中的视图逻辑。 视图解析器的主要任务是将逻辑视图名...
"spring_day02"这个标题可能表示我们正在深入学习Spring框架的第二天内容,着重于Spring的核心特性和实际应用。 首先,Spring的核心组件包括IoC(Inversion of Control,控制反转)容器和AOP(Aspect-Oriented ...
在这个"day02 【数据类型转换、运算符、方法入门】"的学习资料中,我们将深入探讨这些关键概念。 首先,我们来讨论数据类型转换。在Java中,主要有两种类型的转换:自动类型转换(也称为隐式转换)和强制类型转换...
在"简单分布式系统day02代码"中,完成的日志服务可能是为了收集、存储和分析应用程序生成的事件和错误信息。日志服务的重要性在于它能够帮助开发者快速定位问题,进行故障排查,并为系统的健康状况提供审计线索。在...
### Java Day02 笔记知识点总结 #### 02.09 Java语言基础(变量的概述及格式) - **A: 什么是变量** - 变量是在程序执行过程中,其值可以在某个范围内发生变化的量。 - **B: 变量的定义格式** - 变量的定义遵循...
day02笔记.md
在Java学习的第二天,我们...总结来说,Java Day02的学习涵盖了JRE的组成、标准库的包结构、编程基础元素如注释、标识符和关键字,以及基本数据类型。这些构成了Java编程的基础,是进一步学习和掌握Java技术的关键。
"黑马程序员Java基础视频辅导班Day02"的内容主要涵盖了常量、变量以及运算符这些核心概念。 首先,我们来讨论常量。常量是程序中不会改变的值,它们一旦被定义,就不能再进行修改。在Java中,有两种类型的常量:字...
Spring框架_day02笔记 Spring框架是Java平台上一个开源的应用程序框架,用于开发企业级应用程序。该框架提供了一个以Bean为中心的配置文件,并提供了依赖注入(Dependency Injection,DI)机制来管理应用程序中的...
在“多线程-day02”的学习资源中,我们深入探讨了Java内存模型以及多线程的特性与控制机制。 **Java内存模型** Java内存模型,也称为JVM内存模型,是Java程序员理解和掌握的基础知识,特别是在进行并发编程时。它...
### Java基础之笔记系列—Day02(基础语法) #### Chapter1: Java概述 ##### 一、Java语言基础组成-Part1 Java语言的基础组成部分包括关键字、标识符、注释、常量和变量、运算符、语句、函数和数组等。 ### 1.1 ...
java_hibernate_day02.pdf
在本课程"day02-SpringCloud02"中,我们将深入探讨Spring Cloud这一微服务框架的第二日学习内容。Spring Cloud是Java开发者广泛使用的工具,用于构建分布式系统中的服务发现、配置管理、断路器、智能路由、微代理、...
Java Day02训练是针对Java初学者或有一定基础的学习者设计的一次深入学习活动,旨在强化和巩固Java编程的基础知识。在这个训练中,你将接触到一系列关键的Java编程概念和技术,包括但不限于变量、数据类型、控制流程...
1.2020-开年标杆班-day02-MySQL上节回顾 2.2020-开年标杆班-day02-MySQL-用户管理 3.2020-开年标杆班-day02-MySQL-权限管理 4.2020-开年标杆班-day02-MySQL-连接管理 5.2020-开年标杆班-day02-MySQL-初始化...
很抱歉,但根据您给出的信息,"DAY02.zip" 的描述中没有提供任何具体的IT知识点。标签为空,且压缩包子文件的文件名称列表只包含"DAY02"这一条目,这同样没有提供足够的信息来生成相关的IT知识。为了提供详细的知识...