db database tool / sqlplus / sqldeveloper / plsql / toad / navicat / powerdesign / Oracle Instant Client / Dbvisualizer Pro 12.0.2 / Dbeaver 22 / sqldeveloper22
s
问题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
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
Toad for Oracle 9.5 Dev Suite Commercial
Quest Toad For Oracle V9.5.0.31 简体中文版
Quest Toad For Oracle V9.6.1 简体中文版
http://worlddownloads.quest.com.edgesuite.net/Repository/support.quest.com/Toad%20for%20Oracle/9.6.1/Software/Toad%20Development%20Suite%20for%20Oracle%209.6.1%20Commercial.exe
site message: www.pinxm.com cd-key 0-63920-11153-29060-08749
查看当前总用户数据库连接数 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;
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
电信级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
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&useUnicode=true&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&useUnicode=true&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(不允许公钥检索)
报错截图:
解决方法:连接设置——驱动属性——allowPublicKeyRetrieval=false(这里的运输公钥检索是默认关闭的,需要把它开启),改为allowPublicKeyRetrieval=true即可。
连接数据库后,如果不想把此项开启,那在改为false就行,连接过一次后面都可正常在重新连接使用,但是如果新增连接还是要把此项开启,不然可能还是会继续报错。
-
JProfiler 性能跟踪、测量工具,能跟踪、测量BS程序
IronTrack SQL: http://www.irongrid.com/ironeyesql
三、结合IronTrack SQL进行图形化监控与使用http://www.open-open.com/open4904.htm
----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