Oracle学习笔记
1、创建表空间
Create tablespace 空间名 Datafile ?文件路径? Size 10M autoextend on Eg:
create tablespace ultraeos logging
datafile 'D:\\Data\\Oracle\\tablespace10g\%ultraeos.dbf' size 32m autoextend on
next 32m maxsize 2048m extent management local;
2、创建新用记并授予权限
Create user 用户名
Identified by 用户密码 // (不能以数字开头) Default tablespace 表空间名
Temporary tablespace temp;//临时表空间为temp,系统默认
Grant connect to duly;
CONNECT 角色将允许用户连接数据库并在数据库中创建表或其它对象
Grant resource to duly;
RESOURCE角色将允许用户使用数据库中的空间
Grant create sequence to duly;
CREATE SEQUENCE 权限将允许用户创建序列,此权限包含在CONNECT连接角色中
以下代码演示加一个用户SCOTT如何授权用户duly操作EMP表的对象权限 Grant select on EMP to duly;//授予查询权限 Grant update to EMP to duly,//授予修改权限
撤销已授权的用户
REVOKE 权限 on 表名或表空间名 FROM 用户名 如:revoke select,update on kxd FROM duly; Eg:
-- Create the user create user CQADMIN
identified by \
default tablespace CQULTRA temporary tablespace TEMP profile DEFAULT;
-- Grant/Revoke role privileges grant connect to CQADMIN; grant resource to CQADMIN;
-- Grant/Revoke system privileges grant unlimited tablespace to CQADMIN;
3、修改用户口令
Alter user 用户名 Identified by 新密码
4、删除用户
Drop user 用户名 cascade;
5、创建表并对表进行操作
create table dt_eatery (
eatery_id int primary key,//创建主键 eatery_name varchar2(30), eatery_number varchar2(20) ) 注意:
1、 表名首字符应该为字母 2、 不能使用oracle中保留字 3、 不能超过30个字符
4、 可以使用下划线,数字和字母,但不能使用空格和单引号
修改表名:
ALTER TABLE 旧表名 RENAME TO 新表名
更改现有列的数据类型
Alter table 表名 modify (列名 新类型) 给已有的表加主键
alter table 表名 add constraint 主键名 primary key(列名);
如:alter table dt_menu add constraint menu primary key(menu_id); 表中添加列
Alter table 表名 add (列名 新类型)
删除表中列
Alter table 表名 drop (column 列名) 删除表中的所以数据而保留表结构 Truncate table 表名 查看表结构 Desc 表名
6、SELECT
(1)、选择无重复的行
Select DISTINCT * from 表名
(2)、带条件和排序的SELECT命令
Select * from 表名 where 条件 ORDER BY 列名
如:select * from dt_eatery where eatery_id = 1 ORDER BY eatery_id; 默认为顺序,如要倒序可如下:
如:select * from dt_eatery where eatery_id = 1 ORDER BY eatery_id DESC; (3)、利用现有的表创建新表 Create table 新表名 as SELECT 列名 FROM 老表名 WHERE 条件
7、 INSERT命令
Insert into 表名(列名1,列名2?? 或*) VLAUES(值)
8、 UPDATE命令
Update 表名 SET 列名 = 值 WHERE 条件.
9、 DELETE命令
DELETE FROM 表名 WHERE 条件
10、COMMIT命令 Commit; 10、 算术操作符 11、 时间操作
一个月的第一天
SELECT to_date(to_char(SYSDATE,'yyyy-mm')||'-01','yyyy-mm-dd') FROM dual 一年的第一天
SELECT to_date(to_char(SYSDATE,'yyyy')||'-01-01','yyyy-mm-dd' ) FROM dual 季度的第一天
SELECT
to_date(to_char(SYSDATE,'yyyy-')||lpad(floor(to_number(to_char(SYSDATE,'mm'))/3)*3+1,2,'0')||'-01','yyyy-mm-dd') FROM dual
上个月的最后一天
SELECT trunc(last_day(add_months(SYSDATE,-1)))+1-1/24/60/60 FROM dual 本年的最后一天
SELECT trunc(last_day(to_date(to_char(SYSDATE,'yyyy')||'-12-01','yyyy-mm-dd')))+1-1/24/60/60 FROM dual 本月的最后一天
select trunc(last_day(sysdate))+1-1/24/60/60 from dual 本月的第一个星期一
SELECT next_day( to_date(to_char(SYSDATE,'yyyy-mm')||'-01','yyyy-mm-dd'),'星期一') FROM dual 去掉时分秒
SELECT trunc(sysdate) FROM dual 显示星期几
SELECT to_char(SYSDATE,'Day') FROM dual 取得某个月的天数
SELECT trunc(last_day(SYSDATE))-to_date(to_char(SYSDATE,'yyyy-mm')||'-01','yyyy-mm-dd')+1 FROM dual 判断是否闰年
SELECT decode(to_char(last_day(to_date(to_char(SYSDATE,'yyyy')||'-02-01','yyyy-mm-dd')),'dd'),'28','平年','闰年') FROM dual
一个季度多少天 SELECT
last_day(to_date(to_char(SYSDATE,'yyyy-')||lpad(floor(to_number(to_char(SYSDATE,'mm'))/3)*3+3,2,'0')||'-01','yyyy-mm-dd'))-to_date(to_char(SYSDATE,'yyyy-')||lpad(floor(to_number(to_char(SYSDATE,'mm'))/3)*3+1,2,'0')||'-01','yyyy-mm-dd')+1FROM dual
12、--oracal 自增主键的创建
create table example
( );
--建立一个序列 CREATE SEQUENCE emp_sequence INCREMENT BY 1 --每次加几 START WITH 1 --从几开始计数 NOMAXVALUE --不设置最大值 NOCYCLE --一直累加,不循环 NOCACHE --不建缓冲区 ;
ID NUMBER(10) NOT NULL PRIMARY KEY, USERNAME VARCHAR2(20), PHONE VARCHAR2(20), ADDRESS VARCHAR2(50)
INSERT INTO example
(USERNAME,PHONE,ADDRESS)VALUES('KXD','88888888','KXDSOFT')
INSERT INTO example VALUES(emp_sequence.nextval,'KXD','88888888','KXDSOFT') insert into example (id ) values (emp_sequence.nextval)
oracle sql (2)函数 ..........................................15.ABS
返回指定值的绝对值
SQL> select abs(100),abs(-100) from dual; ABS(100) ABS(-100) --------- --------- 100 100
16.ACOS 给出反余弦的值
SQL> select acos(-1) from dual; ACOS(-1)