概念
yasql 是崖山数据库(YashanDB)官方自带的命令行SQL客户端工具,对标 Oracle 的 sqlplus,高度兼容Oracle‑SQL/PLSQL语法,用于登录数据库、执行SQL、PL块、运行脚本、数据库运维操作,支持Linux、Windows客户端部署,默认端口 1688。
特点:
- 语法、交互习惯高度模仿 Oracle SQL*Plus;
- 支持本地、远程、操作系统认证、连接别名、PDB可插拔数据库登录;
- 支持执行单条SQL、执行SQL脚本、PL/SQL匿名块;
- 提供 set 系列格式化输出命令、spool输出结果集等能力。
视频讲解如下:
基础语法
yasql [-S] username/password@host:port[/pdb] yasql / as sysdba # OS操作系统认证登录 yasql /nolog # 只启动客户端,不连接数据库
- -S:静默模式,不输出登录banner信息,必须放在第一个参数。
实操示例
1. 使用管理员用户登录崖山数据库
yasql yasql / as sysdba
登录成功后出现提示符:SQL>
2. 创建用户
# 进入yasql环境后创建scott用户,并授予角色 SQL> create user scott identified by tiger; SQL> grant connect,to scott; SQL> grant resource to scott;
3. 切换到scott用户
SQL> conn scott/tiger
4. 创建部门表和员工表
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> 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> set serveroutput on; SQL> declare --说明部分 begin --程序体 dbms_output.put_line('Hello World'); end; / # 输出的信息如下: Hello World Succeed.
7. 创建并调用存储过程
-- 创建存储过程 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版本、帮助
yasql -V yasql -H
9. 退出yasql客户端
SQL> exit; -- 或者 SQL> quit;
和Oracle SQL*Plus简单对比
yasql尽量复刻SQL*Plus的使用习惯,降低Oracle迁移到崖山数据库的学习成本。