侧边栏壁纸
  • 累计撰写 781 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

基本

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 111 阅读 / 3,156 字
温馨提示:
本文最后更新于 2022-04-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

数据类型
1.
varchar2
2.
char 定长,后补空格    
3.
DATE  
4.
TIMESTAMP
5.
NUMBER(M,N) M是总位数,N是小数点的个数
6.
CLOB(Character Large Object)大字符串对象类型 数据类型用于存储可变长度的字符数据,最多可存储4GB数据. 用于存储VARCHAR2类型不能存储的长文本信息
7.
BLOB(Binary Large Object)大二进制类型 数据类型用于存储较大的二进制对象,如图形、视频剪辑和声音剪辑等,最多可以存储4GB数据

虚表 dual
没有自增,改用sequence
没有limit 有 top
用户相当于数据库,就是每个用户的数据库别的用户默认无法访问,轻易不创建数据库。
scott 示例用户,密码tiger,里面有四个示例表
sys用户 system 用户

创建表
create table tb_shop(
   shopId number(10) primary key,
   shopName varchar2(20) not null,
   price number(6,2) not null check(price>0),//列级约束
   shopTypeId number(6) not null, 
   manufacturingDate date null, 
   constraint ck_price check(price>0),//表级约束
 constraint ck_sex check(sex in ('男','女')),
   constraint fk_shopType foreign key(shopTypeId){当前表中的类名} references tb_shopType{主表的表名}(id){主表中的主键列民}
);
修改表

向已经创建的表中增加一个新列
alter table tableName add columnName dataType;
alter table tb_shop add memo varchar2(100);
修改表中指定列的数据类型和类型长度
alter table tableName modify(mysql 是 alter) columnName dataType;
alter table tb_shop modify memo varchar2(50);
删除表中指定的列
alter table tableName drop column columnName;
alter table tb_shop drop column memo;
修改列名
alter table ta_name rename column col_name to new_col_name;
rename 表名 to 新表名
给表添加约束
alter table tableName add constraint constraintName constraintType(columnName)
alter table tb_shopType add constraint unqu_shoptype_showname unique(shoptype);
从视图USER_CONS_COLUMNS中查看约束
select constraint_name,column_name from user_cons_columns where table_name='personal_info'
查找:
SELECT ENAME, JOB, SAL, DEPTNO FROM EMP WHERE SAL >= ALL(SELECT SAL FROM EMP WHERE DEPTNO=20);
SELECT ENAME, JOB, SAL, DEPTNO FROM EMP A WHERE EXISTS (SELECT * FROM EMP B WHERE B.MGR = A.EMPNO);
select * from emp where (sal,deptno) in(
		select min(sal),deptno from empgroup by deptno
)order by deptno;
添加:
insert into dept1 select * from dept  复制表
使用Truncate 删除所有数据
truncate table shopinfo; 截断表 速度快 数据库定义语言语句效率高
Rownum
分页:查第一页和后面的页方法不同。
是一个伪列,它会根据返回的记录生成一个序列化的数字。可以使用ROWNUM列返回查询结果集中前N条记录
select rownum,"test".* from "test";
select rownum,deptno,ename,job,mgr,hiredate from emp where rownum<10(第一页数据)
select rownum,deptno,ename,job,mgr from emp where rownum>=10 && rownum <20;(第二页数据)(报错)
分页实现
比如每5行为一页,现在要显示第2页,就是要显示第6行到第10行
select e.* from ( select rownum r,deptno,ename,job,mgr,hiredate from emp ) e Where r>5 and r<11; (由于rownum不能用&&,所以要套表)
rowid
rowid就是唯一标志记录物理位置的一个id,内容是当前行位于哪个文件,块,行的详细信息。
AAASNRAAEAAAAIOAAA
序列
(Sequence)是Oracle提供的的用于产生一组等间隔整型数值的数据库对象,可以通过在插入语句中使用序列值来实现主键自增。Oracle中的CREATE SEQUENCE命令用于创建序列
CREATE SEQUENCE sequnce_name
[START WITH n1] //指定要生成的第一个序列号
[INCREMENT BY n2] //用于指定序列号之间的间隔,默认值为1
[{MAXVALUE n3 | NOMAXVALUE}] //指定序列可以生成的最大值
[{MINVALUE n4 | NOMINVALUE}] //指定序列可以生成的最小值
[{CACHE n5 | NOCACHE}] //用于指定在高速缓存中可以预分配的序列号个数,默认为20
[{CYCLE | NOCYCLE}] //用于指定在达到序列的最大值或最小值后是否循环
[ORDER]; //用于指定按顺序生成序列号 ,确保序列唯一和有序
……使用……
NEXTVAL和CURRVAL列
NEXTVAL列返回序列生成的下一个值
CURRVAL列返回序列生成的当前值
序列的初始化
在第一次引用CURRVAL列之前,必须引用过一次NEXTVAL列,用于初始化序列的值,否则会出现错误提示
select seq_id.nextval from dual
select seq_id.currval from dual
在SQL语句中使用序列
在SQL语句中,可以直接使用引用序列的值
insert into tab_test values(seq_test.nextval,1,'张三');
JDBC
Class.forName();

String driverClass = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String user = "scott";
String password = "tiger";

jar包在 F:\app\Administrator\product\11.2.0\dbhome_1\sqldeveloper\jdbc\lib 下,是java自带的图形化管理工具用的jar。
每次操作后不自动commit,所以要自己执行这条语句。

0

评论区