我主要对 MySQL 和 PostgreSQL 感兴趣,但您可以大致回答以下问题:
将空字符串存储为...的物理存储含义是什么?
在 Oracle 11.2 之前,我使用自定义聚合函数将一列连接成一行。11.2 增加了这个LISTAGG功能,所以我想改用它。我的问题是我需要消除结果中的重复项,但似乎无法做到这一点。
这是一个例子。
CREATE TABLE ListAggTest AS (
SELECT rownum Num1, DECODE(rownum,1,'2',to_char(rownum)) Num2 FROM dual
CONNECT BY rownum<=6
);
SELECT * FROM ListAggTest;
Run Code Online (Sandbox Code Playgroud)
CREATE TABLE ListAggTest AS (
SELECT rownum Num1, DECODE(rownum,1,'2',to_char(rownum)) Num2 FROM dual
CONNECT BY rownum<=6
);
SELECT * FROM ListAggTest;
Run Code Online (Sandbox Code Playgroud)
我想看到的是:
NUM1 NUM2
---------- ---------------------
1 2
2 2 << Duplicate 2
3 3
4 4
5 5
6 6
Run Code Online (Sandbox Code Playgroud)
这是一个listagg接近但不消除重复的版本。
SELECT Num1, listagg(Num2,'-') WITHIN GROUP (ORDER BY NULL) OVER …Run Code Online (Sandbox Code Playgroud) 有两种方法可以使用 sqlplus 以管理员身份连接到 Oracle:
sqlplus sys as sysdbasqlplus system/manager我想这些帐户应该用于不同的目的。
这两个模式用于哪些任务?我什么时候应该使用其中的一个?
我有一个带有用户表和角色表的数据库模型。我想控制对多达 10 个不同元素的访问(权限)。可以将访问权限授予角色或单个用户。下面是用户、角色和项目的表定义:
CREATE TABLE users
(
id serial NOT NULL PRIMARY KEY,
username character varying UNIQUE,
password character varying,
first_name character varying,
last_name character varying,
...
);
CREATE TABLE roles
(
id serial NOT NULL PRIMARY KEY,
name character varying NOT NULL,
description character varying,
...
);
CREATE TABLE element_1
(
id serial NOT NULL PRIMARY KEY,
name character varying NOT NULL,
description character varying,
...
);
...
Run Code Online (Sandbox Code Playgroud)
现在我有两种不同的方式来设计版权。一个带有权限类型列的表或 10 个权限表 - 一个用于我想要控制访问的每个元素。
每个元素一个权限表与一个权限表的优缺点是什么?- 或者是更合适的方式来做到这一点?
假设您有一个明确用于数据库功能的专用服务器——您应该为操作系统保留多少内存?
我意识到这可能会有所不同,具体取决于特定的操作系统、特定的数据库软件等。但是,由于内存对数据库性能非常重要,我希望数据库具有最大合理级别的内存,而不会使主机操作系统挨饿。
所以
如何显示当前在 oracle 数据库上执行的 SQL?
有用的额外信息包括用户、会话 ID 等。
我很想知道其他人使用哪些方法来跟踪对数据库所做的更改,包括表定义更改、新对象、包更改等。您是否使用带有外部版本控制系统的平面文件?触发器?其他软件?
我对 Oracle 不太精明,我一直在尝试创建一个 TABLESPACE,它不断给我一个无效文件名的错误消息。以下是我使用的语法:
SQL> create Tablespace HRMT
2 datafile
3 size
4 ;
size
*
ERROR at line 3:
ORA-02236: invalid file name
Run Code Online (Sandbox Code Playgroud)
我的书和我去过的所有网站都建议我为 DATAFILE 指定文件路径,当我指定路径时,我收到另一条错误消息。
SQL> create tablespace vania
2 datafile 'home/oracle/hait/'
3 size 10M
4 ;
create tablespace vania
*
ERROR at line 1:
ORA-01119: error in creating database file 'home/oracle/hait/'
ORA-27040: file create error, unable to create file
Linux Error: 2: No such file or directory
Run Code Online (Sandbox Code Playgroud)
在创建 TABLESPACE 之前,是否需要先创建数据文件?数据库中是否有我可以使用的预先存在的数据文件?创建表空间和/或数据文件的正确语法是什么?如何以及在何处创建 .dbf 文件来创建表空间?
根据Oracle 数据库安全指南,Oracle 正在弃用 OS 身份验证,其中说
请注意,REMOTE_OS_AUTHENT 参数在 Oracle 数据库 11g 第 1 版 (11.1) 中已弃用,保留只是为了向后兼容。
此外,大多数安全信息和工具都认为 操作系统(外部)身份验证是一个安全问题。我试图理解为什么会这样。以下是我看到的操作系统身份验证的一些优点:
Mnesia 与主要的 SQL 数据库实现相比有哪些优势?它与它们有何不同?
我可以使用数据库来保存大量数据而不会明显降低性能吗?