Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL oracle初学者问题_Sql_Oracle - Fatal编程技术网

SQL oracle初学者问题

SQL oracle初学者问题,sql,oracle,Sql,Oracle,问题1: 插入日期时,我是否必须使用to_date INSERT INTO some_table (date1, date2) VALUES (to_date('2012-10-24','YYYY-MM-DD'), to_date('2012-10-24','YYYY-MM-DD')); 或者可以作为字符串插入?这样一切都好吗?我试过了,它成功了 INSERT INTO some_table (date1, date2) VALUES ('2012-10-24',2

问题1: 插入日期时,我是否必须使用to_date

INSERT INTO some_table (date1, date2) 
    VALUES (to_date('2012-10-24','YYYY-MM-DD'), to_date('2012-10-24','YYYY-MM-DD'));
或者可以作为字符串插入?这样一切都好吗?我试过了,它成功了

INSERT INTO some_table (date1, date2) 
        VALUES ('2012-10-24',2012-10-24');
问题2: 如果我不命名要插入的列,会发生什么?它可以工作,但我的问题是,它现在是随机插入还是在创建表的过程中按列顺序插入

INSERT INTO some_table 
        VALUES ('2012-10-24',2012-10-24');

Oracle支持标准SQL日期文字(从9i开始)

它是日期,后跟格式为yyyy-mm-dd的字符串

DATE '2014-05-10'
它比最新版本短得多,并且独立于任何NLS设置

与时间戳类似:

TIMESTAMP '2014-05-10 09:52:35'

关于第二个问题:这是创建表中定义的列顺序。

1似乎只适用于“YYYY-MM-DD”格式: 说

您可以将日期值指定为字符串文字。。。要将日期值指定为文字,必须使用公历。您可以指定一个ANSI文本。。。ANSI日期文字不包含时间部分,必须以“YYYY-MM-DD”格式指定

但是,如果您使用

或者,您可以指定Oracle日期值。。。Oracle日期值的默认日期格式由初始化参数NLS_date_format指定


对于问题2,它使用表定义处的顺序。但是,在这种情况下,您必须为所有列指定值。

您甚至可以这样做:

ALTER SESSION SET NLS_DATE_FORMAT = 'MM:YYYY:DD';
INSERT INTO some_table (date1) VALUES ('05:2014:10');

…但不建议这样做。使用日期或日期文字,例如日期“2014-05-10”。这让你的生活更轻松。

但他们在我们学校学到了很多老东西。。。所以他们强迫我们使用to_date和oracle:10g,但感谢您提供的一些新信息:)但您仍然没有回答问题,可以吗?:我可以像varchar认为它的类型是DATE一样插入它吗?然后我可以使用它上面的所有日期函数吗?好吧,Oracle 9i是在2000年发布的:-)它们是否也教解码而不是大小写,以及旧的连接语法而不是连接?甚至Oracle也在旧的专有数据库上推广新的标准SQL语法。是的,他们教解码,但也教案例,解码有那么旧/坏吗
什么是旧的联接语法?他们教我们“join on”和“join using”,但也教我们加入trought“where a.id=b.id”,以便更好地理解我猜Decode只是旧的专有语法,类似于简单的“value CASE”。希望他们不会使用
(+)
而不是左/右连接来教授旧的外部连接语法,您只需要在阅读几年前编写的一些查询时了解它,但对于初学者来说,这只是让IMHO感到困惑。