黑马57 Oracle基础 - day01
----- 04 创建表空间、创建用户及用户授权
-- 创建表空间 create tablespace zsyy datafile 'c:\zsyy.dbf' size 100m autoextend on next 10m;
-- 删除表空间 drop tablespace zsyy; drop tablespace itheima;
--- 重新创建表空间 create tablespace bhzsyy ---bhzsyy 为表空间名称 datafile 'c:\Develop\Oracle\datafile\bhzsyy.dbf' ---datafile 指定表空间对应的数据文件 size 100m ---size 后定义的是表空间的初始大小 autoextend on ---autoextend on 自动增长 ,当表空间存储都占满时,自动增长 next 10m; ---next 后指定的是一次自动增长的大小。
-- 删除表空间 drop tablespace bhzsyy;
-- 创建用户(必须设置密码,表空间,权限 才能登陆) create user cgs -- 删除用户 -- DROP USER cgs CASCADE; -- 设置用户密码 identified by cgs -- 设置所属表空间 default tablespace bhzsyy;
-- 若修改某一个用户密码, 修改用户口令的格式为: -- alter user 用户名 identified by 新密码 alter user cgs identified by 123;
-- 给用户授权 -- oracle数据库中常用角色 connect --连接角色,基本角色 resource --开发者角色 dba --超级管理员 -- 给cgs授权超级管理员 grant dba to cgs; -- 切换到cgs用户下(Session-logoff-all ---> Session-logon-cgs)
----- 05 数据类型和表的创建
-- 创建一个person表 create table person( pid number(20), pname varchar2(10), pbirthday date, gender number(1) default 1 );
----- 06 修改表结构
-- 添加一列 alter table person add (address varchar2(20)); -- 修改列类型 alter table person modify (address char(10));-- char长度固定 -- 修改列名称 alter table person rename column address to addr; -- 删除一列 alter table person drop column addr;
----- 07 数据的增删改
-- 查询表中记录 select * from person; -- 添加一条记录 insert into person (pid, pname) values (1,'小明'); commit; ---修改一条姓名记录 update person set pname='小马', pbirthday=to_date((to_char(sysdate, 'yyyy-MM-dd')), 'yyyy-MM-dd'), pgender=2 where pid = 1; commit; ---修改一条性别记录 update person set pgender = 1 where pid = 1; commit; ---修改一条生日记录 update person set pbirthday = to_date('08-21-2003','MM-dd-yyyy') where pid = 1; commit; ---删除一行记录 DELETE FROM person WHERE pid=1; commit; -- 添加一行记录 insert into person values (2, '张三', to_date('1999-12-22', 'yyyy-MM-dd'), 1); commit; -- 添加今天日期时间的一行记录 insert into person values (3,'李四', sysdate, 1); commit; -- 添加今天日期的一行记录 insert into person values (4,'王五', to_date((to_char(sysdate, 'yyyy-MM-dd')), 'yyyy-MM-dd'), 1); commit;
---- 插入字符串乱码的解决办法
-- 1.查看服务器端编码 select userenv('language') from dual; 我实际查到的结果为:AMERICAN_AMERICA.ZHS16GBK -- 2.执行语句 select * from V$NLS_PARAMETERS 查看第一行中PARAMETER项中为NLS_LANGUAGE 对应的VALUE项中是否和第一步得到的值一样。 如果不是,需要设置环境变量. 否则PLSQL客户端使用的编码和服务器端编码不一致,插入中文时就会出现乱码. -- 3.设置环境变量 计算机->属性->高级系统设置->环境变量->新建 设置变量名:NLS_LANG,变量值:第1步查到的值, 我的是 AMERICAN_AMERICA.ZHS16GBK -- 4.重新启动PLSQL,插入数据正常
---- 三个删除
--删除表中全部记录 delete from person; --删除表结构 drop table person; --先删除表,再次创建表。效果等同于删除表中全部记录。 --在数据量大的情况下,尤其在表中带有索引的情况下,该操作效率高。 --索引可以提供查询效率,但是会影响增删改效率。 truncate table person;
------------------------------------------------------------
----- 08 序列的使用:
----- 默认从1开始,以此递增,主要用来给主键赋值使用。
----- 序列不真的属于仁和一张表,但是可以逻辑和表做绑定。
----- dual:虚表,知识为了补全语法,没有任何意义。
create sequence s_person; select s_person.nextval from dual; select s_person.currval from dual;
---- [INCREMENT BY n] 每次增加n(默认增加1)
---- [START WITH n] 从n开始
---- [{MAXVALUE/ MINVALUE n|NOMAXVALUE}] 最大值/最小值
---- [{CYCLE|NOCYCLE}] 循环/不循环
---- [{CACHE n|NOCACHE}]; 缓存
-- 添加一条需要自增的主键记录 insert into person (pid, pname) values (s_person.nextval, '小明'); commit; select * from person;