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);