数据表的基本概念

# 基本概念

  方案=用户

   实体:Java中的类

   记录:Java中的对象,行

   字段:java中的属性,列

   表:同一个实体中,所有的记录、字段组合起来就是表。

# varchar2和char的区别:
 
varchar2:是可变字符串,在声明长度时,如果存储不满,可自动缩小长度
char:定长字符串,在声明长度时,如果存储不满,用空格填补满。
 
 
# varchar和varchar2区别:
 
varchar:汉字占2个字节,英文占1个字节;varchar2:都占2个字节
varchar是标准的sql;varchar2是oracle独有的
varchar不对空字符串处理;varchar2对空字符串记作null
varchar存放固定长字符串,最大长度为2000个字节;varchar2存放可变字符串,最大长度为4000字节。
 
 
# 大文本BLOB,CLOB不能进行alter修改 -->先删除该列,再重新追加。
 

# 基本命令

show user;  ---查看当前用户
=======================================================
select * from tab;  ---查看当前用户下的所有表
========================================================
Dos查看设置:

  set linesize 300

  set pagesize 300
=========================================================
host cls 清屏

# 数据查询
--列别名,注意:年薪不要分开写,最好加上" "

select ename 姓名,salary*15 年薪 from s_emp;

# null值的计算
--nvl(参数1,参数2):若参数1为空,返回参数2;若参数2为空,返回参数1 类似"三目运算"

select ename,salary*16+nvl(commission_pct,0) from s_emp;

--排重 distinct

select distinct salary,manager_id from s_emp; --多字段排重,会以组合的形式出现

--where关键字
--特殊条件(极限条件)

select * from emp where 1=1;--永真
select * from emp where 1!=1; --永假


# 模糊查询

1.like... '李%'、'%丽%'、'_博%'、'%e_'、'%\_%' escape '\'

select * from emp where ename like '%\_%' escape '\'; --模糊查询出带有下划线的名字

2.between...and... 在特定范围内 "从小到大"


3.in... 查询出某一列内容与所列的匹配内容 ---注意:not in...不能出现null,若出现null,结果为null

select * from emp where eno not in (10,20,30,null); ---结果为空
select * from emp where mgr not in(select mgr from emp);
--null、not null

select ename from s_emp where commission is null;

# 排序:order by... desc/(asc) 排序永远在语句的最后

select * from s_emp order by salary desc; --(大――>小)
select empno,ename,sal from emp order by 3 desc; 
select * from s_emp order by dept_id desc,salary desc,id asc;
--order by 字段名|表达式|序号

select * from s_emp order by salary desc; 
select empno,ename,sal from emp order by 3 desc; 
select * from emp order by sal+1000 desc; --null值在排序的时候默认是最大的
select empno,ename,sal from emp order by sal desc nulls last; --将null扔到后面

# 追加排序(command)

SQL> select empno,ename,sal from emp;
SQL> a order by sal desc;
1* select empno,ename,sal from emporder by sal desc
SQL> /


--修改写错单词
SQL> select * fron emp;

SQL> c /fron/from
1* select * from emp
SQL> /

# 运算符


算术运算符:+、-、*、/、mod(a,b)
逻辑运算符:and or not
比较运算符:>、<、=、>=、<=、<>、!=(非SQL92标准)

注意:现在用的是SQL99标准,若接触到MyCat中间件的时候,在增添数据的时候要遵守SQL92标准。

# DDL数据定义语言

1.建表

create table 表名(
字段名1 数据类型(长度),
字段名2 数据类型(长度),
字段名3 数据类型(长度),
...
)

2.修改表结构/表名

alter table 表名 add 列名 数据类型;

alter table 表名 drop column 列名;

alter table 表名 rename 原列名 to 新列名;

alter table 表名 rename to 新表名;

3.删除表

delete from emp;--可以回退,支持闪回,不会释放空间(换了个地方存储数据)
truncate table emp; --不可回退,不支持闪回,清空空间
delete 会产生碎片,truncate不会
如果碎片太多,需要整理碎片:
  a. alter table 表名 move;
  b. 导入导出
set time on/off --显示时间

# DML数据操纵语言

1.增、删、改

insert into 表名 values(列值名1,列值名2...);
delete [from] 表名 [where<删除条件>];
update 表名 set 列名1=列值1,列名2=列值2...[where<更新条件>]; ---若修改错了,记得rollback;
  # (CRUD)增、删、改、查(DQL非官方)
原文地址:https://www.cnblogs.com/wzhqzm/p/13358020.html