设为首页 收藏本站
查看: 1098|回复: 0

[经验分享] Oracle基本命令

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2018-9-24 06:33:16 | 显示全部楼层 |阅读模式
SET LINESIZE 300;    设置行高  SET PAGESIZE 50;     设置每页显示的数目
  CONN SYSTEM/manager AS SYSDBA;   以SYSTEM登陆
  SHOW USER;           显示当前的用户
  SELECT * FROM tab;   显示当前数据库所有的表
  DESC 表名;            显示表的结构
  CLEAR SCR;           清除屏幕
  /                    上次查询
  字符串函数:
  UPPER()              将所有字母转换为大写     SELECT UPPER(ENAME) FROM EMP;
  LOWER()              将的有字母转换为小写     SELECT LOWER(ENAME) FROM EMP;
  INITCAP()            将所有首写字母转换为大小,其它字母为小写    SELECT INITCAP(ENAME) FROM EMP;
  CONCAT()             字符串相连            SELECT CONCAT('HELLO',' WORLD') FROM DUAL;
  SUBSTR()             截取字符串             SELECT SUBSTR('HELLO',1,3) FROM DUAL;
  LENGTH()             获得字符串的长度        SELECT LENGTH('HELLO') FROM DUAL;
  REPLACE()            字符串替换             SELECT REPLACE('HELLO','L','X');
  数值函数
  ROUND()              四舍五入     ROUND(789.536)---[790]      ROUND(789.536,2)---[789.54]
  TRUNC()              截断小数位    TRUNC(789.536)---[789]     TRUNC(789.536,2)---[789.53]
  MOD()                取模          SELECT MOD(10,3) FROM DUAL;---[1]
  日期函数
  SYSDATE              取出当前日期
  MONTHS_BETWEEN()     求出给定日期范围的月数
  ADD_MONTHS()         在指定的日期上加上指定的月数    SELECT TO_CHAR(ADD_MONTHS(SYSDATE,5),'yyyy-mm-dd') FROM DUAL;
  NEXT_DAY()           下一个的今天是哪一个日期
  LAST_DAY()           求出给定日期的最后一天日期
  转换函数
  TO_CHAR()           将数字转换成字符串    SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM DUAL;
  TO_NUMBER()         将字符串转换成数字    SELECT TO_NUMBER('2010-01-11') FROM DUAL;
  TO_DATE()           将字符串转换成日期    SELECT TO_DATE('2009-12-31','yyyy-mm-dd') FROM DUAL;
  通用函数
  NVL()               将一个指定的NULL变为指定的内容(计算Null值,必须使用NVL)     SELECT NVL(NULL,0) FROM DUAL;
  DECODE()
  常用数据类型:
  NUMBER(M)--INT    |  NUMBER(M,N)--FLOAT   M:表示整数   N:表示小数位数
  VARCHAR()   |   VARCHAR2()     表示字符串,有长度限制,为255字符
  DATE()                         表示日期类型
  CLOB                           表示大的对象(表示:文本数据 一般可以存放4G的文本)
  BLOB                           表示大的对象(表示:二进制数据 一般可以存放4G的文本 电影,歌曲,图片)
  创建表
  CREATE TABLE myemp AS SELECT * FROM emp      创建emp表的副本
  CREATE TABLE table_name(
  column_name1    DATA_TYPE   [DEFAULT]
  column_name2    DATA_TYPE   [DEFAULT]
  columb_name3    DATA_TYPE   [DEFAULT]
  );                                           创建新表
  删除表
  DROP TABLE table_name;                       删除表
  修改表
  ALTER TABLE table_name ADD (column_name DATA_TYPE DEFAULT);       添加列
  ALTER TABLE MODIFY(column_name DATA_TYPE DEFAULT);                修改列(类型长度只能增,不能少)
  RENAME oldTable TO newTable                  重命名表
  TRUNCATE TABLE table_name                    截断表(不产生日志)
  数据约束
  一、主键约束:
  1.PRIMARY KEY(系统分配约束)
  CREATE TABLE person(
  pid NUMBER(18) PRIMARY KEY,
  name VARCHAR2(20) NOT NULL
  );
  2.PRIMARY KEY(指定约束名称)
  CREATE TABLE person(
  pid NUMBER(18) PRIMARY KEY,
  name VARCHAR2(20) NOT NULL,
  CONSTRAINT person_id_pk PRIMARY KEY (pid)
  );
  ALTER TABLE person ADD CONSTRAINT person_pid_pk PRIMARY KEY (pid);      修改person表,为表添加person_pid_pk主键
  二、非空约束(NOT NULL)
  1.CREATE TABLE person(
  pid NUMBER(5),
  name VARCHAR2(20) NOT NULL,
  CONSTRAINT person_pid_pk PRIMARY KEY (pid)
  );
  2.ALTER TABLE person MODIFY(name VARCHAR2(20) NOT NULL);
  三、唯一约束(UNIQUE)
  1.CREATE TABLE person(
  pid NUMBER(5),
  name VARCHAR2(20)  NOT NULL UNIQUE,
  );
  2.CREATE TABLE person(
  pid NUMBER(5),
  name VARCHAR2(20) NOT NULL UNIQUE,
  CONSTRAINT person_name_uk UNIQUE (name)
  );
  3.ALTER TABLE person ADD CONSTRAINT person_name_uk UNIQUE (name);       修改唯一约束
  四、检查约束(CHECK)
  1.CREATE TABLE person(
  pid NUMBER(5),
  name VARCHAR2(20) NOT NULL UNIQUE,
  age NUMBER(2) NOT NULL CHECK(age BETWEEN 0 AND 100),
  sex VARCHAR2(2) NOT NULL DEFAULT '男' CHECK(sex IN('男','女'))
  );
  2.CREATE TABLE person(
  pid NUMBER(5),
  name VARCHAR2(20) NOT NULL UNIQUE,
  age NUMBER(2) NOT NULL,
  sex VARCHAR2(2) NOT NULL DEFAULT '男',
  CONSTRAINT person_age_ck CHECK(age BETWEEN 0 AND 100),
  CONSTRAINT person_sex_ck  CHECK(sex IN('男','女'))
  );
  3.ALTER TABLE person ADD CONSTRAINT person_age_ck CHECK(age BETWEEN 0 AND 100);

  >  五、主-外键约束(FOREIGN KEY)
  1.CREATE TABLE book(
  bid NUMBER(3) NOT NULL,
  person_id NUMBER(5) NOT NULL,
  name VARCHAR2(50) NOT NULL,
  price NUMBER(5,2) NOT NULL,
  CONSTRAINT person_book_personid_fk FOREIGN KEY (price) REFERENCES person(pid) ON DELETE CASCADE
  );
  六、删除约束
  ALTER TABLE table_name DROP CONSTRAINT constraint_name     根据提供的table_name表删除constraint_name约束
  ROWNUM      Oracle每个表中都会有一个ROWNUM列
  视图管理:
  CREATE VIEW view_name AS SELECT * FROM emp;         创建视图
  DROP VIEW view_name                                 删除视图
  CREATE OR REPLACE VIEW view_name AS SELECT ....       创建或替换视图
  CREATE OR REPLACE VIEW view_name AS SELECT ....
  WITH CHECK OPTION  不能更新创建视图时列的条件
  WITH READ ONLY 只准许视图能读
  序列管理:
  CREATE SEQUENCE myseq;
  INCREMENT BY 2 指定步长             CREATE SEQUENCE myseq INCREMENT BY 2;     步长为:2
  START WITH  0  指定起始位置
  MAXVALUE 10    指定最大值
  CYCLE          while
  DROP SEQUENCE myseq;    删除序列
  同义词:
  CREATE SYNONYM 同义词名称 FOR 用户名.表名称;       创建同义词
  CREATE SYNONYM emp FOR SCOTT.emp;
  DROP SYNONYM emp;
  用户管理:
  创建用户:
  CREATE USER 用户名 IDENTIFIED BY 密码        创建用户和密码

  CREATE USER lixing>  用户授权:
  GRANT 权限1,权限2..... TO 用户名                   给用户授权
  GRANT CREATE SESSION TO lixing;                  为lixing用户创建session权限
  GRANT CONNECT,RESOURCE TO lixing;                为lixing用户赋CONNECT RESOURCE权限
  GRANT SELECT,DELETE,UPDATE ON scott.emp TO lixing;      把scott.emp表的增、删、改的权限赋给lixing用户
  REVOKE SELECT,DELETE,UPDATE ON scott.emp FROM lixing;        回收scott.emp表赋给用户lixing的权限
  修改用户:

  ALTER USER 用户名>
  ALTER USER lixing>  ALTER USER 用户名 PASSWORD EXPIRE;                用户第一次登陆要求修改密码
  ALTER USER lixing PASSWORD EXPIRE;               要求用户第一次登陆必须修改密码
  ALTER USER lixing ACCOUNT LOCK;                  锁定用户lixing
  ALTER USER lixing ACCOUNT UNLOCK;                解除锁定用户
  数据备份与还原
  数据库备份:exp
  数据库还原:imp


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-600391-1-1.html 上篇帖子: Oracle ora-27102 错误 下篇帖子: oracle全表扫描的优化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表