oracle学习笔记

sqlplus /nolog
connect / as sysdba
sqlplus user/password as sysdba
sqlplus user/password

startup   启动实例,然后打开控制文件control file,最后打开数据文件database open
startup mount 启动实例时启动控制文件
startup nomount 时启动实例不启动控制文件
alter database mount;
alter database open;

net start oracleserviceygnb启动实例
lsnrctl start 启动监听

归档方式查看:
archive log list
ALTER database archivelog;修改数据库为归档模式
ALTER database noarchivelog;修改数据库为非归档模式


数据库关闭:
shutdown  用户连接断开后关闭
shutdown  immediate  执行完当前SQL关闭
shutdown  transactional 执行完当前事务后关闭
shutdown  abort 强行关闭,可能造成数据库损坏


SELECT &tt FROM dual;输入值处理
SQL> SELECT &tt FROM dual;
输入 tt 的值:  'hehe'
原值    1: SELECT &tt FROM dual
新值    1: SELECT 'hehe' FROM dual

'HEH
----
hehe

==========================================2009-12-12

数据定义语言:建表,修改表,删除表
CREATE,ALTER,DROP

ALTER TABLE table_name ADD col_name type;    增加表字段
ALTER TABLE table_name ADD (col_name type DEFAULT '');

ALTER TABLE table_name MODIFY col_name type; 修改表数据类型
ALTER TABLE table_name MODIFY (col_name type DEFAULT 'hebei');

ALTER TABLE table_name DROP COLUMN col_name; 删除表字段

ALTER TABLE table_name RENAME COLUMN old_col_name TO new_col_name; 给字段重命名
ALTER TABLE table_name MODIFY COLUMN NOT NULL;修改表某一列的限制

ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY(col_name) 增加主键
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE(col_name)      唯一约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK(col_name IS NOT NULL) NOT null约束
ALTER TABLE table_name ADD CONSTRAINT constraint_name FOREIGN KEY(col_name) REFERENCES table_name(fk); 创建外键到表table_name的fk字段的外键col_name

ALTER TABLE table_name DROP PRIMARY KEY;                    删除表的主键
ALTER TABLE table_name DROP CONSTRAINT constraint_name;  删除表的约束
ALTER TABLE table_name disable CONSTRAINT constraint_name;使表的constraint_name约束失效

ALTER TABLE table_name move old_TABLEspace new_TABLEspace;更改表所在的表空间

 

RENAME old_table_name TO new_tabl_name 重命名表

CREATE user user_name identified by password; 
创建用户后要授予登陆的权限,否则登陆不进oracle GRANT connect TO user_name;

CREATE TABLE table_a AS SELECT col_a,col_b,.. from table_b where 表达式;

数据控制语言
GRANT,REVOKE

GRANT SELECT on table_name TO user_name;  给用户授予查询表的权限
REVOKE SELECT on table_name FROM user_name;从用户上收回该表的SELECT权限

数据操纵语言:增,删,改,查
SELECT,INSERT,DELETE,UPDATE

truncate TABLE table_name; 直接删除表中数据,不可回滚

INSERT INTO table_name(col_1,col_2,...) values (value_1,value_2,...);
UPDATE table_name SET col_1 = value_1 , col_2 = value_2 , ....;


常用系统函数
length(str);  返回str字符串的长度,一个中文字符长度被认为是1
lengthb(str); 返回str字符串的字节长度,一个中文字符长度被认为是2

ltrim(str);   截取掉str左边的空字符串
rtrim(str);   截取掉str右边的空字符串
trim(str);    截取掉str左右的空字符串

substr(str,2,3); 从str的下标2开始,截取3个字符串(下标从1开始)

SELECT sysdate FROM dual;系统当前日期
SELECT currentt_date FROM dual;当前日期

可以修改日期格式,如下所示
SQL> ALTER session SET nls_date_format='dd-mon-yyyy hh:mi:ss';

会话已更改。

SQL> SELECT current_date FROM dual;

CURRENT_DATE
-------------------------
12-12月-2009 01:55:41

next_day(date,'星期三');得到当前日期的下一个星期几是几月几号
SQL> SELECT next_day(sysdate,'星期三') FROM dual;

NEXT_DAY(SYSDATE,'星期三'
-------------------------
16-12月-2009 01:57:38

to_char(sysdate,'yyyy-mm-dd');将日期格式化输出

to_date(str);将字符型转换成日期型
to_date(str,fomat);将特定格式的日期字符串转换成date对象

to_number(str); 将字符串转换成数值类型

max(col_name); 求出该列的最大值
min(col_name); 求出该列最小值
sum(col_name;  求出该列总和
avg(col_name); 平均值
count(col_name);求出该字段的行数
count(*);       返回表的行数  表的行数大于或者等于列的行数

decode(col_name,value,value_true,value_false); 当字段col_name的值为value的时候,该函数返回value_true否则返回value_false;

nvl(col_name,value); 如果col_name字段为空,则返回value值


表的连接查询 FROM join_table join_type join_table [ON (join_condition)]

1.内连接:
FROM table_a JOIN table_b ON table_a.id = table_b.id 一一对应
FROM table_a , table_b WHERE table_a.id = table_b.id
FROM table_a INNER JOIN table_b ON table_a.id = table_b.id

2.外连接

 2.1左连接:右边表的列值能匹配的匹配,不匹配的用NULL来代替
 FROM table_a , table_b WHERE table_a.id = table_b.id(+);

 2.2右连接:左边表的列值能匹配的匹配,不匹配的用NULL来代替
 FROM table_a , table_b WHERE table_a.id(+) = table_b.id;

3交叉连接:相当于笛卡尔积
SELECT col_name1,col_name2 FROM table_a CROSS JOIN table_b;

4.全连接:FULL JOIN 或 FULL OUTER JOIN。

IN和EXISTS
SELECT * FROM student WHERE sid IN (SELECT sid from test);
 
 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值