/**
1.系统当前默认账户:
1.1system
1.2sys:
账户对应的两个角色
sysdba:数据库管理员角色,具备数据库最高的权限,比如:新建账户,操作所有数据库实例
sysoper:数据管理员,具备操作数据的权限
2. 第一新建账户(写数据库脚本) ,第二分配权限
F8执行,小轮子。小扳子是切换用户
在user里面保存了所有的用户账户
创建连接,以及连接需要的资源
**/
create user a identified by 1234
grant connect,resource to a
/**
3.数据的操作语言------sql(结构化---查询---语言)。sql是标准的数据库操作语言
3.1.dcl:数据控制语言(新建用户,分配权限)
3.2.ddl:数据定义语言(create table,alert,drop,创建表,删除表,修改表),创建表就是定义了这个表的格式(几行几列),对表维护
3.3.dml:数据操作语言:维护数据库表中保存的数据(删除,增加,修改等),对数据维护
3.4.dpl:数据查询语言:检索数据库中的数据
4.数据库数据的完整性:保存到数据库中的数据必须能够正确反映事物的客观事实(因此要做限定,例如对年龄的限制)
4.1实体(行)完整性:不能出现多(两)行完全一样的数据,实现方式:给表中加入主键列,该列值不能重复,重复就保存不进去了。
4.2域(列)完整性:限定某个列的取值范围。实现方式:给某个列加入检查约束
4.3引用完整性:限定表与表之间的准确性。(重点)
A表中的某个列的值必须存在于B表中的某个列。 A表成为子表,B是主表。
A:子表:子表同时有主外键,外检值可以重复(一对多)
B;主表:子表中的外检参考主表中的主键
主外键关系:给表建立主外键关系
4,4:自定义完整性:按照用户的要求完成数据的关联性(例如刷卡就会产生积分) 。实现方式:触发器(刷卡触发了积分的变化)
**/
/**
5.ddl定义数据库表
5.1数据类型
varchar2(len) varchar2(20),处理字符串(可变长度,如果只有十个字符,最终就会分配十个),在数据库中字符串用单引号
nvarchar2(len) nvarchar2(20)处理中文的速度比较快
char(len),也表示字符串。固定长度
date
number(p,s) 数值型(java中的float,double,int都包括了) number(2,2),第一个2是整数,第二个数是小数
没有boolean类型,因此可以用number(1)表示
**/
---学生信息表
create table student
(
sno number(6),
sname varchar2(20),
sage number(3),
saddress varchar2(50),
stel varchar2(11),---电话
ssex varchar2(4)---性别
)
------------------------
--科目表
create table course
(
cid number(3),
cname varchar2(30),
csc number(3)----学分
)
--------------------
---成绩表
create table score
(
scid number(6),---主键
cid number(3),---科目表
sno number(6),----学生表
sc number(3)----成绩
)
-----1.加数据,在左边找到这个表,然后右键--编辑数据
-----添加主键
alter table student add constraint pk_sno primary key(sno)---添加约束,t添加主键pk_sno,主键所在的列是sno。一个一个执行,如果想一起执行就要用分号
----2.检查约束(怎么添加默认约束和唯一约束,在学生表中的地址加默认约束,给电话加唯一)
alter table student add constraint ck_sage chenk(sage>=20 add sage<=40)---给学生表添加约束ck_sage,约束类型的检查约束,约束的字段是sage
---3.引用完整性,给子表加外检,虽然上面有外检列,但现在只表示普通的字段,加了外检约束才能表示两个表连接了
alter table score add constraint fk_sno foreign key(sno) references student(sno)---给成绩表加外检,因此fk_sno这个字段是成绩表的,第一个sno也是成绩表的。参考学生表的sno(主键)
---插入数据(最后插入数据。因为如果先加数据可能就加不了约束了)
---现在要用dml数据管理语言
---insert,,,给所有列插入数据的时候可以省略列名,但是给部分列名插入的时候就不能省略了。
insert into student(sno,sname,sage,saddress,stel,ssex) values(110,'张三',23,'天津',11111111111,'男')---注意加commit,下次在添加的时候就不用写列名了
---update:修改
update student set ssex='女',sname='乌龟''
where sno=110
delete from student where sname=乌龟''
---dql数据查询语句
select * from student
-----对表的操作 ,ddl数据查询语言
alter table student add name varcahr2(20)---添加列
alter table student drop column name-----删除列
drop table student---删除表