一、管理表
1.认识表:
表其实是我们存储数据的一个基本单位。
在数据库中的表都是一个二维结构;在一张表中,每一列的数据必须具有相同的数据类型;列名要具有唯一性每一行的数据也要保证其唯一性。
2.数据类型:
(1)字符型数据类型:
固定长度的数据类型:
CHAR(n)类型;-- CHAR类型的n的最大值是2000;
NCHAR(n)类型;-- NCHAR类型的n的最大值是1000;
可变长度的数据类型:
VARCHAR2(n)类型;-- VARCHAR2(n)类型的n最大值是4000;
NVARCHAR(n)类型;-- NVARCHAR(n)类型的n的最大值是2000;用于存储Unicode格式的数据,更适合存储中文数据。
(2)数值型数据类型:
NUMBER(p,s)类型:是Oracle中比较常用的的一个数值型,p在这里代表这有效数字,而s则可以理解为效数点后的位数
-- 例:NUMBER(5,2)==有效数字是五位,保留两位小数。
FLOAT(n)类型:主要是用来存储二进制数据,还能表示二进制的位数是1~126位
(3)日期型数据:
DATE类型:DATE类型的存储范围是从公元前4712年1月1日到公元9999年12月31日,DATE类型可以精确到秒的数据类型。
TIMESTAMP类型:时间戳类型,能精确到小数秒的数据类型。
(4)其他类型:
存放大对象的数据:
BLOB类型(以二进的形式来存放数据,最大值为4GB)
CLOB类型(以字符串的形式来存放数据,最大值为4GB)
3.管理表:
(1)创建表:
创建表的基本语法:
CREATE TABLE table_name -- 在同一个用户下,表名要是唯一的
{
columu name datatype,
....
}
查看表里面的字段信息 :
desc table_name
(2)修改表:
alter table table_name add column_name datetype; -- 向表中添加字段
alter table table_name modify column_name datatype; -- 修改字段类型
alter table table_name drop cloumn column_name;-- 删除字段
alter table table_name rename column column_name to new_name;-- 修改字段名
rename table_name to new_table_name;-- 修改表名
(3)删除表:
DELETE FROM table_name [WHERE conditions];
delete | truncate | drop | |
---|---|---|---|
效果 | 只删除数据 | 只删除数据 | 删除表结构、约束、触发器、索引、... |
语言区别 | DML(事务提交后生效) | DLL(立即生效) | DLL(立即生效) |
速度 | 慢 | 快 | 最快 |
二、操作表中的数据
1.添加数据
(1)向表userinfo中添加数据:
-- 示例:
INSERT INTO table_name(column1,column2,…) VALUES(value1,value2,…);
-- sysdate是获取当前日期
insert into userinfo values(1,‘xxx’,‘123123’,‘[email protected]’,sysdate);
(2)创建表userinfo2的时候,给表中设置默认值
-- DEFAULT关键字代表默认,sysdate代表当前时间
create table userinfo2
(
id number(6,0),
dates date DEFAULT sysdate
);
向表userinfo2中添加数据
insert into userinfo2(id) values(1);
(3)向表userinfo中添加默认值
alter table userinfo modify email default ‘无’;
insert into userinfo(id) values(3);
-- 不想要默认值的时候,直接赋予值就行
insert into userinfo(id,email) values(4,‘[email protected]’)
(4)复制表table_old的数据到表table_new
-- 在建表时复制
create table table_new as select column1,...|* from table_old;
-- 在添加数据是复制
insert into table_name [(column1,...)] select column1,...|* from table_old;
2.修改数据
Update table_name Set column1=value1,column2=value2,...[where conditions]
(1)无条件修改
(2)有条件修改
3.删除数据
DELETE FROM table_name [WHERE conditions];
三、查询语句
1.基本查询语句:
-- FROM (可以多表查询) WHERE 子句可带多个条件 DISTINCT 显示不重复数据
select [Distinct] 列名 .. From 表名 [where condition]
2.在sqlplus中设置格式
(1)作用:配合select语句使用,设置查询结果显示的格式,不会修改数据库表字段。
(2)给字段设置别名:
-- 设置返回纪录每行的宽度,超过宽度N则截掉,不够这个宽度则补空格
SET LINESIZE N
-- COLUMN 可以简写成COL
COLUMN column_name HEADING new_name;
(3)设置字段的格式化样式:
COLUMN column_name FORMAT dataformat;
-- 如果是字符类型的值,只能设置它显示的长度;
-- 其中a后面跟数字表示字符串显示长度,例:a10 表示显示10位的长度的字符串;
-- 数字则用‘9’代表一位,例:999.9 表示整数位为三位,小数位为一位;
-- 如果设置的长度超出数据最大长度,则用‘#’显示;
-- 还可以在数字前面加‘$’,例:$999.9 则查询后显示的结果会在结果前加上'$'符。
-- a后面跟数字表示字符串显示长度,例:a10 表示显示10位的长度的字符串;
-- 数字则用‘9’代表一位,例:999.9 表示整数位为三位,小数位为一位;
(4)清除设置格式 语法:
COLUMN column_name CLEAR;
3.查询所有字段和指定字段
-- 查询所有
select * from table_name;
-- 查询指定字段
select column1, ... from table_name;
4.给字段设置别名
-- as可省略
select column_name as new_name, ... from table_name;
5.运算符和表达式
(1)表达式 = 操作数 + 运算符
(2)oracle中的操作数可以是常量、变量和字段
(3)oracle中的运算符:算数运算符(+ - * /)、比较运算符(> < = >= <= <>)、逻辑运算符(and or not)
(4) () 可以改变运算符优先级
6.在select语句中使用运算符
-- 在查询语句中,使用算术运算法对字段进行运算,并不影响真正表中的数据
-- 所有工资结果加200
select id,username,salary+200 from users;
select username from users where salary>800 or salary<>1801;
7.带条件的查询
逻辑运算符的优先级:按not、and、or的顺序依次递减; 比较运算符的优先级高于逻辑运算符
8.模糊查询
通配符的使用: 一个_只能代表一个字符,一个%可以代表0到多个任意字符
-- 查询以a开头的用户名
select * from users where username like 'a%';
-- 查询第二个字符为a的用户名
select * from users where username like '_a%';
9.范围查询
(1)BETWEEN...AND/NOT BETWEEN...AND:查询结果为闭合区间
(2)IN/NOT IN:结果为一个具体的值
10.对查询结果进行排序
SELECT [DISTINCT] column_name1,...|* FROM table_name [WHERE conditions] ORDER BY column_name1 DESC|ASC,...
-- DESC是降序排序,ASC是升序排序,默认情况下是升序排序