实际上我是PL/SQL的新手
我在SQL Fiddle中使用oracle pl/sql创建了下表
create table Employee(name varchar2(100),id integer, salary integer,PRIMARY KEY(id));
insert into Employee(name,id,salary) values('sa',94,100);
insert into Employee(name,id,salary) values('pr',88,150);
insert into Employee(name,id,salary) values('ji',33,900);
insert into Employee(name,id,salary) values('na',24,880);
insert into Employee(name,id,salary) values('po',65,770);
insert into Employee(name,id,salary) values('ri',69,910);
insert into Employee(name,id,salary) values('uj',12,650);
insert into Employee(name,id,salary) values('ad',43,440);
insert into Employee(name,id,salary) values('sam',40,550);
Run Code Online (Sandbox Code Playgroud)
我执行了以下查询
DECLARE
employee_record Employee%ROWTYPE;
BEGIN
select * into employee_record from Employee where id>90;
dbms_output.put_line(employee_record.name||' '||employee_record.id||' '||employee_record.salary);
END;
/
Run Code Online (Sandbox Code Playgroud)
我得到以下输出
Record Count: 0; Execution Time: 2ms
Run Code Online (Sandbox Code Playgroud)
它应该打印员工记录中的值,对吧?我的SQL查询中有什么问题或sql小提琴无法显示dbms_output的一些问题?
我正在尝试使用WHERE所需行ID上的条件从SQLite数据库查询特定行。但是,该查询未返回任何结果,并且导致我的记录器引发错误,指出存在语法错误。
这是查询:
Select * From Equipment Where ID = 2 and ID = 3 and ID = 4 and ID = 7 and ID = 11 and ID = 34
Run Code Online (Sandbox Code Playgroud)
这是我的日志中的语法错误:
Aug 17 2017 23:12:23 [Err]: Err002 - Query on Equipment could not be prepared: near "=": syntax error at File: c:\users\geowil\documents\visual studio 2015\projects\ov_pocs\universearc_poc\datasystem.cpp Line: 323.
Run Code Online (Sandbox Code Playgroud)
所以我航行到SQLFiddle尝试看看是否错过了一些东西。它显示相同的行为。在and有条件的情况下,它不会返回任何结果-但可以对单个ID或一系列ID运行查询。
我是在做错什么还是这是SQLite的限制?
更新:
产生了脑波。Where ID IN(1,3,4)在SQLFiddle上使用Works,所以现在我想重新调整问题的用途,以问问为什么这样做,但是我原来的查询却没有。
我正在将旧的会计软件移植到 SQL。这是由会计科目表组成的示例:
| 帐户 | 子账户 | 子帐目 | 子子子帐目 | 帐号 | 姓名 |
|---|---|---|---|---|---|
| 1110 | 0 | 0 | 0 | 1110 | 银行 |
| 1110 | 1 | 0 | 0 | 1110-1 | 美国银行 |
| 1110 | 1 | 1 | 0 | 1110-1-1 | 银行一 |
| 1110 | 1 | 1 | 1 | 1110-1-1-1 | 第一银行 #123456 |
| 1110 | 1 | 1 | 2 | 1110-1-1-2 | 第一银行#234567 |
| 1110 | 1 | 1 | 11 | 1110-1-1-11 | 第一银行 #11223344 |
| 1110 | 1 | 2 | 0 | 1110-1-2-0 | 银行二 |
| 1110 | 1 | 2 | 1 | 1110-1-2-1 | 第二银行#876543 |
| 1110 | 2 | 0 | 0 | 1110-2 | 外资银行 |
| 1110 | 2 | 1 | 0 | 1110-2-1 | 日本一号#556677 |
| 1120 | 0 | 0 | 0 | 1120 | 应收账款 |
| 1120 | 1 | 0 | 0 … |
在SQL小提琴中查看这个简单的查询:http://sqlfiddle.com/#!2/ c1eb6/1 .这是一个超级简单的更新查询,为什么会产生错误?我想知道它是否可能是该网站的一个错误?
构建架构:
create table your_table (some_column varchar(50));
insert into your_table set some_column = '30# 11';
insert into your_table set some_column = '30# 12.00';
insert into your_table set some_column = '30# 13.5';
insert into your_table set some_column = 'abdfs';
insert into your_table set some_column = '0000000';
Run Code Online (Sandbox Code Playgroud)
查询:
UPDATE your_table
SET some_column = 1;
Run Code Online (Sandbox Code Playgroud) 这个标题有很多问题,但我找不到答案.
我究竟做错了什么?
CREATE TABLE J
(A integer)
;
INSERT INTO J (A)
VALUES
(1),
(2),
(3),
(4),
(5),
(6),
(7),
(8),
(9),
(10)
;
Run Code Online (Sandbox Code Playgroud)
在create单独的作品.问题只是插入.我试过SQL Fiddle.
我正在尝试执行下一个SQL语句(SQL Server 2008 Profile)
DECLARE @fun int;
SET @fun = 40;
select cast(@fun as varchar(10)) + 'hello'
Run Code Online (Sandbox Code Playgroud)
和SQLFiddle给我错误: Must declare the scalar variable @fun
哪里我错了?

这个sqlfiddle链接似乎在调用期间保持状态:http://sqlfiddle.com/#!2/125bc/1
它包含mysql的这个模式:
CREATE TABLE if not exists `standings` (
`teamid` int(11) NOT NULL,
`win` decimal(23,0) default NULL,
`tie` decimal(23,0) default NULL,
`lose` decimal(23,0) default NULL,
PRIMARY KEY (`teamid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
INSERT INTO `standings` (`teamid`, `win`, `tie`, `lose`) VALUES
(1, 3, 0, 0),
(2, 1, 1, 1),
(3, 1, 1, 1),
(4, 0, 0, 3);
CREATE TABLE if not exists `newscores` (
`recordid` int(11) NOT NULL auto_increment,
`teamid` int(11) NOT NULL,
`gameid` int(11) NOT NULL,
`totalstrokes` int(11) …Run Code Online (Sandbox Code Playgroud) 我有一个简单的触发器,它在SQL Fiddle上运行,但它不允许我在触发器的主体内移动我的INSERT STATEMENT. 我在sqlFiddle上的代码 我只是想移动这一行
INSERT INTO t2(start_date) VALUES (CURDATE());
Run Code Online (Sandbox Code Playgroud)
在这个触发器的主体内部
CREATE TRIGGER trig1
AFTER UPDATE ON t1
FOR EACH ROW
BEGIN
-- here, i want to put the simple INSERT STATEMENT here
END;
Run Code Online (Sandbox Code Playgroud)
似乎无法在sqlFiddle上接受它
当我尝试它
CREATE TRIGGER trig1
AFTER UPDATE ON t1
FOR EACH ROW
BEGIN
INSERT INTO t2(start_date) VALUES (CURDATE());
END;
Run Code Online (Sandbox Code Playgroud)
它给了我这个错误:架构创建失败:您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便在第4行的''附近使用正确的语法:
我一直听说一个SQL表的"正确"索引是性能的关键.我从来没有见过这个真实世界的例子,并希望使用SQLFiddle制作一个,但不确定SQL语法是这样做的.
假设我有3个表:1)Users2)Comments3)Items.我们还要说任何用户都可以评论每个项目.所以在这里得到item = 3的注释是SQL的SELECT样子:
SELECT * from comments join users on comments.commenter_id=users.user_id
WHERE comments.item_id=3
Run Code Online (Sandbox Code Playgroud)
我听说一般来说,如果行数变大,即数千/百万,则应该将索引放在ed列WHERE和JOINed列上.所以在这种情况下,comments.item_id和comments.commenter_id,和users.user_id.
我想建立一个SQLFiddle来比较这些表的索引与不使用每个表的数千,数百万行.可能有人帮助生成这个SQLFiddle?