oracle与mysql创建表时的区别
生活随笔
收集整理的這篇文章主要介紹了
oracle与mysql创建表时的区别
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
oracle創(chuàng)建表時(shí),不支持在建表時(shí)同時(shí)增加字段注釋。故采用以下方式:
#創(chuàng)建表 CREATE TABLE predict_data as (id integer NOT NULL, uid varchar2(80),mid varchar2(80),time date ,content varchar2(300),constraint predict_data primary key (id) ); #字段注釋 comment on table predict_data is '預(yù)測(cè)表'; comment on column predict_data.id is '主鍵'; comment on column predict_data.uid is '用戶名'; comment on column predict_data.mid is '博文id'; comment on column predict_data.time is '發(fā)文時(shí)間'; comment on column predict_data.content is '發(fā)文內(nèi)容';
mysql創(chuàng)建表時(shí),支持在建表時(shí)同時(shí)增加字段注釋。故采用以下方式:
CREATE TABLE predict_data (id int NOT NULL COMMENT '主鍵', uid varchar(80) NOT NULL COMMENT '用戶標(biāo)記',mid varchar(80) DEFAULT NULL COMMENT '博文標(biāo)記' ,time datetime DEFAULT NULL COMMENT '發(fā)博時(shí)間' ,content varchar(300) DEFAULT NULL COMMENT '博文內(nèi)容' ,CONSTRAINTpredict_data PRIMARY KEY (id), ) ENGINE=InnoDB DEFAULT CHARSET=gbk COLLATE=gbk_bin;
注意:mysql在建立表的時(shí)候,不能使用as,即不能使用create table tablename as,否則報(bào)錯(cuò)“1064 - You have an error in your SQL syntax;”
?
number(12,2)在MySQL中如何表示 ?
DECIMAL(12,2)
FLOAT(12,2)
DOUBLE(12,2)
?
MySQL的五種日期和時(shí)間類(lèi)型
??
MySQl中有多種表示日期和時(shí)間的數(shù)據(jù)類(lèi)型。其中YEAR表示年份,DATE表示日期,TIME表示時(shí)間,DATETIME和TIMESTAMP表示日期和實(shí)踐。它們的對(duì)比如下:YEAR ,字節(jié)數(shù)為1,取值范圍為“1901——2155”
DATE,字節(jié)數(shù)為4,取值范圍為“1000-01-01——9999-12-31”
TIME,字節(jié)數(shù)為3,取值范圍為“-838:59:59——838:59:59”
DATETIME,字節(jié)數(shù)為8,取值范圍為“1000-01-01 00:00:00——9999-12-31 23:59:59”
TIMESTAMP,字節(jié)數(shù)為4,取值范圍為“19700101080001——20380119111407”
? 當(dāng)插入值超出有效取值范圍時(shí),系統(tǒng)會(huì)報(bào)錯(cuò),并將零值插入到數(shù)據(jù)庫(kù)中。
- YEAR類(lèi)型
給YEAR類(lèi)型復(fù)制可以有三種方法。
第一種是直接插入4位字符串或者4位數(shù)字。
第二種是插入2位字符串,這種情況下如果插入‘00’~‘69’,則相當(dāng)于插入2000~2069;如果插入‘70’~‘99’,則相當(dāng)于插入1970~1999。第二種情況下插入的如果是‘0’,則與插入‘00’效果相同,都是表示2000年。
第三種是插入2位數(shù)字,它與第二種(插入兩位字符串)不同之處僅在于:如果插入的是一位數(shù)字0,則表示的是0000,而不是2000年。所以在給YEAR類(lèi)型賦值時(shí),一定要分清0和‘0’,雖然兩者相差個(gè)引號(hào),但實(shí)際效果確實(shí)相差了2000年。 - TIME類(lèi)型
TIME類(lèi)型表示為“時(shí):分:秒”,盡管小時(shí)范圍一般是0~23,但是為了表示某些特殊時(shí)間間隔,MySQL將TIME的小時(shí)范圍擴(kuò)發(fā)了,而且支持負(fù)值。
對(duì)TIME類(lèi)型賦值,標(biāo)準(zhǔn)格式是‘HH:MM:SS’,但不一定非要是這種格式。
如果插入的是‘D HH:MM:SS’格式,則類(lèi)似插入了‘(D*24+HH):MM:SS’。比如插入‘2 23:50:50’,相當(dāng)于插入了‘71:50:50’。
如果插入的是‘HH:MM’或‘SS’格式,則效果是其他未被表示位的值賦為零值。比如插入‘30’,相當(dāng)于插入了‘00:00:30’;如果插入‘11:25’,相當(dāng)于插入了‘11:25:00’。
另外也可以插入‘D HH’和‘D HH:MM’,效果按上面的例子可以推理出來(lái)了吧。
在MySQl中,對(duì)于'HHMMSS'格式,系統(tǒng)能夠自動(dòng)轉(zhuǎn)化為標(biāo)準(zhǔn)格式。
如果我們想插入當(dāng)前系統(tǒng)的時(shí)間,則可以插入CURRENT_TIME或者NOW()。TIME類(lèi)型只占3個(gè)字節(jié),如果只是存儲(chǔ)時(shí)間數(shù)據(jù),它最合適了。 - DATE類(lèi)型
MySQL是以YYYY-MM-DD格式來(lái)顯示DATE類(lèi)型的值,插入數(shù)據(jù)時(shí),數(shù)據(jù)可以保持這種格式。另外,MySQL還支持一些不嚴(yán)格的語(yǔ)法格式,分隔符“-”可以用“@”、“.”等眾多富豪來(lái)替代。
在插入數(shù)據(jù)時(shí),也可以使用“YY-MM-DD”格式,YY轉(zhuǎn)化成對(duì)應(yīng)的年份的規(guī)則與YEAR類(lèi)型類(lèi)似。
如果我們想插入當(dāng)前系統(tǒng)的時(shí)間,則可以插入CURRENT_DATE或者NOW()。 - DATETIME類(lèi)型
標(biāo)準(zhǔn)格式為“YYYY-MM-DD HH:MM:SS”,具體賦值方法與上面各種類(lèi)型的方法相似。 - TIMESTAMP類(lèi)型
TIMESTAMP的取值范圍比較小,沒(méi)有DATETIME的取值范圍大,因此輸入值時(shí)一定要保證在TIMESTAMP的范圍之內(nèi)。它的插入也與插入其他日期和時(shí)間數(shù)據(jù)類(lèi)型類(lèi)似。
那么TIMESTAMP類(lèi)型如何插入當(dāng)前時(shí)間?第一,可以使用CURRENT_TIMESTAMP;第二,輸入NULL,系統(tǒng)自動(dòng)輸入當(dāng)前的TIMESTAMP;第三,無(wú)任何輸入,系統(tǒng)自動(dòng)輸入當(dāng)前的TIMESTAMP。
另外有很特殊的一點(diǎn):TIMESTAMP的數(shù)值是與時(shí)區(qū)相關(guān)。- alter ?table emp change com comm float(7,2); ? 修改表列名
轉(zhuǎn)載于:https://www.cnblogs.com/mike-mei/p/9686687.html
總結(jié)
以上是生活随笔為你收集整理的oracle与mysql创建表时的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 王者荣耀如何100%退款?
- 下一篇: SpringBoot上传文件大小限制