`
uusoft
  • 浏览: 11070 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

day02

 
阅读更多
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; 
别名需要使用“”号圈中,英文不需要“”号 
分享到:
评论

相关推荐

    hibernate_day02笔记

    【hibernate_day02笔记】的文档主要涵盖了学习Hibernate框架的基础内容,包括ORM思想、Hibernate入门案例、配置文件解析、核心API的使用等。以下是详细的讲解: **ORM思想**: ORM(Object-Relational Mapping)即...

    Hibernate-day02

    《Hibernate-day02》 在深入探讨Hibernate-day02这个主题之前,让我们先理解一下Hibernate的基本概念。Hibernate是一个开源的对象关系映射(ORM)框架,它简化了Java开发者与数据库之间的交互,允许开发者以面向...

    黑马程序员_hibernate框架开发2016版讲义和笔记资料_day02

    《黑马程序员_hibernate框架开发2016版讲义和笔记资料_day02》 本文将深入探讨2016年黑马程序员发布的Hibernate框架开发课程的第二天内容。Hibernate,一个强大的Java持久化框架,简化了数据库操作,为开发者提供了...

    mybatis-day02

    这个“mybatis-day02”的主题可能涵盖MyBatis的基本概念、配置、映射器(Mapper)以及动态SQL等内容。 1. **MyBatis简介** MyBatis是由Google Code托管,后来迁移到GitHub的开源项目,由Clinton Begin创建。它消除...

    springmvc_day02

    在“springmvc_day02”的主题下,我们将深入探讨视图解析器(View Resolver)这一核心组件,它在Spring MVC中扮演着至关重要的角色,简化了控制器(Controller)中的视图逻辑。 视图解析器的主要任务是将逻辑视图名...

    spring_day02

    "spring_day02"这个标题可能表示我们正在深入学习Spring框架的第二天内容,着重于Spring的核心特性和实际应用。 首先,Spring的核心组件包括IoC(Inversion of Control,控制反转)容器和AOP(Aspect-Oriented ...

    day02 【数据类型转换、运算符、方法入门】.zip

    在这个"day02 【数据类型转换、运算符、方法入门】"的学习资料中,我们将深入探讨这些关键概念。 首先,我们来讨论数据类型转换。在Java中,主要有两种类型的转换:自动类型转换(也称为隐式转换)和强制类型转换...

    简单分布式系统day02代码

    在"简单分布式系统day02代码"中,完成的日志服务可能是为了收集、存储和分析应用程序生成的事件和错误信息。日志服务的重要性在于它能够帮助开发者快速定位问题,进行故障排查,并为系统的健康状况提供审计线索。在...

    java day02笔记

    ### Java Day02 笔记知识点总结 #### 02.09 Java语言基础(变量的概述及格式) - **A: 什么是变量** - 变量是在程序执行过程中,其值可以在某个范围内发生变化的量。 - **B: 变量的定义格式** - 变量的定义遵循...

    day02笔记.md

    day02笔记.md

    学习笔记java _day02

    在Java学习的第二天,我们...总结来说,Java Day02的学习涵盖了JRE的组成、标准库的包结构、编程基础元素如注释、标识符和关键字,以及基本数据类型。这些构成了Java编程的基础,是进一步学习和掌握Java技术的关键。

    黑马程序员Java基础视频辅导班Day02

    "黑马程序员Java基础视频辅导班Day02"的内容主要涵盖了常量、变量以及运算符这些核心概念。 首先,我们来讨论常量。常量是程序中不会改变的值,它们一旦被定义,就不能再进行修改。在Java中,有两种类型的常量:字...

    spring--day02笔记.doc

    Spring框架_day02笔记 Spring框架是Java平台上一个开源的应用程序框架,用于开发企业级应用程序。该框架提供了一个以Bean为中心的配置文件,并提供了依赖注入(Dependency Injection,DI)机制来管理应用程序中的...

    多线程-day02.docx

    在“多线程-day02”的学习资源中,我们深入探讨了Java内存模型以及多线程的特性与控制机制。 **Java内存模型** Java内存模型,也称为JVM内存模型,是Java程序员理解和掌握的基础知识,特别是在进行并发编程时。它...

    Java基础之笔记系列—Day02(基础语法)

    ### Java基础之笔记系列—Day02(基础语法) #### Chapter1: Java概述 ##### 一、Java语言基础组成-Part1 Java语言的基础组成部分包括关键字、标识符、注释、常量和变量、运算符、语句、函数和数组等。 ### 1.1 ...

    java_hibernate_day02.pdf

    java_hibernate_day02.pdf

    day02-SpringCloud02

    在本课程"day02-SpringCloud02"中,我们将深入探讨Spring Cloud这一微服务框架的第二日学习内容。Spring Cloud是Java开发者广泛使用的工具,用于构建分布式系统中的服务发现、配置管理、断路器、智能路由、微代理、...

    Javaday02训练

    Java Day02训练是针对Java初学者或有一定基础的学习者设计的一次深入学习活动,旨在强化和巩固Java编程的基础知识。在这个训练中,你将接触到一系列关键的Java编程概念和技术,包括但不限于变量、数据类型、控制流程...

    最新老男孩Mysql标杆班day02.rar

    1.2020-开年标杆班-day02-MySQL上节回顾 2.2020-开年标杆班-day02-MySQL-用户管理 3.2020-开年标杆班-day02-MySQL-权限管理 4.2020-开年标杆班-day02-MySQL-连接管理 5.2020-开年标杆班-day02-MySQL-初始化...

    DAY02.zip

    很抱歉,但根据您给出的信息,"DAY02.zip" 的描述中没有提供任何具体的IT知识点。标签为空,且压缩包子文件的文件名称列表只包含"DAY02"这一条目,这同样没有提供足够的信息来生成相关的IT知识。为了提供详细的知识...

Global site tag (gtag.js) - Google Analytics