
概念
yasql 是崖山数据库(YashanDB)官方自带的命令行SQL客户端工具,对标 Oracle 的 sqlplus,高度兼容Oracle‑SQL/PLSQL语法,用于登录数据库、执行SQL、PL块、运行脚本、数据库运维操作,支持Linux、Windows客户端部署,默认端口 1688。
特点:
- 语法、交互习惯高度模仿 Oracle SQL*Plus;
- 支持本地、远程、操作系统认证、连接别名、PDB可插拔数据库登录;
- 支持执行单条SQL、执行SQL脚本、PL/SQL匿名块;
- 提供
set系列格式化输出命令、spool输出结果集等能力。
| 视频讲解如下 |
|---|
| 【赵渝强老师】崖山数据库的命令行客户端工具 |
基础语法
bash
yasql [-S] username/password@host:port[/pdb]
yasql / as sysdba # OS操作系统认证登录
yasql /nolog # 只启动客户端,不连接数据库
-S:静默模式,不输出登录banner信息,必须放在第一个参数。
实操示例
1. 使用管理员用户登录崖山数据库
bash
yasql yasql / as sysdba
登录成功后出现提示符:SQL>
2. 创建用户
sql
# 进入yasql环境后创建scott用户,并授予角色
SQL> create user scott identified by tiger;
SQL> grant connect,to scott;
SQL> grant resource to scott;
3. 切换到scott用户
sql
SQL> conn scott/tiger
4. 创建部门表和员工表
sql
SQL> create table dept
(deptno int primary key,
dname varchar(10),
loc varchar(10)
);
SQL> create table emp
(empno int primary key,
ename varchar(10),
job varchar(10),
mgr int,
hiredate varchar(10),
sal int,
comm int,
deptno int,
foreign key(deptno) references dept(deptno));
5. 插入部门数据和员工数据
sql
--插入部门表数据
SQL> insert into dept values(10,'ACCOUNTING','NEW YORK');
SQL> insert into dept values(20,'RESEARCH','DALLAS');
SQL> insert into dept values(30,'SALES','CHICAGO');
SQL> insert into dept values(40,'OPERATIONS','BOSTON');
--插入员工表数据
SQL> insert into emp values(7369,'SMITH','CLERK',7902,'1980/12/17',800,null,20);
SQL> insert into emp values(7499,'ALLEN','SALESMAN',7698,'1981/2/20',1600,300,30);
SQL> insert into emp values(7521,'WARD','SALESMAN',7698,'1981/2/22',1250,500,30);
SQL> insert into emp values(7566,'JONES','MANAGER',7839,'1981/4/2',2975,null,20);
SQL> insert into emp values(7654,'MARTIN','SALESMAN',7698,'1981/9/28',1250,1400,30);
SQL> insert into emp values(7698,'BLAKE','MANAGER',7839,'1981/5/1',2850,null,30);
SQL> insert into emp values(7782,'CLARK','MANAGER',7839,'1981/6/9',2450,null,10);
SQL> insert into emp values(7788,'SCOTT','ANALYST',7566,'1987/4/19',3000,null,20);
SQL> insert into emp values(7839,'KING','PRESIDENT',-1,'1981/11/17',5000,null,10);
SQL> insert into emp values(7844,'TURNER','SALESMAN',7698,'1981/9/8',1500,null,30);
SQL> insert into emp values(7876,'ADAMS','CLERK',7788,'1987/5/23',1100,null,20);
SQL> insert into emp values(7900,'JAMES','CLERK',7698,'1981/12/3',950,null,30);
SQL> insert into emp values(7902,'FORD','ANALYST',7566,'1981/12/3',3000,null,20);
SQL> insert into emp values(7934,'MILLER','CLERK',7782,'1982/1/23',1300,null,10);
commit;

6. 执行PL/SQL匿名块(末尾必须写/执行)
sql
SQL> set serveroutput on;
SQL> declare
--说明部分
begin
--程序体
dbms_output.put_line('Hello World');
end;
/
# 输出的信息如下:
Hello World
Succeed.
7. 创建并调用存储过程
sql
-- 创建存储过程
SQL> create or replace procedure sayhelloworld
as
--说明部分
begin
dbms_output.put_line('Hello World');
end;
/
-- 调用存储过程(方式1)
SQL> begin
sayhelloworld();
sayhelloworld();
end;
/
# 输出的信息如下:
Hello World
Hello World
PL/SQL Succeed.
-- 调用存储过程(方式2)
SQL> exec sayhelloworld();
8. 查看yasql版本、帮助
bash
yasql -V
yasql -H
9. 退出yasql客户端
sql
SQL> exit;
-- 或者
SQL> quit;
和Oracle SQL*Plus简单对比
| 项目 | Oracle SQL*Plus | YashanDB yasql |
|---|---|---|
| 用途 | Oracle命令行客户端 | 崖山数据库命令行客户端 |
| 登录格式 | sqlplus user/pass@tns |
yasql user/pass@ip:port |
| OS认证 | sqlplus / as sysdba |
yasql / as sysdba |
| 脚本执行 | @xxx.sql |
@xxx.sql |
| 输出打印 | set serveroutput on |
set serveroutput on |
| 退出 | exit/quit | exit/quit |

yasql尽量复刻SQL*Plus的使用习惯,降低Oracle迁移到崖山数据库的学习成本。