由于近期需要用到oracle(mysql),发现之前也学到一点,但是现在一接触还是会有点陌生,决定做个入门的笔记,供自己日后复习以及需要的伙伴借鉴,有不足之处还望指正。入门部分主要为登录数据库,以及对用户、表、表空间的简单操作
(使用SecureCrt登录/SQLPLUS 命令窗口登录)
$ sqlplus
sqlplus /nolog (无需密码)
>conn username/pwd (没有使用密码,使用该语句进行登录/或者切换用户)
>exit 退出登录
a) 创建用户
create user username identified by password;
//(username 新用户用户名、password密码)
b) 创建表空间
Create tablespace tasName detafile ‘d:\data.dbf’ size 50m;
//tasName:表空间名字
//‘d:\data.dbf’:表空间的存储位置
//表空间的大小:50m(m单位为兆)
c) 将空间分配给用户
Alter user username default tablespace tasName;
//将名字为tasName的表空间分配给username
d) 给用户授权
因为新建的用户和默认的用户是锁住的,没有权限。所以新建用户后要给用户赋予权限
Grant dba to username(用户名) //给用户赋予所有权限
Grant create session to username //给用户赋予登录的权限 connect 表示赋予连接数据库的权限
Grant create table to username //给用户赋予表操作的权限
Grant unlimited tablespace to username //给用户赋予表空间操作的权限
Grant select any table to username //给用户赋予访问任务吧的权限,delete、update同理
a) 新建表
create table student(
stu_no number(2) primary key, --主键
stu_name varchar(10) not null, --设置不为空
stu_sex char(2) check(stu_sex='男' or stu_sex='女'), --设置性别只能有两个选项
stu_age number(2) not null,
stu_tel number(11) unique, --设置唯一
stu_add varchar(50) default '上海' --设置默认值
);
b) 查询语句
select * from student; --查询student的全部信息
select stu_name from student; --只查询student表中的stu_name字段
select * from student where stu_no = 10; --查询student表中符合条件的学生
c) 插入语句
insert into student(stu_no,stu_name,stu_sex,stu_age,stu_tel,stu_add)
values(18,'哇嚓叻叻','男',20,183XXXXXXXX,'福建');
d) 删除语句
delete from student where stu_no = 18;
e) 修改语句
update student set stu_no = '10' where stu_no = '18'
网上解答:将常用的或者很复杂的工作,预先用sql语句写好,并用一个指定的名称存储起来(封装起来),那么以后要叫数据库提供已定义好的存储过程的功能相同的服务时,只需要调用即可自动完成该命令。
个人理解:认为存储过程类似于 ‘函数’,也就是把你所需要操作的sql语句继承为一个函数,需要的时候调用,而不需一条一条语句执行。
update student set stu_no = '10' where stu_no = '18'
create or replace procedure proname (param1 in type,param2 out type)
--proname 存储过程的名字 后面为参数 in表示入参 out表示出参
is -- 设置变量 也可为as
-- 变量1 ;类型(值范围); 例 flag varchar(10);
begin -- PL/SQL 体开始
... -- SQL语句
end; --PL/SQL体结束
学习不够深入,只写了几个简单的,复杂的后续有时间在做补充
1.输出功能的储存过程
--存储过程定义
create or replace procedure firstPro
is
begin
DBMS_OUTPUT.PUT_LINE('Hello World!');
end;
--以下为调用该存储过程
begin
firstPro();
end;
create or replace procedure threePro
is
t_start number; --定义变量
t_end number;
t_time number;
begin
t_start:=dbms_utility.get_time;
DBMS_OUTPUT.PUT_LINE('哇嚓叻叻');
DBMS_OUTPUT.PUT_LINE('技术小白');
DBMS_OUTPUT.PUT_LINE('欢迎互相学习');
t_end:=dbms_utility.get_time;
t_time:=t_start - t_end; --计算输出的运行时间 可忽略
DBMS_OUTPUT.PUT_LINE('This statement cost '|| t_time ||' miliseconds');
end;
--以下为调用该存储过程
begin
threePro();
end;
--带参数的存储过程
create or replace procedure fourpro(num in number)
is
begin
dbms_output.put_line('The input numer is:' || num);
end;
--调用方式一
begin
fourpro(num=>1);
end
--调用方式二
declare
n number;
begin
n:=1;
fourpro(num=>n);
end;
Demo::用select查询输出 hello world、‘hello world’ 和 “hello world”
首尾单引号里面如果出现的单引号,并且有多个则相连两个单引号转义为一个字符串单引号
(后续补充)
-[1]: https://www.cnblogs.com/lanqingzhou/p/8145272.html
-[2]: https://www.cnblogs.com/zhao123/p/3911537.html
-[3]: https://blog.csdn.net/woshimyc/article/details/72519018
-[4]: https://blog.csdn.net/fw0124/article/details/42737671