oracle数据库基本语句查询
ORacle-12560:TNS 协议配置器错误
1.服务:1.监听服务未开启 2.服务器未开启 3.环境变量:Oracle_sid = orcl 4.regedit注册oracle_sid=orcl 5.cmd-->set oracle_sid = orcl
oracle网络配置文件路径:D:\app\Administrator\product\11.2.0\dbhome_3\NETWORK\ADMIN\SAMPLE
client配置文件路径:D:\app\Administrator\product\11.2.0\client_3
tnsping ip:测试数据库服务的命令
监听配置命令:
1.lsnrctl start 启动监听
2.lsnrctl stop 停止
3.lsnrctl status 查看状态
oracle基本类型
字符串:
1.char/nchar 固定长度
2.varchar2/nvarchar2 可变长度
数字类型
1.number(P,S) EG:123.89 number(3) -->124 四舍五入 123.89 number(6,1) -->123.9
1.P-表示有效数字的位数,最多不能超过38个有效数字
2.S-使用范围-84~127
1.为正数时:从小数点到最低有效数字的位数 123.89 number(6,1) -->123.9
2.为负数时:从最大有效数字到小数点的位数 123.89 number(6,-2) -->100
2.int 整型
日期类型
DATE 日期数据类型存储日期和时间信息
Oracle角色:
connect role (连接角色) :对其他用户的表访问 insert into,delete,update,select 还能创建表,视图,序列。不能查看用户名
resource role (资源角色) :创建:表 序列 索引 触发器 过程和簇
dba role (数据库管理) :无限制的空间限额 和给其他用户授权
EG:eilin select,delete to tmp1 角色的权限
lin1 wcq159753?
grant eilin,resource to lin 将角色的权限分给Lin用户
1.创建临时表空间 create temporary tablespace car_data <br>tmpfile 'C:\Users\102466\Desktop\Provite\car_data.dbf' size 50m autoextend on next 50m maxsize 20480m extent managemet local; 2.创建数据表空间 create tablespace car_data logging datefile 'C:\Users\102466\Desktop\Provite\car_data.dbf' size 50m autoextend on next 50m maxsize 20480m extend management loacl; 3.创建用户并制定表空间 create user eilinge identified by 8888 default tablespace car_data; //用户名:eilinge 密码:8888 4.给刚刚创建的用户授权 grant connect,resource,dba to eilinge; 5.撤销用户权限 revoke create,resource from eilinge; 6.删除用户 drop user eilinge
7.创建表
create table car(
carId number(20) not null primary key,
carName varchar2(20),
carType varchar2(20),
carNum varchar2(20),
carAge int );
8.修改表
//修改表car,添加check约束
alter table 表名 add constraint check名 check(列名 约束);
alter table car add constraint car_carAge check(carAge between 0 and 10);
//设置外键 alter table 表名 add constraint 外键名 foreign key(userId) references userN(userId);
//修改一个列的数据类型(一般限于修改长度,修改为不同类型时有很多限制) alter table 表名 modify(列名 数据类型);
alter table car modify(carid number(10));
//修改列名 alter table 表名 rename column 当前列名 to 新列名;
alter table car rename column carid to carcar;
//修改表名 alter table 当前表名 rename to 新表名;
alter table car rename to carcar;
//删除列 alter table 表名 drop column 列名;
alter table car drop column carname;
//添加列 alter table 表名 add(column1 datatype,column2);
alter table car add(car1 number(20),car2 number(20));
//外键约束
//约束用于规定表中的数据规则。如果存在违反约束的数据行为,行为会被约束终止
NOT NULL 非空约束 指定的列不允许为空值
UNIQUE 唯一约束 指定的列中没有重复值
primary key 主键约束 --非空 唯一,一个表只能有一个主键约束;
foreign key 外键约束 一个表中的列引用了其他表的列,是得存在依赖关系,可以指向引用自身的列
check 条件约束C 指定该列是否满足某个条件
推荐的约束命名:约束类型_表名_列名
NN -- not NUll
UK -- unique key
PK -- Primary key
Fk -- Foreign key
Ck -- check key
外键约束是用来维护从表和主表的引用完整性的,所以外键约束要涉及2个表:
foreign key :在表级指定子表中的列
references : 标示在父表中的列
on delete cascade : 当父表中的列被删除时,子表中相对应的列也被删除
on delete set null: 子表中相应的列置空
9.创建userN表 里面有创建表和添加外键及主键 create table userN( userId number(20) not null primary key, //添加主键 licNum number(20), userName varchar2(10), sex varchar2(2), userAge int, userNative varchar2(10), userAddress varchar2(100), userNum number(13), carId number(20), constraint carId foreign key(carId) references car(carId); //外键关联 constraint约束 10.插入数据的语句 insert into car values('20131101','宝马'); 11.更新数据的语句 //修改某一数据。例如:将表salary中编号为11011的职工收入改为10000; update salary set income=10000 where employeeid = 110001; //修改某一列数据。例如:给每个职工增加收入100元 update salary set income = income+100; 12.查询 //查询car表里面车牌号为88888的车的信息 select * from car where carnum = '88888'; //查询车牌号为88888并且carname为奔驰的车的所有信息(跨表查询) select * from Usern where carid = '88888' and carname='奔驰'; //查询车牌号为88888的车主的所有信息(跨表查询) select * from Usern where carid in (select carid from car where car.carnum='88888'); //查询车主的所有身份信息以及车信息(外连接) select * from usern left join car on(car.carid=userN.carid); //查询车牌号为88888的车主的所有身份信息以及车信息(外连接); select * from usern left join car on(car.carid = userN.carid) where carnum = '88888'; //查询车名为宝马的用户信息(子查询) select * from usern where cauid in (select carid from car where carname='宝马'); //查询换过尾灯且加过导航的奔驰车信息(多表连接) select * from car as c ,reparis as r ,variation as v where r.type='尾灯' and v.type='加导航' and c.carname='奔驰'; //查询各种类型的车的数量分别为多少(分组加计数) select carname,count(*) 数量 from car group by carname; 12.视图和索引 什么是视图: 1.视图是一种虚表 2.视图建立在已有表的基础上,视图赖以建立的这些表称为基表 3.向视图提供数据内容的语句为select语句,可以将视图理解为存储起来的select语句 4.视图向用户提供基表数据的另一种表现形式 5.视图没有存储真正的数据,真正的数据还是存储在基表中 6.程序员虽然操作的是视图,但最终视图还是会转成操作基表 视图的作用 1.限制数据访问 2.简化复杂查询 3.提供数据的相互独立 4.同样的数据,可以有不同的显示方式 1.创建视图 create view temp as select carid,cartype from car; 什么是索引 1.是一种快速查询表中内容的机制,类似于新华字典的目录 2.运用在表中某个/些字段上,但存储时,独立于表之外 索引的特点 1.索引一旦建立,Oracle管理系统会对其进行自动维护,而且由Oracle管理系统决定何时使用索引 2.用户不用在查询语句中指定使用哪个索引 3.在定义primary key 或unique约束后系统自动在相应的列上创建索引 4.用户也能按自己的需求,对指定单个字段或多个字段,添加索引 2.创建索引 create index cartype on car(cartype) 13.order by select column_name1,colum_name2 from table_name order by column_name,column_name ASC | DESC--降序; 14.like select * from websites where name like '%S-' % --代替0个或多个字符 - 代替一个字符 15.函数 Aggregate AVG() 平均值 COUNT() 行数 Fisrt() 第一个记录的值 last() 最后一个记录的值 max() 最大值 min() 最小值 sum() 总和 Scalar 函数 函数基于输入值,返回一个单一的值 UCASE() 将某个字段转换为大写 LCASE() 将某个字段转换为小写 MID() 从某个文本字段提取字符 LEN() 返回某个文本字段的长度 ROUND() 对某个数值字段进行指定小数位的四舍五入 NOW() 返回当前的系统日期和时间 format() 格式化某个字段的显示方式 16.HAVING select column_name, aggregate_function(column_name) from table_name where column_name operator value group by column_name Having aggregate_function(column_name) operator; EG:select websites.name,SUM(access_log.count) AS nums from Websites INNER JOIN access_log ON websites.id = access_log.site_id WHERE website.alexa < 200 group by websites.name HAVING SUM(access_log.count) > 200;
附录:
commit 提交,插入数据之后,需输入commit,才算插入成功
desc 查看表结构
delete table table_name 删除表
varchar 允许存储空字符串
varchar2 和varchar功能一样,将空字符串改为NULL存储
distinct 除去重复值
revoke 撤销
grant 赋予
select table_name from user_tables; 查看某用户下的所有表名
user_tables 自己所有表
all_tables 全部表
dba_tables
select * from sys.tmp //sys 声明对象
查看所有用户
select username from dba_users;
查询用户权限
select * from user_sys_privs; 无法显示用户对表的权限
system 角色
select * from user_role_privs;
sys 具有最高权限,可以对system创建的表进行操作和权限管理
system 无法对sys.temp进行操作