db database tool / sqlplus / sqldeveloper / plsql / toad / navicat / powerdesign / Oracle Instant Client / Dbvisualizer Pro 12.0.2 / Dbeaver 22 / sqldeveloper22

问题1:navicate16配置oracle异常 :Oracle library is not  load 

解决1,

1、下载instantclient-basic-windows.x64-21.9.0.0.0dbru.zip,释放并配置到windows环境变量D:\lindows\winsoft\database\instantclient_21_9

2、配置navicat16,配置好navicat16工具,oracle调用驱动路径D:\lindows\winsoft\database\instantclient_21_9\oci.dll

3、重启生效

 

 

Oracle Instant Client(即时客户端) 安装与配置 , https://www.cnblogs.com/tanyo/p/16260748.html

 

Sysbase PowerDesigner 12.5 

下载地址:http://download.sybase.com/eval/PowerDesigner/powerdesigner125_eval.exe

破解补丁:http://media-001.yo2cdn.com/wp-content/uploads/235/23551/2008/05/e7a0b4e8a7a3.rar

汉化文件下载:http://tnvbba.bay.livefilestore.com/y1pOOgmdTCVnh7ujx43jx_eA-tceD4GT-4q1QSVMy5YOMjG74-L8dsYoJkmIXxaw3gZ6MpqBZOWkUbBfhku38RYQw/PowerDesigner12.5%E6%B1%89%E5%8C%96%E6%96%87%E4%BB%B6.rar?download

Sysbase PowerDesigner 15 试用版

Powerdesigner15试用版地址:http://www.sybase.com/detail?id=1038605 (需要打开找下载地址,可能也会让你填写点信息,随便填就OK)

破解文件:http://d.download.csdn.net/down/841486/chc8000 (也需要登陆才能下)

PowerDesigner 使用 反向工程 生成 数据字典 ,http://hi.baidu.com/lvshuxiang719/blog/item/8f04bd6074d49dd7e6113ad1.html

 

SQLPLUS

文件:sqlplus.bat

cd
sqlplus "scott/tiger@orcl"

 

PLSQL , 取消delete误删语句,plsql----My Object----drop table----tree node ,SQL>rollback

 

TOAD  查看 oracle 9i Session 连接数,Toad----Session Browser

quest key

site message :Quest Free to Our Chinese
Performance Diagnostics :0-63920-17953-29180-05749
Quest Central for Oracle : 0-63920-17953-15580-01746
SQL Tuning (Oracle) : 0-63920-17953-29360-05749
TOAD : 0-63920-17953-29060-02749
Oracle Advanced Administration Powered by TOAD:0-63920-17953-15100-09746
Knowledge Xpert for Oracle Administration:0-63920-17953-29760-09749
Database Analysis (Oralce) : 0-63920-17953-29200-08749
Spotlight on E-Business Suite: 0-63920-17953-29100-07749
Knowledge Xpert for PL/SQL: 0-63920-17953-29820-06749
Performance Analysis for Oracle :0-63920-17953-29340-03749
Formatter Plus: 0-63920-17953-29800-04749
Space Management(Oracle): 0-63920-17953-29860-00749

 

 
------------------------------------------------------------------------------------------------------------
site message: Quest Free to Our Chinese
Performance Diagnostics :0-63920-17953-29180-05749
Quest Central for Oracle : 0-63920-17953-15580-01746
SQL Tuning (Oracle) : 0-63920-17953-29360-05749
TOAD : 0-63920-17953-29060-02749
Oracle Advanced Administration Powered by TOAD :0-63920-17953-15100-09746
Knowledge Xpert for Oracle Administration :0-63920-17953-29760-09749
Database Analysis (Oralce) : 0-63920-17953-29200-08749
Spotlight on E-Business Suite : 0-63920-17953-29100-07749
Knowledge Xpert for PL/SQL : 0-63920-17953-29820-06749
Performance Analysis for Oracle :0-63920-17953-29340-03749
Formatter Plus : 0-63920-17953-29800-04749
Space Management(Oracle) : 0-63920-17953-29860-00749
Schema Manager : 0-63920-17953-16480-01746

 

查看当前总用户数据库连接数 toad----sys/sys@orcl----Session Browser

 

myeclipse db explorer 

连接oracle 9i

错误:

ora-00604

ora-12705

解决:

去掉高版本驱动 E:\program\database\Oracle\Driver\ojdbc14.10g.jar 

添加低版本驱动 E:\program\database\Oracle\Driver\ojdbc14.jar

 

-  navicat16 配置oracle10g

-

 

 

 

如何查询Oracle中所有用户信息 , https://www.cnblogs.com/joeshang/p/10421494.html

Oracle中connect,resource角色权限 , https://www.cnblogs.com/joeshang/p/10421494.html

安装环境:

1、Windows2003SP2_J6HDK-98KDQ-FBGKH-X2QY2-VFCMB.iso, oracle-client 10201_win32.zip , oracle-server 10201_win32.iso , PLSQL9.zip

2、PLSQL Developer 9.0注册码 , Product Code:46jw8l8ymfmp2twwbuur8j9gv978m2q2du ,   serial Number:307254 , password:xs374ca

3、DOS命令调用sqlplus(也可放入批处理双击一下省事)C:\Users\Lindows>sqlplus "scott/scott@orcl"

-

-- 服务端登录oracle
C:\Documents and Settings\Administrator> sqlplus / as sysdba
SQL> show user;
-- 关闭oracle服务
SQL> shutdown abort
-- 启动oracle服务
SQL> startup
SQL> select * from dual;
SQL> exit
C:\Documents and Settings\Administrator> sqlplus / as sysdba
SQL> alter user sys identified by sys;
SQL> select * from v$version;
-- 服务端登录oracle, 服务监听启停参数查询
C:\Documents and Settings\Administrator> lsnrctl
LSNRCTL> help
以下操作可用
星号 (*) 表示修改符或扩展命令:
start               stop                status
services            version             reload
save_config         trace               change_password
quit                exit                set*
show*
LSNRCTL> status
LSNRCTL> exit

-

语句片断:
SELECT emp_name, dept_name FORM Employee, Department WHERE Employee.emp_deptid(+) = Department.deptid
此SQL文使用了右连接,即“(+)”所在位置的另一侧为连接的方向,右连接说明等号右侧的所有记录均会被显示,无论其在左侧是否得到匹配,
也就是说上例中无论会不会出现某个部门没有一个员工的情况,这个部门的名字都会在查询结果中出现。
相反的情况:
SELECT emp_name, dept_name FORM Employee, Department WHERE Employee.emp_deptid = Department.deptid(+)
则是左连接,无论这个员工有没有一个能在Department表中得到匹配的部门号,这个员工的记录都将被显示。

-

 

buyer.sql

CREATE TABLE "SCOTT"."BUYERS" ("BUYER_ID" NUMBER(10) NOT NULL, 
    "BUYER_NAME" VARCHAR2(10) NOT NULL)  
    TABLESPACE "USERS" PCTFREE 10 PCTUSED 0 INITRANS 1 MAXTRANS 
    255 
    STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS 
    2147483645 PCTINCREASE 0) 
    LOGGING; 
INSERT INTO "SCOTT"."BUYERS" ("BUYER_ID" ,"BUYER_NAME" ) 
    VALUES (1 ,'Adam Barr'  );
INSERT INTO "SCOTT"."BUYERS" ("BUYER_ID" ,"BUYER_NAME" ) VALUES (2 ,'Sean Chai'  );
INSERT INTO "SCOTT"."BUYERS" ("BUYER_ID" ,"BUYER_NAME" ) VALUES (3 ,'Eva Coret'  );
INSERT INTO "SCOTT"."BUYERS" ("BUYER_ID" ,"BUYER_NAME" ) VALUES (4 ,'Erin Melia'  );

CREATE TABLE "SCOTT"."PRODUCT" ("PROD_ID" NUMBER(10) NOT NULL, 
    "PROD_NAME" VARCHAR2(10) NOT NULL)  
    TABLESPACE "USERS" PCTFREE 10 PCTUSED 0 INITRANS 1 MAXTRANS 
    255 
    STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS 
    2147483645 PCTINCREASE 0) 
    LOGGING ;

INSERT INTO "SCOTT"."PRODUCT" ("PROD_ID" ,"PROD_NAME" ) 
    VALUES (1 ,'Apples'  );
INSERT INTO "SCOTT"."PRODUCT" ("PROD_ID" ,"PROD_NAME" ) VALUES (2 ,'Pears'  );
INSERT INTO "SCOTT"."PRODUCT" ("PROD_ID" ,"PROD_NAME" ) VALUES (3 ,'Oranges'  );
INSERT INTO "SCOTT"."PRODUCT" ("PROD_ID" ,"PROD_NAME" ) VALUES (4 ,'Bananas'  );
INSERT INTO "SCOTT"."PRODUCT" ("PROD_ID" ,"PROD_NAME" ) VALUES (5 ,'Peaches'  );

CREATE TABLE "SCOTT"."SALES" ("BUYER_ID" NUMBER(10) NOT NULL, 
    "PROD_ID" NUMBER(10) NOT NULL, "QTY" NUMBER(10) NOT NULL)  
    TABLESPACE "USERS" PCTFREE 10 PCTUSED 0 INITRANS 1 MAXTRANS 
    255 
    STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS 
    2147483645 PCTINCREASE 0) 
    LOGGING; 
INSERT INTO "SCOTT"."SALES" ("BUYER_ID" ,"PROD_ID" ,"QTY" ) 
    VALUES (1 ,2 ,15  );
INSERT INTO "SCOTT"."SALES" ("BUYER_ID" ,"PROD_ID" ,"QTY" ) VALUES (1 ,3 ,5  );
INSERT INTO "SCOTT"."SALES" ("BUYER_ID" ,"PROD_ID" ,"QTY" ) VALUES (4 ,1 ,37  );
INSERT INTO "SCOTT"."SALES" ("BUYER_ID" ,"PROD_ID" ,"QTY" ) VALUES (3 ,5 ,11  );
INSERT INTO "SCOTT"."SALES" ("BUYER_ID" ,"PROD_ID" ,"QTY" ) VALUES (4 ,2 ,1003  );
commit;

 

scott.sql

Rem Copyright (c) 1990 by Oracle Corporation
Rem NAME
REM    UTLSAMPL.SQL
Rem  FUNCTION
Rem  NOTES
Rem  MODIFIED
Rem    gdudey       06/28/95 -  Modified for desktop seed database
Rem    glumpkin   10/21/92 -  Renamed from SQLBLD.SQL
Rem    blinden   07/27/92 -  Added primary and foreign keys to EMP and DEPT
Rem    rlim       04/29/91 -          change char to varchar2
Rem    mmoore       04/08/91 -          use unlimited tablespace priv
Rem    pritto       04/04/91 -          change SYSDATE to 13-JUL-87
Rem   Mendels     12/07/90 - bug 30123;add to_date calls so language independent
Rem
rem
rem $Header: utlsampl.sql 7020100.1 94/09/23 22:14:24 cli Generic<base> $ sqlbld.sql
rem
SET TERMOUT OFF
SET ECHO OFF

rem CONGDON    Invoked in RDBMS at build time.     29-DEC-1988
rem OATES:     Created: 16-Feb-83

GRANT CONNECT,RESOURCE,UNLIMITED TABLESPACE TO SCOTT IDENTIFIED BY TIGER;
ALTER USER SCOTT DEFAULT TABLESPACE USERS;
ALTER USER SCOTT TEMPORARY TABLESPACE TEMP;
CONNECT SCOTT/TIGER
DROP TABLE DEPT;
CREATE TABLE DEPT
       (DEPTNO NUMBER(2) CONSTRAINT PK_DEPT PRIMARY KEY,
    DNAME VARCHAR2(14) ,
    LOC VARCHAR2(13) ) ;
DROP TABLE EMP;
CREATE TABLE EMP
       (EMPNO NUMBER(4) CONSTRAINT PK_EMP PRIMARY KEY,
    ENAME VARCHAR2(10),
    JOB VARCHAR2(9),
    MGR NUMBER(4),
    HIREDATE DATE,
    SAL NUMBER(7,2),
    COMM NUMBER(7,2),
    DEPTNO NUMBER(2) CONSTRAINT FK_DEPTNO REFERENCES DEPT);
INSERT INTO DEPT VALUES
    (10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES
    (30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES
    (40,'OPERATIONS','BOSTON');
INSERT INTO EMP VALUES
(7369,'SMITH','CLERK',7902,to_date('17-12-1980','dd-mm-yyyy'),800,NULL,20);
INSERT INTO EMP VALUES
(7499,'ALLEN','SALESMAN',7698,to_date('20-2-1981','dd-mm-yyyy'),1600,300,30);
INSERT INTO EMP VALUES
(7521,'WARD','SALESMAN',7698,to_date('22-2-1981','dd-mm-yyyy'),1250,500,30);
INSERT INTO EMP VALUES
(7566,'JONES','MANAGER',7839,to_date('2-4-1981','dd-mm-yyyy'),2975,NULL,20);
INSERT INTO EMP VALUES
(7654,'MARTIN','SALESMAN',7698,to_date('28-9-1981','dd-mm-yyyy'),1250,1400,30);
INSERT INTO EMP VALUES
(7698,'BLAKE','MANAGER',7839,to_date('1-5-1981','dd-mm-yyyy'),2850,NULL,30);
INSERT INTO EMP VALUES
(7782,'CLARK','MANAGER',7839,to_date('9-6-1981','dd-mm-yyyy'),2450,NULL,10);
INSERT INTO EMP VALUES
(7788,'SCOTT','ANALYST',7566,to_date('13-JUL-87')-85,3000,NULL,20);
INSERT INTO EMP VALUES
(7839,'KING','PRESIDENT',NULL,to_date('17-11-1981','dd-mm-yyyy'),5000,NULL,10);
INSERT INTO EMP VALUES
(7844,'TURNER','SALESMAN',7698,to_date('8-9-1981','dd-mm-yyyy'),1500,0,30);
INSERT INTO EMP VALUES
(7876,'ADAMS','CLERK',7788,to_date('13-JUL-87')-51,1100,NULL,20);
INSERT INTO EMP VALUES
(7900,'JAMES','CLERK',7698,to_date('3-12-1981','dd-mm-yyyy'),950,NULL,30);
INSERT INTO EMP VALUES
(7902,'FORD','ANALYST',7566,to_date('3-12-1981','dd-mm-yyyy'),3000,NULL,20);
INSERT INTO EMP VALUES
(7934,'MILLER','CLERK',7782,to_date('23-1-1982','dd-mm-yyyy'),1300,NULL,10);
DROP TABLE BONUS;
CREATE TABLE BONUS
    (
    ENAME VARCHAR2(10)    ,
    JOB VARCHAR2(9)  ,
    SAL NUMBER,
    COMM NUMBER
    ) ;
DROP TABLE SALGRADE;
CREATE TABLE SALGRADE
      ( GRADE NUMBER,
    LOSAL NUMBER,
    HISAL NUMBER );
INSERT INTO SALGRADE VALUES (1,700,1200);
INSERT INTO SALGRADE VALUES (2,1201,1400);
INSERT INTO SALGRADE VALUES (3,1401,2000);
INSERT INTO SALGRADE VALUES (4,2001,3000);
INSERT INTO SALGRADE VALUES (5,3001,9999);
COMMIT;

SET TERMOUT ON
SET ECHO ON

 

- Oracle Linux 7.4 环境搭建

一  安装Oracle Linux 7.4
二  配置Xshell访问虚拟机
三  安装vmware tools
mkdir /vmtool
提取到vmtool目录
/vmtool/vmware-tools-distrib/vmware-install.pl
接受默认值
四  配置共享文件夹
虚拟机设置的选项里设置
重新启动
/mnt/hgfs/share

五  配置Yum软件仓库
mkdir /iso
安装盘的镜像文件复制到/iso下
1.挂载镜像至本地

    mkdir /yum
    mount -o loop /iso/OracleLinux-R7-U4-Server-x86_64-dvd.iso /yum

2.移动系统原yum仓库.repo配置文件

   
3.编辑本地yum仓库指向文件

##cd /etc/yum.repos.d/
##vim yum.repo        ##文件命名以.repo结尾
##内容:

[source]
#仓库名称
name=localserver
#仓库描述
baseurl=file:///yum
#仓库地址
gpgcheck=0
#检查软件是否为官方软件(0代表否,1代表是)
enabled=1
#此仓库在系统中是否生效(可不写,默认为1)
gpgkey=file:///yum/RPM-GPG-KEY-oracle

4.刷新仓库

    yum clean all #刷新仓库配置
    yum repolist all #报告yum仓库的状态
5.设置开机启动

    vim /etc/fstab   文件追加:
/iso/OracleLinux-R7-U4-Server-x86_64-dvd.iso /yum iso9660 ro 0 0
        

六  禁用防火墙和SELNUX
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
firewall-cmd --state #查看默认防火墙状态(关闭后显示notrunning,开启后显示running)
设置/etc/selinux/config 文件,将SELINUX设置为disabled

七   创建目录结构
--mkdir -p /u01/app/grid/12.2.0
mkdir -p /u01/app/oracle/product/12.2.0/dbhome_1
chown -R oracle:oinstall /u01
chown -R oracle:oinstall /u01/app/oracle
chmod -R 775 /u01

八   添加组和用户
1    添加组和用户
groupadd -g 1001 oinstall
groupadd -g 1200 asmadmin
groupadd -g 1201 asmdba
groupadd -g 1202 asmoper
groupadd -g 1300 dba
groupadd -g 1301 oper

useradd -m -u 1100 -g oinstall -G asmadmin,asmdba,asmoper,dba -d /home/grid -s /bin/bash grid
useradd -m -u 1101 -g oinstall -G dba,oper,asmdba -d /home/oracle -s /bin/bash oracle
2    确认用户信息:
id oracle
id grid
3    修改密码:
passwd oracle
passwd grid

九  配置环境变量

--Grid用户

修改grid用户的.bash_profile.注意每个节点的不同内容:

export ORACLE_SID=+ASM
export ORACLE_BASE=/u01/app/grid
export ORACLE_HOME=/u01/app/grid/12.2.0
export PATH=$ORACLE_HOME/bin:$PATH:/usr/local/bin/
export TEMP=/tmp
export TMP=/tmp
export TMPDIR=/tmp
umask 022

 

--Oracle 用户

修改oracle 用户的.bash_profile,注意每个节点的不同内容:

ORACLE_SID=db12c;export ORACLE_SID
ORACLE_UNQNAME=db12c;export ORACLE_UNQNAME
JAVA_HOME=/usr/local/java; export JAVA_HOME
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/12.2.0/dbhome_1; export ORACLE_HOME
ORACLE_TERM=xterm; export ORACLE_TERM
NLS_LANG=american_america.ZHS16GBK; export NLS_LANG
TNS_ADMIN=$ORACLE_HOME/network/admin; export TNS_ADMIN
ORA_NLS11=$ORACLE_HOME/nls/data; export ORA_NLS11
PATH=.:${JAVA_HOME}/bin:${PATH}:$HOME/bin:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin
PATH=${PATH}:/usr/bin:/bin:/usr/bin/X11:/usr/local/bin
export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$ORACLE_HOME/oracm/lib
LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/lib:/usr/lib:/usr/local/lib
export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/rdbms/jlib
CLASSPATH=${CLASSPATH}:$ORACLE_HOME/network/jlib
export CLASSPATH
THREADS_FLAG=native; export THREADS_FLAG
export TEMP=/tmp
export TMPDIR=/tmp
umask 022

十   为安装用户设置资源限制
1    修改vim /etc/security/limits.conf
以 root 用户身份,在节点上,在 /etc/security/limits.conf 文件中添加如下内容
grid soft nproc 2047
grid hard nproc 16384
grid soft nofile 1024
grid hard nofile 65536
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536

vim /etc/rc.local
加入 ulimit -s 102400 则可以开机就设置栈空间大小,执行ulimit -s 即可看到改为102400 即100M
#chmod +x /etc/rc.d/rc.local

2   修改vim /etc/pam.d/login

session required pam_limits.so


3   shell 的限制

对默认的 shell 启动文件进行以下更改,以便更改所有 Oracle 安装所有者的 ulimit 设置:
vim /etc/profile
if [ /$USER = "oracle" ] ||[ /$USER = "grid" ]; then
if [ /$SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
ulimit -s 102400
else
ulimit -u 16384 -n 65536 -s 102400
fi
umask 022
fi

十一  修改内核参数/etc/sysctl.conf
在sysctl.conf 中加入以下内容:
vim /etc/sysctl.conf

kernel.shmmni=4096
net.ipv4.ip_local_port_range=9000 65500
kernel.panic_on_oops=30
fs.file-max=6815744
net.core.rmem_default = 262144
net.core.rmem_max=4194304
net.core.wmem_default=262144
net.core.wmem_max=1048576 

/etc/sysctl.conf这个目录主要是配置一些系统信息,而且它的内容全部是对应于/proc/sys/这个目录的子目录及文件。
设置Linux内核参数 /etc/sysctl.conf
配置 Linux 内核参数修改后不用重启动更新: /sbin/sysctl -p

十二   在ROOT用户下执行如下yum命令安装所需要的RPM包
yum -y install binutils*
yum -y install compat*
yum -y install gcc*
yum -y install glibc*
yum -y install ksh
yum -y install libgcc*
yum -y install libstdc*
yum -y install libaio*
yum -y install libXext*
yum -y install libX11*
yum -y install libXau*
yum -y install libxcb*
yum -y install libXi*
yum -y install make*
yum -y install sysstat*
yum -y install oracleasmlib-2.0.12-1.el7.x86_64.rpm
yum -y install oracleasm*

十三   添加主机名到/etc/hosts


chown -R oracle:oinstall orainstall
十四  安装Oracle12c
chown -R oracle:oinstall orainstall
oracle用户执行 ./runInstall

十五   配置rlwrap工具实现oracle sqlplus上下键翻页查看功能 
1  root用户: yum install readline-devel*
2  安装rlwrap包(root用户)
mkdir rlwrap
tar xvfz rlwrap-0.37.tar.gz
cd rlwrap-0.37
./configure && make && make install
3  配置(oracle用户)
[oracle@admin ~]$ vim .bashrc 增加以下两行,如果需要用到rman备份可以事前给rman也造造福.
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'

alter user hr account unlock ;
alter user hr identified by hr ;
alter user scott identified tiger ;
十六   简单定制glogin.sql
vim $ORACLE_HOME/sqlplus/admin/glogin.sql

set linesize 120
set pagesize 25
set sqlprompt _user"@"_connect_identifier>
define _EDITOR="vi"

 

数据库6大范式,常用3大范式

oracle_20230217.sql

 

 

-- 赋予scott用户权限
sqlplus / as sysdba
alter user scott identified by scott;
alter user scott account unlock;

--创建表空间,注意创建文件夹c:\lindows\wanho\
create tablespace tspace logging datafile 'c:\lindows\wanho\tspace.dbf' size 10M autoextend on next 5M maxsize 20M;

--创建用户及密码
create user cn profile default identified by cn
default tablespace test108
temporary tablespace temp account unlock;

--赋予权限
grant connect,resource,dba to cn;

--创建表
drop table student;
create table student(
 sno number primary key,
 sname varchar2(20),
 age number,
 sex varchar(2),
 birth date
)

drop table course;
create table course(
 cno number primary key,
 cname varchar2(20)
)

drop table sc;
create table sc(
 sno number,
 cno number, 
 grade number,
 primary key(sno,cno)
)

--克隆表
create table cn.student as select * from sys.student;
create table cn.course as select * from sys.course;
create table cn.sc as select * from sys.sc;

--查询表
select * from sys.student;
select * from sys.course;
select * from sys.sc;

--查询当前用户的表信息
select * from student;
select * from course;
select * from sc;

create table student 
(
  sno int primary key,
  sname varchar2(20),
  age int,
  sex varchar2(2),
  birth date
)

create table course
(
  cno int primary key,
  cname varchar2(20)
)

create table sc
(
  sno int,
  cno int,
  grade int,
  primary key(sno,cno)
)

查询
select sname from student;
select sname,age,sex from student;
select * from student;
select * from course;
select * from sc;

插入表数据
insert into student values(101,'张三',20,'男','');
insert into student values(102,'张三2',21,'女','');
insert into student values(103,'张三3',22,'男','');
insert into student values(104,'张三4',23,'女','');
insert into student values(105,'张三5',24,'男','');
insert into student values(106,'张三6',25,'女','');
insert into student values(107,'张三7',26,'男','');
insert into student values(108,'张三8',27,'女','');
insert into student values(109,'张三9',28,'男','');
insert into student values(110,'张三10',29,'女','');
insert into student values(111,'张三11',30,'男','');
insert into student values(112,'张三12',31,'女','');
insert into student values(113,'张三13',32,'男','');

insert into course values(001,'语文');
insert into course values(002,'化学');
insert into course values(003,'英语');
insert into course values(004,'体育');
insert into course values(005,'物理');
insert into course values(006,'生物');
insert into course values(007,'政治');
insert into course values(008,'信息');


insert into sc values(101,001,80);
insert into sc values(101,002,81);
insert into sc values(101,003,82);
insert into sc values(101,004,83);
insert into sc values(101,005,84);
insert into sc values(102,001,85);
insert into sc values(102,007,86);

insert into student(sno,sex) values(114,'男');
insert into student(sno,sex) values(115,'女');
insert into student(sno,sex) values(116,'男');

--统计数据行数
select count(*) from student;

--修改指定数据
update student set age=30 where sno=101

--修改所有数据
update student set sex='男'
update student set age=28

--删除表数据
delete from student;--整个
delete from student where sno=101;--指定

--查看表结构 :
点击新建按钮;打开命令窗口后输入desc 表名称


alter table student add higha number --  添加字段
alter table student drop column birth --   删除字段

--修改字段
alter table student modify age number

-

oracle_20230220.sql

/*
--准备直接修改表数据
--查询emp表中薪资大于等于
--查询emp表中姓名不等于SMITH的员工信息
--查询job表中不等于MANAGER的员工信息
--查询emp表中薪资范围在3000-5000之间的员工信息
--查询emp表中薪资范围不在3000-5000之间的员工信息
--查询emp表中所有员工的薪资等级
--确定集合,in和notin
--查询emp表中薪资在或等于800,1250,3000,5000这些集合的员工信息
--查询emp表中薪资不在或不等于800,1250,3000,5000这些集合的员工信息
--查询员工部门在10,20,30的所有员工信息
--查询在部门10和30的所有员工信息
--查询emp表中名字包含A的员工信息
--查询emp表中名字中不包含A的员工信息
--查询emp表中名字倒数第二个字符是T的员工信息
--查询emp表中名字倒数第三个字符是E的员工信息
--查询emp表中上级领导编号为空的员工信息
--查询emp表中奖金不为空的员工信息
--查询emp表中职位是经理且薪资>3000且部门编号30的员工信息
--查询emp表中职位是经理或奖金为空的或部门编号=20的员工信息
--表字段取别名
--给表取别名,一般表名称设计规则:项目名称_模块名称_业务名称
--给子集取别名
--查询emp表中薪资等于员工编号为7788的员工薪水,用嵌套查询
--去重:查询emp表中有多少个部门编号
--统计emp表中有几个职位
--字符串的拼接
--给所有员工涨400工资
--计算每个员工的年薪,四则运算
--大小写转换函数
--首字符大写
--字符串拼接
--字符串截取,函数嵌套查询
--字符串替换
--获取字符串长度
--查询emp表中名字倒数第三个字符是E的员工信息
*/

-- 准备直接修改表数据
select * from student for update;

select * from emp;
-- 查询emp表中薪资大于等于
select * from emp where sal >= 1000;

-- 查询emp表中姓名不等于SMITH的员工信息
select * from emp where ename <> 'SMITH';
select * from emp where ename != 'SMITH';

--查询job表中不等于MANAGER的员工信息
select * from emp where job != 'MANAGER';

-- 查询emp表中薪资范围在3000-5000之间的员工信息
select * from emp where sal between 3000 and 5000;

-- 查询emp表中薪资范围不在3000-5000之间的员工信息
select * from emp where sal not between 3000 and 5000;

select * from salgrade;
-- 查询emp表中所有员工的薪资等级
select * from emp e,salgrade s where e.sal between s.losal and s.hisal;

-- 确定集合,in和not in
--查询emp表中薪资在或等于800,1250,3000,5000 这些集合的员工信息
select * from emp where sal in(800,1250,3000,5000)

--查询emp表中薪资不在或不等于800,1250,3000,5000 这些集合的员工信息
select * from emp where sal not in(800,1250,3000,5000)

--查询员工部门在10,20,30的所有员工信息
select * from emp where deptno in(10,20,30);
select * from emp where deptno between 10 and 30;

--查询在部门10和30的所有员工信息
select * from emp where deptno = 10 or deptno = 30;
select * from emp where deptno in(10,30);

-- 查询emp表中名字包含A的员工信息
select * from emp where ename like '%A%';

-- 查询emp表中名字中不包含A的员工信息
select * from emp where ename not like '%A%';

--查询emp表中名字倒数第二个字符是T的员工信息
select * from emp where ename like '%T_';  /* -- 下划线代表1个字符 */

--查询emp表中名字倒数第三个字符是E的员工信息
select * from emp where ename like '%E_';  -- 下划线代表1个字符

-- 查询emp表中上级领导编号为空的员工信息
select * from emp where mgr is null;

-- 查询emp表中奖金不为空的员工信息
select * from emp where COMM is not null;

-- 查询emp表中职位是经理且薪资>3000且部门编号30的员工信息
select * from emp;
update emp set job = 'MANAGER',sal = 3001,deptno=30 where empno = 7698;  --修改表数据
select * from emp where job = 'MANAGER' and sal > 3000 and deptno = 30;

-- 查询emp表中职位是经理或奖金为空的或部门编号=20的员工信息
select * from emp;
select * from emp where job='MANAGER' or comm is null or deptno=20;

-- 表字段取别名
select ename 姓名 ,sal 薪水 from emp;
select * from emp e,salgrade;
-- 给表取别名,一般表名称设计规则:项目名称_模块名称_业务名称
select e.ename,e.job,e.sal,s.grade from emp e,salgrade s;

select e.ename,e.sal,d.deptno,d.dname from emp e,dept d;

-- 给子集取别名
select a.sal from (select * from emp where empno='7369') a

-- 查询emp表中薪资等于员工编号为7788的员工薪水,用嵌套查询
update emp set sal=3000 where empno=7902;
select * from emp where sal = (select sal from emp where empno=7788);

--去重:查询emp表中有多少个部门编号
select distinct(deptno) from emp;

--统计emp表中有几个职位
select distinct(job) from emp;

--字符串的拼接
select '员工的编号:'||empno,'员工的姓名'||ename,'员工的薪水'||sal from emp;
select '员工的编号:'||empno 编号,'员工的姓名'||ename 姓名,'员工的薪水'||sal 薪水 from emp;

-- 给所有员工涨400工资
update emp set sal = sal+400;
select * from emp;

-- 计算每个员工的年薪,四则运算 + - * /
select ename 姓名,sal*12 年薪 from emp;
select ename 姓名,sal*12+comm 年薪 from emp;
select ename 姓名,sal*12+nvl(comm,0) 年薪 from emp; --奖金null+0 问题处理方式
select ename 姓名,(sal*12+nvl(comm,0))/12 平均年薪 from emp; --计算员工平均月薪
select ename 姓名,round((sal*12+nvl(comm,0))/12) 平均年薪 from emp; --计算员工平均月薪,并且取整,四舍五入
select ename 姓名,round((sal*12+nvl(comm,0))/12,2) 平均年薪 from emp; --计算员工平均月薪,并且保留2位小数
--select ename 姓名,sal*12+nvl(comm,0)-800 年薪 from emp; --全部员工年薪减去800元

select ename 姓名,sal,comm,sal*12,(sal + nvl(comm,0))*12 from emp; -- 如果comm为每月绩效,则综合年薪计算为此SQL
select ename 姓名,nvl(comm,0)*12 绩效 from emp;

-- 大小写转换函数
select upper(lower(ename)) from emp;
select lower(job) from emp;
select lower(job) from dual; --用虚表进行演练用
select upper('abcdefg') from dual;

--首字符大写
select initcap(ename) from emp;

--字符串拼接
select concat('hello','wanho') from dual;
select concat('hello','wanho') 拼接 from dual;
select * from emp;
select concat(empno,ename) from emp; -- 最多拼接2个参数,存储过程常用
select concat(concat(empno,ename),sal) from emp; -- 三层嵌套实现
select concat(concat(concat(empno,ename),sal),job) from emp; -- 四层嵌套实现
select concat(concat(concat(empno||',',ename||','),sal||','),job) from emp; -- 四层嵌套实现,且逗号隔开展示
select concat(concat(concat(empno,','),concat(ename,',')),concat(concat(sal,','),concat(job,','))) from emp; -- 四层嵌套实现,且逗号隔开展示
select empno || ' ' || ename || ' ' || sal from emp; --无数个拼接,且空格隔开

--字符串截取,函数嵌套查询
select substr('helloabc',2,3) from dual; --第一个参数是原字符串,第二个截取开始位,第三个是截取长度
select ename,substr(ename,2,3) from emp;
select ename,lower(substr(ename,2,3)) from emp; --小写展示
select concat(ename,lower(substr(ename,2,3))) newname from emp; --concat拼接,newname字段名
select ename,ename,substr(concat(ename,lower(substr(ename,2,3))),3,5) newname from emp; --concat拼接,newname字段名,继续截取

--字符串替换
select replace('hello','l','x') from dual;
select ename,replace(ename,'A','9') from emp; --ename 字段值由A替换成9

-- 获取字符串长度
select ename,length(ename) from emp;

-

oracle_20230221.sql

-- ev录屏软件,夜神安卓模拟器,appiume
-- selct * from xxxx where x.name=yyy group bu having 分组 order by 排序 
-- 以上顺序不能乱,先分组再排序,ASC升序,DSC降序

-- 每个月的平均收入,保留2位小数
select ename 姓名,trunc((sal*12)+nvl(comm,0)/12,2) 年薪 from emp 
-- 每个月的平均收入,取整,不进行四舍五入
select ename 姓名,trunc((sal*12)+nvl(comm,0)/12) 年薪 from emp 

-- 取余数
select mod(10,3) from dual;
select mod(10,3) 余数 from dual;

--日期函数,oracle日期函数规律,日期 - 数字 = 日期 ,日期 + 数字 = 日期 ,日期 + 日期 = 数字
select sysdate from dual; --以前mysql没有虚表,现在有虚表

select ename,round((sysdate - hiredate)/365) 入职年数 from emp; --四舍五入
select ename,round((sysdate - hiredate)/365,3) 入职年数 from emp; --四舍五入,保留小数
select ename,round((sysdate - hiredate)/7) 入职天数 from emp; --四舍五入,数据有差异
select ename,trunc((sysdate - hiredate)/7) 入职天数 from emp; --四舍五入,数据有差异
select ename,trunc((sysdate - hiredate)/30) 入职月数 from emp; --粗算
select ename,months_between(sysdate,hiredate) 入职月数 from emp; -- 精算
select ename,round(months_between(sysdate,hiredate)) 入职月数 from emp; -- 精算

-- 离过年还有多少天
select to_date('2024-2-09 23:59:59','yyyy-mm-dd hh24:mi:ss') - sysdate 离过年还有天数 from dual;

-- 求三个月后的日期
select add_months(sysdate,3) from dual;

-- 求本月最后一天是几号
select last_day(sysdate) from dual;

-- 拆分字符串
select to_char(hiredate,'yyyy') 年,to_char(hiredate,'mm') 月, to_char(hiredate,'dd') 日 from emp;

-- 把字符串转换成日期, 如插入新入职员工信息
select * from emp;
insert into emp values('8001','张三','MANAGER','7902',to_date('2023-02-21','yyyy-mm-dd'),800,'',20);

-- 克隆表
create table emp_bak as select * from emp;
select * from emp_bak;

-- 克隆表结构不含数据
create table emp_bak1 as select * from emp where 1>2;
select * from emp_bak1;
alter table emp_bak1 rename to emp_bak2;

-- 聚合函数
select count(sname) from student;
select count(comm) from student; //统计有数值的总行数
select count(*) from student; //统计所有行数据总行数
select count(1) from student; //只统计列1的总行数
select avg(sage) from student;
select max(sage) from student;
select min(sage) from student;
select sum(sage) from student;

-- 统计emp表中员工平均薪资
select avg(sal) from emp;
-- 统计emp表中最高薪资和最低薪资
select max(sal),min(sal) from emp;
-- 统计emp表中所有员工的薪资总和
select sum(sal) from emp;

-- 约束,非空约束not null,唯一约束unique,主键约束primary key,外键约束foreign key,条件约束check;防止无效垃圾数据入库
drop table student;
drop table course;
drop table sc;

create table student(
       sno int primary key,
       sname varchar2(20) unique,                       --唯一约束,名字不重复
       age smallint not null,
       sex varchar2(4) check(sex in('男','女','其他')), --check约束
       birth date
);

insert into student values(100,'zhangsan','20','男',to_date('2023-02-21','yyyy-mm-dd'));
insert into student(sno,age) values(101,25);
insert into student(sno,sname,age) values(102,'张三',35);
insert into student(sno,sname,age,sex) values(103,'wangwu',35,'其他');

select * from student;

drop table Person;
/*
create table Person(
       IDCard varchar2(20),
       pname varchar2(20) not null unique,
       sex varchar2(4) check(sex in('男','女','其他')),
       age smallint,
       birth date not null
       primary key(IDCard)
)
*/
create table Person(
       IDCard varchar2(20) primary key,
       pname varchar2(20) not null unique,
       sex varchar2(4) check(sex in('男','女','其他')),
       age smallint,
       birth date not null
)
select * from Person;
insert into Person values(100,'王五','男',20,to_date('2023-02-21','yyyy-mm-dd'));
insert into Person(IDCard,pname,sex,age,birth) values(101,'王五2','男',20,to_date('2023-02-21','yyyy-mm-dd'));

-- 1、新建一个订单表,外键(FOREIGN KEY)约束
drop table orders;
create table orders
(
  order_id varchar2(20) primary key,
  order_name varchar2(20),
  order_price number,
  order_time date
)
-- 2、订单明细表
drop table order_detail;
create table order_detail(
       detail_id  number(10) primary key ,
       order_id   varchar2(20),
       item_name  varchar2(10),
      constraint fk_name foreign key(order_id) references orders(order_id)
)

insert into orders values('101','手机',898.99,'');
insert into order_detail  values('001','101','abc');
select * from orders;
select * from order_detail;

-- 外键约束foreign key
-- 订单表
create table orders(
       order_id varchar2(20) primary key,
       order_name varchar2(20),
       order_price number,
       order_time date
)
select * from orders;
-- 订单明细表

-- 总行表
create table bank(
       bankid number primary key,
       bankname varchar2(30)
)
--分行表
create table fen_bank(
       fenbankid number,
       bankid number,
       fenbankname varchar2(30),
       fenbankaddress varchar2(100),
       constraint fk_bankid foreign key(bankid) references bank(bankid)
)

create table fen_bank(
       fenbankid number,
       bankid number,
       fenbankname varchar2(30),
       fenbankaddress varchar2(100),
       constraint fk_bankid foreign key(bankid) references bank(bankid) on delete cascade -- on delete cascade,删除主表数据时,同时级联删除从表数据
)

insert into bank values(100,'中国银行');
insert into bank values(200,'建设银行');
insert into bank values(300,'交通银行');
insert into bank values(400,'浦发银行');
select * from bank;
select * from fen_bank;
select * from bank,fen_bank;

insert into fen_bank values(101,'100','中国银行南京分行','南京路50号');
insert into fen_bank values(102,'100','中国银行苏州分行','苏州路50号');

select * from fen_bank;
-- 子表脏数据解决方案,同时绑定id+银行名称作为主键,作为子表数据参照或者与开发确认业务合理性
-- 删除表数据,先删除子表,再删除主表数据即可
delete from fen_bank;
delete from bank where bankid=100;

drop table fen_bank;
drop table bank;

--分组-- 
-- 聚和函数count(),min(),avg(),sum()
-- 统计每个部门下有多少人
select deptno 部门编号,count(*) 人数 from emp group by deptno;

-- 查询每个部门平均工资
select * from emp order by deptno;
select deptno 部门编号,avg(sal) 平均工资 from emp group by deptno;

-- 查询部门人数大于5的部门
select deptno 部门编号,count(*) 人数 from emp 
group by deptno
having count(*) > 5 -- 有having必定有group by, 有group by不一定有having

-- 查询部门平均工资大于2000
select * from emp;
select deptno 部门编号,avg(sal) 平均工资 from emp group by deptno;
select deptno 部门编号,avg(sal) 平均工资 from emp group by deptno having avg(sal)>2000;
select deptno 部门编号,round(avg(sal)) 平均工资 from emp group by deptno having avg(sal)>2000;
-----作业:-----
--显示非销售人员工作名称以及从事同一工作的员工的月工资的总和,
--并且要满足从事同一工作月工资总和大于5000,结果按月工资总和的升序排列。
--order by deptno asc/ desc
select * from emp;
select * from emp e where e.job not like '%SALESMAN';
select e.job,sum(sal) as sumsal from emp e where e.job <> 'SALEMAN' group by e.job having sum(sal) > 5000; -- 未能过滤SALESMAN数据 ?
select e.job,sum(sal) as sumsal from emp e where e.job <> 'SALEMAN' 
group by e.job 
having sum(sal) > 5000
order by sum(sal) desc

 -

 
select sysdate from dual; 
--创建表空间,注意创建文件夹te108
create tablespace test108 logging datafile 'c:\te108\t108.dbf'
size 10M autoextend on next 5M maxsize 20M;

--创建用户及密码
create user cn profile default identified by cn
default tablespace test108
temporary tablespace temp account unlock;

--赋予权限
grant connect,resource,dba to cn;

--创建表
drop table student;
create table student(
sno number primary key,
sname varchar2(20),
age number,
sex varchar(2),
birth date
)

drop table course;
create table course(
cno number primary key,
cname varchar2(20)
)

drop table sc;
create table sc(
sno number,
cno number,
grade number,
primary key(sno,cno)
)

--克隆表
create table cn.student as select * from sys.student;
create table cn.course as select * from sys.course;
create table cn.sc as select * from sys.sc;

--查询表
select * from sys.student;
select * from sys.course;
select * from sys.sc;

--查询当前用户的表信息
select * from student;
select * from course;
select * from sc;

 

SQLPLUS
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
电信级Oracle Backup Easy 2.0.1 全功能智能备份工具
SELECT语句的各子句的执行顺序 From >>>> Where >>>> Group by >>>> Having >>>> Select >>>> Order by
清空屏幕
Sql>clear screen;
Sql>Clear scr;
sqlplus调用记事本方法:
开始----运行----sqlplusw
sql>ed 1
windows调用记事本方法
开始----运行----notepad
--笛卡尔积
//m是第一个表中的数据,n是第二个表中的数据,产生m*n条数据
Select empno,ename,job,dname,loc from emp,dept;
--消除笛卡尔积
select emp.empno,emp.ename,emp.job,dept.dname,dept.loc from emp,dept where emp.deptno=dept.deptno;
\\Ycit-2-004 user:yict pwd:1314299 ip:192.168.2.200 getway:192.168.2.132
查询年龄高于平均年龄的教师的教工号、姓名、所在系和年龄信息
Select TNO,TNAME,DNAME,AGE From TEACHER Where AGE>(select avg(age) from teacher) Order by AGE

PL*SQL

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
pl*sql 
http://www.allroundautomations.com/
PL*SQL Tools
更改font size
Tools----preferences----user interface----fonts----edit----select
显示sql line number
Tools----preferences----windows type----sql windows----show dictionary info in result grid
PLSQL Develop
单行注释 --
多行注释 /*       */
show user 显示当前连接用户
show error 显示错误
show all     显示所有68个系统变量值
edit              打开编辑器,把缓存中最后一个sql语句调入afied.buf中编辑
edit x.sql     把当前目录指定的sql文件调入编辑器编辑
select * from tab;   察看总表数
日期和字符转换函数用法(to_date,to_char)  
http://www.javaresearch.org/article/27967.htm
sysdate:查询当前日期时间
SQL>select sysdate from dual;
systimstamp
SQL>select systimestamp from dual;
to_char( ):将日期类型转按一定格式换成字符类型:
24小时格式下时间范围为: 0:00:00 - 23:59:59  
12小时格式下时间范围为: 1:00:00 - 12:59:59
SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') time from dual;
TIME
-------------------
2008-1-31 20:17:57
to_date( ):将字符类型按一定格式转化为日期类型:  
SQL>select
查询某天是星期几  
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual;  
星期一  
select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual;  
monday
查询两个日期间天数
select floor(sysdate - to_date('20080130','yyyymmdd')) from dual;  
FLOOR(SYSDATE-TO_DATE('20080130','YYYYMMDD'))
----------------------------------------------------------------------------------
查询时间段
select * from table where date>=to_date('2007-01-02','yyyymmdd') and date <=to_date('2007-05-02','yyyymmdd');
查询记录数
select count(*) from table;
更新提货卡001~100有效 192.168.100.129
select t.*,t.rowid from delivery_card t;
select t.*,t.rowid from delivery_card t where t.no="001";
update delivery_card t set t.status=1 where t.no>="001" and t.no<="100";
commit;
查看test表结构
Desc Test 或 describe test;
select * from product_list where listId in(001,002);
listId  column1  column2
001     xxx      xxxx
002     xxx      xxxx
/*
  聚合函数:从一组函数中返回汇总信息
  聚合函数:sum,count,sount distent ,max,min,avg,stddev
  Oracle 10g
  Instance:orcl ID:scott,PWD:tiger
  table name:emp
  table structure:empno,ename,job,mgr,hiredate,sal,comm,deptno
*/
select * from emp;
--查询min,max,avg,sum
select min(sal),max(sal),avg(sal),sum(sal) from emp;
--查询min,max,avg,sum
select min(sal),max(sal),avg(sal),sum(sal) from emp;
--查询emp表中总行数
select count(*) from emp;
--查询mgr字段中的有效行数
select count(mgr) from emp;
--查询有多少工种
select count(distinct job)from emp;
--查询从事每一个工种的员工的工资总和
select job,sum(sal) from emp group by job;
--查询从事每一个工种的员工总数
select job,count(*) from emp group by job;
--查询每一个部门的最高工资及工资总和
select deptno,max(sal),sum(sal) from emp group by deptno;
--查询具有最高工资的员工
select ename,job,sal from emp where sal=(select max(sal) from emp);
-- 多条件分组
select deptno,job,count(*) from emp group by deptno,job;
-- 使用Having选择满足条件的组
select deptno,sum(sal) from emp group by deptno having sum(sal)>8000;
--查询除去秘书clear职业,那些部门工资总和超过$3000
select deptno,sum(sal) from emp where job !='clear'
       group by deptno having sum(sal)>3000 order by sum(sal);
TOAD
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
toad for oracle
http://www.quest.com/toad/
http://www.orbitsw.net/toad/
http://www.quest.com/china/pdfs.asp
http://www.toadsoft.com/beta.html
http://www.toadsoft.com/lic_agree.html
TOAD shortcuts
http://lfree.itpub.net/post/4950/196004
TOAD crack
http://www.pinxm.com/thread-18313-1-1.html
Quest Toad For Oracle V9.5.0.31 注册版文件名称:      
Toad for Oracle 9.5 Dev Suite Commercial.exe , 注册码:0-63920-11153-29060-08749
有些是我自己修改的,在系统菜单空白处点击右键,进入menu shortcuts:
ctrl-t 显示字段
alt+ 箭头上下 看sql history
c + . 补全table_name
F8 调出以前执行的sql命令
F6 格式化sql
F4 移动到表上,查看表的描述。
scroll lock 进入schema brower
F9 执行全部sql
这个没有用,不知道为什么?
ctrl+f12 external editor

-

-- Create table
create table CITY
(
  CITYID        NUMBER(19) not null,
  CITY_CODE     VARCHAR2(20),
  COUNTRY_CODE  VARCHAR2(100),
  CREATE_USER   VARCHAR2(20),
  CREATE_TIME   TIMESTAMP(6),
  UPDATE_USER   VARCHAR2(20),
  UPDATE_TIME   TIMESTAMP(6),
  STATUS        VARCHAR2(2),
  FK_PROVINCE   NUMBER(19),
  FK_CITY_GROUP NUMBER(19)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints
alter table CITY
  add constraint CITYID_PK primary key (CITYID)
  using index
  tablespace USERS
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
ora-02291 错误
http://blog.csdn.net/scjy127/archive/2007/09/14/1785407.aspx

有外键 FK约束的字段可以为空   
1。创建测试表
SQL> create table lesson(lesson_name varchar2(20), classroom varchar2(10));
表已创建。
SQL> create table teacher(name varchar2(20),lesson_name varchar2(20));
表已创建。
SQL> alter table lesson add constraint pk_lesson primary key(lesson_name);
表已更改。
SQL> alter table teacher add constraint fk_lessonname foreign key(lesson_name)
2 references lesson(lesson_name);
表已更改。
2。插入测试数据
SQL> insert into lesson values('english','class 1');
已创建 1 行。
SQL> insert into lesson values('music','class 2');
已创建 1 行。
3。测试有外键的字段是否可以为空
SQL> insert into teacher values('wang','hello');
insert into teacher values('wang','hello')
*
ERROR 位于第 1 行 :
ORA-02291: 违反完整约束条件 (SYSTEM.FK_LESSONNAME) - 未找到父项关键字
SQL> insert into teacher values('wang','music');
已创建 1 行。
SQL> insert into teacher values('wang',null);
已创建 1 行。
结论:有外键约束的字段可以为空。如果不为空的话,则一定要满足外键的约束关系。 

-

s

sqldeveloper-22.2.1.234.1810-x64.zip

https://download.oracle.com/otn/java/sqldeveloper/sqldeveloper-22.2.1.234.1810-x64.zip?AuthParam=1678887608_df7c70a720a67737ae4bf2b2a46843a5

 

问题1: DbVisualizer Pro 12.0.2 + MySQL 8.0.31 ,连接数据库,工具侧出现Type: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException,SQL State: 08S01

An error occurred while establishing the connection:
Long Message:
Communications link failure
The last packet successfully received from the server was 27 milliseconds ago. The last packet sent successfully to the server was 27 milliseconds ago.
Details:
   Type: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
   SQL State: 08S01

解决1: 如下,大图

MySQL5.7之后的版本需要加上useSSL=false,5.7以及之前的版本会默认为false.

原因是MySQL在高版本需要指明是否进行SSL连接。

   SSL协议提供服务主要:

       1)认证用户服务器,确保数据发送到正确的服务器;    .

       2)加密数据,防止数据传输途中被窃取使用;

       3)维护数据完整性,验证数据在传输过程中是否丢失;

   当前支持SSL协议两层:

    SSL记录协议(SSL Record Protocol):建立靠传输协议(TCP)高层协议提供数据封装、压缩、加密等基本功能支持

    SSL握手协议(SSL Handshake Protocol):建立SSL记录协议用于实际数据传输始前通讯双进行身份认证、协商加密算法、 交换加密密钥等。

解决参考:在mysql连接字符串url中加入ssl=true或者false即可,如下所示。

url=jdbc:mysql://127.0.0.1:3306/framework?useSSL=false

解决参考:mybatis-config.xml 配置dataSource中url异常解决

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException异常的解决

https://blog.csdn.net/m0_49345743/article/details/126400281

问题描述
Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
错误如下:

org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 496 milliseconds ago.  The last packet sent successfully to the server was 493 milliseconds ago.
### The error may exist in com/xifengshi/dao/UserMapper.xml
### The error may involve com.xifengshi.dao.UserMapper.getUserList
### The error occurred while executing a query
### Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet successfully received from the server was 496 milliseconds ago.  The last packet sent successfully to the server was 493 milliseconds ago.

原因分析:
mybatis-config.xml文件MySQL连接池的url错误:

>             <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>
                <property name="username" value="root"/>

MySQL5.7之后的版本需要加上useSSL=false,5.7以及之前的版本会默认为false.
有兴趣的可以去看看这篇文章https://blog.csdn.net/qq_42782063/article/details/90714658

解决方案:
useSSL=true改成useSSL=false即可

              <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=utf8"/>
                <property name="username" value="root"/>

 

 

 

 

问题2:Dbvisualizer各种中文乱码问题解决方法

https://www.cnblogs.com/wym591273/p/11976991.html 

解决2:

1.SQL Commander里中文显示成‘口’

解:进入Tools -> Tool Properties -> General -> Appearence -> Fonts,把最上边的三个字体都改成宋体或其他可正常显示中文的字体,改完apply,重新启动Dbvisualizer就好了。

2.表数据中中文显示成问号

解:先断开连接,然后在创建连接时的Database一栏的数据库名后面加上“?generateSimpleParameterMetadata=true&useUnicode=true&characterEncoding=utf8”,然后再连接应该就可以了。

注意:这种方法不会自动把问号变成中文,要手动把问号改成中文,存量问号太多的话,就需要重新导入数据了。

如果新增数据中文还是显示成问号的话,试试把所有的编码都改成UTF8,如下:

①进入Tools -> Tool Properties -> File Encoding,把编码改成UTF-8

②在填写连接IP端口的界面点进下一个Properties标签页,左边菜单中有个Encoding,点进去之后改成UTF-8

③修改数据库字符集编码,如MYSQL数据库的话就运行如下语句:

set character_set_server=utf8;
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_results=utf8;

 

-

问题1 :连接MySQL时报错:Public Key Retrieval is not allowed的解决方法

解决1:https://www.imooc.com/article/321153

DBeaver:Public Key Retrieval is not allowed Public Key Retrieval is not allowed

https://www.cnblogs.com/51net/p/15677727.html

DBeaver连接数据库的时候报错:public key retrieval is not allowed解决方法!

https://blog.51cto.com/u_15127588/3960146

问题分析

DBeaver:再次连接数据库时竟然报错:
Public Key Retrieval is not allowed / 不允许检索公钥
https://mysqlconnector.net/connection-options/

直接使用翻译软件,翻译整个网页,找到“其它选项-允许公钥检索,AllowPublicKeyRetrieval”,我们看到它的默认值是false,查看描述:
如果用户账号使用sha256_password认证,传输过程中必须保护密码;TLS 是首选机制,但如果它不可用,则将使用 RSA 公钥加密。
要指定服务器的 RSA 公钥,请使用ServerRSAPublicKeyFile连接字符串设置,或设置AllowPublicKeyRetrieval=True为允许客户端自动从服务器请求公钥。
注意,这AllowPublicKeyRetrieval=True 可能允许恶意代理执行 MITM 攻击以获取明文密码,因此False默认情况下必须显式启用它。

解决方案:AllowPublicKeyRetrieval=True 。

 

连接mysql时报错:Public Key Retrieval is not allowed(不允许公钥检索)

报错截图:

https://img1.sycdn.imooc.com/6166a2c5000169c804780370.jpg

解决方法:连接设置——驱动属性——allowPublicKeyRetrieval=false(这里的运输公钥检索是默认关闭的,需要把它开启),改为allowPublicKeyRetrieval=true即可。

https://img1.sycdn.imooc.com/6166a2df000104e307820611.jpg

连接数据库后,如果不想把此项开启,那在改为false就行,连接过一次后面都可正常在重新连接使用,但是如果新增连接还是要把此项开启,不然可能还是会继续报错。

 

 

JProfiler 性能跟踪、测量工具,能跟踪、测量BS程序

 

 

http://netfork.iteye.com/blog/286789
一、P6Spy 的安装与使用
P6Spy 是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架.
二、结合SQL Profiler进行图形化监控与使用

IronTrack SQL: http://www.irongrid.com/ironeyesql

三、结合IronTrack SQL进行图形化监控与使用
http://laies.iteye.com/blog/168964

http://www.open-open.com/open4904.htm

http://sourceforge.net/projects/eclipsecolorer/
http://www.prosyst.com/products/tools_jprofiler.html
http://blog.ej-technologies.com/search/label/screencast
 
 
P6Spy & SQL Profiler & IronTrack SQL
http://www.iteye.com/topic/28880?page=1
 
“Nearly 80 to 85 percent of database performance problems arise from the application database's design or the application's own code. Good transaction throughput requires an application designed from the database up, with performance and scalability in mind.”
----DB2 Magazine


P6Spy & SQL Profiler & IronTrack SQL

P6Spy是一个可以用来在应用程序中拦截和修改数据操作语句的开源框架。
通过P6Spy我们可以对SQL语句进行拦截,相当于一个SQL语句的记录器,这样我们可以用它来作相关的分析,比如性能分析。

一、P6Spy的安装与使用

1、从 http://www.p6spy.com/ 下载P6Spy的文件包,也可以下载它的源文件包来研究;
2、把P6Spy的jar包p6spy.jar放到classpath中,如果是Web应用程序则放在YourWebApp/WEB-INF/lib/目录下;
3、把spy.properties放到classes目录下,如果是webapp就放在YourWebApp/WEB-INF/classess/目录下,记得不是lib/目录
4、修改你程序的数据库驱动名称为P6Spy的驱动程序名称com.p6spy.engine.spy.P6SpyDriver其它的都不用更改;
5、打开spy.properties文件,把realdriver的值改为你的程序的数据库驱动名称;
6、运行你的应用程序或Web应用程序,可以在spy.log里看到监测到的sql详细记录信息了。
7、驱动程序加载先后的问题解决
  如果spy.log里出现
  你的程序的数据库驱动名称 is a real driver in spy.properties, but it has been loaded before p6spy.  p6spy will not wrap these connections.  Either prevent the driver from loading, or try setting 'deregisterdrivers' to true in spy.properties
  请把spy.properties文件里的deregisterdrivers=false改为deregisterdrivers=true,重新运行即可。

二、结合SQL Profiler进行图形化监控与使用

1、从 http://www.jahia.net/ 下载SQL Profiler的文件包进行安装;
2、把p6spy.jar及sqlprofiler.jar放到classpath中,如果是Web应用程序则放在YourWebApp/WEB-INF/lib/目录下;
3、把spy.properties放到classes目录下,如果是webapp就放在YourWebApp/WEB-INF/classess/目录下,记得不是lib/目录
4、修改你程序的数据库驱动名称为P6Spy的驱动程序名称com.p6spy.engine.spy.P6SpyDriver其它的都不用更改;
5、打开spy.properties文件,把realdriver的值改为你的程序的数据库驱动名称;
6、注意要先运行 java -jar sqlprofiler.jar 来启动SQL Profiler,并成功看到启动后界面;
7、然后再启动你的应用程序或服务器,并开始进行正常的系统请求处理操作;
8、这样可以在SQL Profiler图形化的界面上看到结果并进行分析了。
并且可以通过保存按钮导出数据库优化建议的索引脚本

三、结合IronTrack SQL进行图形化监控与使用

1、从 http://www.irongrid.com/ironeyesql 下载IronTrack SQL的文件包进行安装;
2、把irontracksql.jar、p6spy.jar、log4j-1.2.8.jar放到classpath中,如果是Web应用程序则放在YourWebApp/WEB-INF/lib/目录下;
3、把spy.properties放到classes目录下,如果是webapp就放在YourWebApp/WEB-INF/classess/目录下,记得不是lib/目录
4、修改你程序的数据库驱动名称为P6Spy的驱动程序名称com.p6spy.engine.spy.P6SpyDriver其它的都不用更改;
5、打开spy.properties文件,把realdriver的值改为你的程序的数据库驱动名称;
6、设置监听端口号monitorport=2000
6、先运行 java -jar irontracksql.jar 来启动IronTrack SQL;
7、再启动你的应用程序或服务器;
8、可以在 IronTrack SQL 图形化的界面上看到结果并进行分析了。
 
end

 

 

end 

end

posted @ 2008-08-04 16:13  siemens800  阅读(35)  评论(0编辑  收藏  举报