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;
方式一 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')
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) );
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
--查看索引 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
-- online允许创建索引的过程同时进行DML操作 create index IDX_CARD on table_name(t_card_num) online; create index IDX_TIME on table_name(t_time);
时间转换
那些一执行就报错忽略,比如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个扩展空间
虚拟列rownum
SQL> select rownum,student_id from students where rownum < 3; ROWNUM STUDENT_ID ---------- ---------- 1 100001 2 100002
Oracle用户密码过期,修改永不过期