Oracle 数据库

来源:互联网 发布:matlab 四维矩阵 画图 编辑:程序博客网 时间:2024/05/19 15:24
登录数据库
进入 SQLplus cmd -sqlplus/nolog
conn / as sysdba  管理员身份登录本地数据库
conn 用户名/密码 as sysdba---链接远程的数据库
conn用户名/密码---普通身份登录数据库
只有管理员 才能创建用户和给用户授权
创建用户:
create user 用户名 identified by 密码
注意:用户名和密码命名建议多少字母开头
如果数字开头,则必须要双引号括起来   
用户授权:
grant 权限 to 用户名
grant connect to 用户名;
授权多个权限或角色
grant connect,resource 用户名
crcatc scssion???????
角色 权限 用户
权限:点名,收作业
角色:班长:点名 作业
将班长的角色指定某个人
角色是权限的集合

常用的角色:
connect :只有连接数据库的权限,临时用户
resource:具备数据库中的基本操作
一般情况:普通用户只要授予connect 和resource角色就可以
dba:管理员角色 最高权限
撤销权限:、
revoke 权限,角色 from 用户名
revoke connect,resource from 用户名;
修改用户密码:
alter user 用户名 identified by 新密码;
删除用户名:正在连接的用户不能删除
drop user 用户名; 只能删除没有数据的用户;
drop user 用户名 cascade --级连删除 ,删除源码的时候,同时删除该用户下的数据
配置连接远程数据库:
1:查看远程主机(安装了数据库)的ip地址
cme - ipconfig
2:将主机的防火窗给关闭
3:修改连接数据库的配置文件
安装目录:C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN\tnsnames.ora
修改“
XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = SKY-20170428AQK)(PORT = 1522))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )
  XE:= 前面的字符串 表示的是数据库连接字符串,用于标识连接的是哪一个数据库,
该标识名可以可以改名,一般都是大字母
HOST: 表示的是连接的数据库所在的主机地址(可以是本机主机名称)
或者 12.0.0.1 ip地址;
SERVICE_NAME:XE表示的是数据库的名称;
11g 12c ORCL
将以上字符串复制一份修改连接字符串和HOST就可以
4:重启 pl /spl 工具
数据库基本知识:
DB Database 数据库
DBMS 数据库管理系统 用于管理数据库
常见的数据库:
Oracle 
SQL Sercer 微软
MySQL  免费 5.0就收费 Oracle公司收购
DB2 IBM
。。。
关系型数据库 
数据显示以二维表形式显示
在二维表中
行 表示java普通的一个对象
列 表示java中对象的属性
二维表对应就是java的一个类对象数组或者集合

SQL语言:
分类: 
DDL:数据定义语言
create alter drop
DML:数据操作语言
添加,修改,删除
DQL:数据查询语言
查询
DCL:数据控制语言
grant revoke 
TCL:事务控制语言
表格:
create table 表明(
子段名 类型 (子段名的字符长度),---每个字段之间逗号隔开
。。。
。。。
子段名 类型 ()   ------最后一个字段不需要逗号
create table t_student(
sid number(5),---学生学号
sname varchar2(20),---姓名
ssex varchar2(20),---性别
sage number(3)------年龄
注意:oracle不区分大写的,系统自动
实际开发中,SQL语句一般都是写成大写的

添加注释:
对表添加注释:
comment on table 表名 is ‘注释的内容’;
如:comment on table t_student is ‘学生表’;

对表中的子段添加注释:
comment on column 表名.子段名 is‘注释的内容’;
如:comment on column t_student.sid is‘学生学号’;
数据类型:
数值类型:number(p,s)
number 默认精确到38位
number(5)最多5位整型数据
number(5,2)保存5位长度数据,小数点2位
小数点位数可以超过精度,保存时超过部分会四舍五入
整数部分不允许超过其精度
字符类型:
varchar2
必须指定字符串长度;
可以保存1-4000字节的数据,效率低
保存数据时根据数据长度分配空间,节约空间
char:
如果创建表时没有指定长度,长度默认给1;
可以保存1-2000字节的数据,效率高
保存数据时直接分配固定的空间,多余的空间填充空格
时间日期类型:
date 保存 年月日时分秒
tmestamp 时间戳 年月日时分秒毫秒
对表结构的操作
添加子段:
alter table 表名 add 子段名 类型(长度)
如:alter table t_tudent add sddress varchar2(50)
修改子段类型:修改类型,该子段必须为空
alter table t_tudent modify 类型
修改子段的名称:
alter table t_student rename column 原名称 to 新名称
删除子段:
alter teble t_student drop column 子段
删除表:
drop table 表名 cascade constraints
删除表的同时删除表中的约束
1:限定非空/默认值:不允许设置的子段中的值为空
not null
default 精简版设置默认值时只能识别数值类型,不能识别中文
企业版可以的
如:
create table t_student(
sid number(5)not null,
sanme varchar2(20)not null,
ssex char(5)dafault,
sage number(3)dafault,
2:维一性约束:设置某个字段的值与其他行相比是唯一的 每一重复的
unique :设置多个字段为该约束
不能报错于其他行相同的值
可以保存空值,并且可以保存多个空值
如:
create table t_student(
sid number(5)unique,
sanme varchar2(20)unique,
ssex char(5),
sage number(3)
表建立设定唯一性约束
 alter table t_tudent add sonstraint unique (约束子段)
3:主键约束:设置该字段的值可以确定数据库中的一条数据是唯一的
并且设置的字段的值不能为空
primary key:表中只能出现一个主键
设置的字段的值不能与其他行相比重复
如:创建表时设定主键
create table t_student(
sid number(5)primary key,
sanme varchar2(20),
ssex char(5),
sage number(3)
--表建立后设定主键
 alter table 表名 add constraint 约束的标识名 primary 可以(约束的字段名)
 alter table t_student add constraint pk_sid primary key(sid)
复合主键:多个字段组成一个主键
sid sname 
4:外键约束:关联两张表
foreign key 子表中的关联的数据必须是猪表存在的数据
删除主表中的数据
1:cascade :删除班级表中的数据,如果学生表中有相关的数据,则一样删除
2:set null 先将相关的学生的班级信息设置为null,重新分配班级
3:如果删除的班级中有学生信息,则不允许删除
班级表
create table t_class(
sid number(5)primary key,
sanme varchar2(20),
学生表 表中的外键必须是另一个表中的主键(可以确定一条数据)
create table t_student(
sid number(5)primary key,
sanme varchar2(20),
ssex char(5),
saddress varchar2(20),
cid number(5),
constraint 
表建立后设置外键约束
alter table 表名 add constraint 约束的标识名 foreign key(外键字段名)
references 参考表名(参考字段名)
alter table t_student add consrtaint fk_cid foreign (cid)
references t_class(cid)


5:check 约束  限定某个字段的值在取值范围
 create table t_student(
 sid number (5);
 sname varchar2(20),
 ssex carchar2(5) check(ssex=‘男’or ssex=‘女’or ssex=‘不详’),
  --ssex carchar2(5) check(ssex in(‘男’,‘女’,‘不详’)),
  --ssex carchar2(5) check(ssex not in(‘男’,‘女’,‘不详’)),不是
 sage number(3)check(sage>=18and sage<=30)
 --  sage number(3)check(sage between 18 end 30)
 -- sage number(3)check(sage not between 18 end 30)不在
  --sage number(3)check(sage!=0)
  -- sage number(3)check(sage<>0)
 )

原创粉丝点击