一些语句,如 create table、insert into 等,在末尾使用分号:
CREATE TABLE employees_demo
( employee_id NUMBER(6)
, first_name VARCHAR2(20)
, last_name VARCHAR2(25)
CONSTRAINT emp_last_name_nn_demo NOT NULL
) ;
Run Code Online (Sandbox Code Playgroud)
而其他人喜欢
set echo on
connect system/manager
Run Code Online (Sandbox Code Playgroud)
也不要分号。
这背后的原因是什么?我如何决定自己在哪里放分号,在哪里不放?
来自线程Oracle 数据库中的 sys 和 system 帐户有什么区别?,我知道sys模式应该只由数据库使用。
但是管理员仍然可以更改模式的密码。
没有密码可以连接数据库吗?如果没有,即使更改了密码,它如何连接?
SQL> desc dual
Name Null? Type
----------------------------------------- -------- ----------------------------
DUMMY VARCHAR2(1)
SQL> select 4*5 from dual;
4*5
----------
20
SQL>
Run Code Online (Sandbox Code Playgroud)
我觉得真的很奇怪。如果dual中没有名为4*5的列,select语句是如何工作的?
另外,为什么我在创建自己的双表时看不到相同的行为?
SQL> create table dual2(dummy varchar2(1));
Table created.
SQL> desc dual2
Name Null? Type
----------------------------------------- -------- ----------------------------
DUMMY VARCHAR2(1)
SQL> select 4*5 from dual2;
no rows selected
SQL>
Run Code Online (Sandbox Code Playgroud) 是否有可能(以及如何)将巨大的 MyISAM 表转换为 InnoDB,而无需使应用程序脱机。它需要每秒向该表中插入几行,但可以将其挂起约 2 分钟。
显然 ALTER TABLE ... engine=innodb 将不起作用。因此,我计划使用 innodb 引擎创建一个新表并将内容复制到其中。最后,暂停应用程序日志线程和重命名表。
不幸的是,即使以 100 行的小批量复制在一段时间后也会产生明显的延迟。
编辑:永远不会更改现有行,此表用于记录。
SQLServer 2005 引入了称为SQLCMD 模式 msdn 链接的东西 。
乍一看,这种模式从命令行批处理文件中添加了变量替换,还有一些转义到操作系统命令。
此功能是否在您的环境、生产或测试中使用?
幸运的是,这对我来说不是当前的问题,因为在我目前的工作场所,团队中的 DBA 知识非常丰富。然而,在小型开发团队中,根据我的经验,其中一个团队被提名为事实上的 DBA 并不少见。对于一个小团队来说,全职 DBA 几乎没有足够的工作(和/或有 DBA,但生产 DBA 不想参与支持开发/测试环境),因此需要测试员或程序员担任这个角色,我看到人们突然想到“嘿,乔要走了,所以你现在是我们的新 DBA。不,我们没有培训预算,你必须自学。玩得开心! ”
对于突然发现自己必须跟上开发 DBA 角色的人,您可以推荐哪些资源?他们应该首先解决哪些基本任务,只是为了让事情顺利进行?
我只是在了解 MS SQL 2008 中新的过滤索引,我试图了解它们会在哪些方面造成伤害以及它们会在哪些方面有所帮助。
我可以看到向员工表添加过滤索引以仅索引当前员工将是一个好主意。
但是根据时间将几个过滤索引应用到一个大表呢?例如,假设我有一个表,它有一个 enterOn 日期/时间字段,并且该表有很多年的数据。如果查询通常是基于日期和其他一些字段(例如 enterby )完成的,那么是否有一些过滤索引具有将索引限制到时间跨度的 where 子句?在我的示例中,查询类似于
select enteredOn, Description, ...
from myTable
where enteredOn > '2011/01/01' and enteredBy = "My, User"
Run Code Online (Sandbox Code Playgroud)
每年都有一个过滤索引是合理的,还是在查询以下内容时会导致很多问题?
select enteredOn, Description, ...
from myTable
where enteredOn > '2009/06/01' and eneteredOn < '2010/06/01' and enteredBy = "My, User"
Run Code Online (Sandbox Code Playgroud) 很多时候,当试图提出一个高效的数据库设计时,最好的做法是建立两个示例数据库,用数据填充它们,然后对它们运行一些查询,看看哪个性能更好。
是否有一种工具可以相对快速地生成(最好直接进入数据库)大型(约 10,000 条记录)测试数据集?我正在寻找至少适用于 MySQL 的东西。
标题没有太大意义,但我想不出更好的标题来解决这个问题。
我有以下表格
项目
顾客
付款
当用户进入系统时,他将有权访问某个项目。现在,我想列出该项目的所有付款,这应该很容易:
SELECT FROM payments where id_customer in (SELECT id from customers where id_project = 5)
Run Code Online (Sandbox Code Playgroud)
我的问题是:如果以这种方式向支付表添加一列 id_project 不是更好,那么查询会更容易和更快。