oracle 登录

sqlplus

 
sqlplus 

sqlplus / as sysdba 

修改用户密码永不过期

 
sqlplus / as sysdba 

select * from dba_profiles s where s.profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';

alter profile default limit password_life_time unlimited;

select * from dba_profiles s where s.profile='DEFAULT' and resource_name='PASSWORD_LIFE_TIME';

alter user case identified by rootroot;

oracle 查看表定义

 
方式一
SQL> desc student;
名称                                      是否为空? 类型
----------------------------------------- -------- ----------------------------
SID                                       NOT NULL NUMBER
SNAME                                              VARCHAR2(30)
SAGE                                               NUMBER

方式二
select column_name,data_type,DATA_LENGTH 
    From all_tab_columns  
    where table_name=upper('student')
oracle 创建表
CREATE TABLE students
(student_id    VARCHAR2(10) NOT NULL ENABLE,
student_name  VARCHAR2(30) NOT NULL,
college_major VARCHAR2(15) NOT NULL,
status        CHAR(1),
sumbit_data DATE,
score    NUMBER NOT NULL ENABLE,
CONSTRAINT "pk_student_id" PRIMARY KEY (student_id),
CONSTRAINT uk_students_name UNIQUE (student_name, status)
);
oracle 插入数据
insert into students(student_id,student_name,college_major,status,sumbit_data,score) 
values('100001','耀然天成','海洋学','1',to_date('2023-02-06 14:15:00','yyyy-mm-dd hh24:mi:ss'),88.5);

insert into students(student_id,student_name,college_major,status,sumbit_data,score) 
values
('100002','柯尔莫哥洛夫','数学,大气力学','1',to_date('2023-02-01 09:15:00','yyyy-mm-dd hh24:mi:ss'),100.0);

多行插入
insert all 
into students(student_id,student_name,college_major,status,sumbit_data,score) 
values('100003','牛顿','物理学','1',to_date('2023-02-06 14:15:00','yyyy-mm-dd hh24:mi:ss'),100.0)
into students(student_id,student_name,college_major,status,sumbit_data,score) 
values('100004','高斯','数学,天文学','1',to_date('2023-02-03 11:15:00','yyyy-mm-dd hh24:mi:ss'),100.0) 
select * from dual;

SQL> select student_name,to_char(sumbit_data,'yyyy-mm-dd hh24:mi:ss') sd 
from students 
where sumbit_data>=to_date('2023-02-01 00:15:00','yyyy-mm-dd hh24:mi:ss');

STUDENT_NAME                   SD
------------------------------ -------------------
耀然天成                       2023-02-06 14:15:00
柯尔莫哥洛夫                    2023-02-01 09:15:00
牛顿                           2023-02-06 14:15:00
高斯                           2023-02-03 11:15:00
oracle 索引查看
--查看索引

set linesize 210
col index_name for a27
col index_type for a12
col column_name for a27
col table_name for a21

select ic.INDEX_OWNER,
       ic.INDEX_NAME,
       di.index_type,
       di.uniqueness,
       di.status,
       ic.TABLE_NAME,
       ic.COLUMN_NAME
  from dba_ind_columns ic, dba_indexes di
 where ic.INDEX_OWNER = di.owner
   and ic.INDEX_NAME = di.index_name
   and ic.table_owner='CASE' and ic.table_name='STUDENTS';

INDEX_OWNER                    INDEX_NAME                  INDEX_TYPE   UNIQUENES STATUS   TABLE_NAME            COLUMN_NAME
------------------------------ --------------------------- ------------ --------- -------- --------------------- ---------------------------
CASE                           pk_student_id               NORMAL       UNIQUE    VALID    STUDENTS              STUDENT_ID
CASE                           UK_STUDENTS_NAME            NORMAL       UNIQUE    VALID    STUDENTS              STUDENT_NAME
CASE                           UK_STUDENTS_NAME            NORMAL       UNIQUE    VALID    STUDENTS              STATUS


普通用户查询
select ic.INDEX_NAME,
       di.index_type,
       di.uniqueness,
       di.status,
       ic.TABLE_NAME,
       ic.COLUMN_NAME
  from user_ind_columns ic, user_indexes di
 where ic.TABLE_NAME = di.TABLE_NAME
   and ic.INDEX_NAME = di.index_name
   and ic.table_name=upper('STUDENTS');

INDEX_NAME                  INDEX_TYPE   UNIQUENES STATUS   TABLE_NAME            COLUMN_NAME
--------------------------- ------------ --------- -------- --------------------- ---------------------------
pk_student_id               NORMAL       UNIQUE    VALID    STUDENTS              STUDENT_ID
UK_STUDENTS_NAME            NORMAL       UNIQUE    VALID    STUDENTS              STUDENT_NAME
UK_STUDENTS_NAME            NORMAL       UNIQUE    VALID    STUDENTS              STATUS
oracle创建索引
-- online允许创建索引的过程同时进行DML操作
create index IDX_CARD on table_name(t_card_num) online;
create index IDX_TIME on table_name(t_time);
oracle同步数据到mysql

时间转换


那些一执行就报错忽略,比如oracle中varchar2,mysql中是varchar一执行就报错,

时间同步

 
下面是执行不报错,但结果不正确的:
oracle中的DATE时间字段,在mysql中也有这个字段,所以使用照搬该字段不报错,
但mysql中的date只有年月日,没有时分秒,数据虽然同步过来的,
但却是错的,等发现时可能已经同步很多数据了
    

varchar同步

 
oracle varchar2(18) 向 mysql varchar(15)同步 
不报错,会自动截取oracle字符串的前15位,这一点很致命 
    
这并不是意味着开发者没有仔细看文档
- 有时数据库更新了,但没有去更新文档,文档旧了,但数据库因为数据量大把当初的15扩展为18了 
- 就算你现在写成18,并不意味着未来不会有人把它更新为20 
- 所以,像这种情况,如果两边都在运行,并且是以oracle为主的话,mysql的varchar可以建到28
- 直接增加10个扩展空间 

oracle rownum

虚拟列rownum

 
SQL> select rownum,student_id from students where rownum < 3;

    ROWNUM STUDENT_ID
---------- ----------
         1 100001
         2 100002
参考文章
    Oracle用户密码过期,修改永不过期