當前位置:首頁 » 編程語言 » sql微整型
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql微整型

發布時間: 2022-07-05 21:19:15

A. 寫出創建如下三張數據表的sql語句

記得採納哦!(^_^)


B. SQL語句是什麼意思

以下摘自網路 SQL基本語句 來自:SQL編程技巧
掌握SQL四條最基本的數據操作語句:Insert,Select,Update和Delete。

練掌握SQL是資料庫用戶的寶貴財 富。在本文中,我們將引導你掌握四條最基本的數據操作語句—SQL的核心功能—來依次介紹比較操作符、選擇斷言以及三值邏輯。當你完成這些學習後,顯然你已經開始算是精通SQL了。

在我們開始之前,先使用CREATE TABLE語句來創建一個表(如圖1所示)。DDL語句對資料庫對象如表、列和視進行定義。它們並不對表中的行進行處理,這是因為DDL語句並不處理資料庫中實際的數據。這些工作由另一類SQL語句—數據操作語言(DML)語句進行處理。

SQL中有四種基本的DML操作:INSERT,SELECT,UPDATE和DELETE。由於這是大多數SQL用戶經常用到的,我們有必要在此對它們進行一一說明。在圖1中我們給出了一個名為EMPLOYEES的表。其中的每一行對應一個特定的雇員記錄。請熟悉這張表,我們在後面的例子中將要用到它。

INSERT語句

用戶可以用INSERT語句將一行記錄插入到指定的一個表中。例如,要將雇員John Smith的記錄插入到本例的表中,可以使用如下語句:

INSERT INTO EMPLOYEES VALUES

('Smith','John','1980-06-10',

'Los Angles',16,45000);

通過這樣的INSERT語句,系統將試著將這些值填入到相應的列中。這些列按照我們創建表時定義的順序排列。在本例中,第一個值「Smith」將填到第一個列LAST_NAME中;第二個值「John」將填到第二列FIRST_NAME中……以此類推。

我們說過系統會「試著」將值填入,除了執行規則之外它還要進行類型檢查。如果類型不符(如將一個字元串填入到類型為數字的列中),系統將拒絕這一次操作並返回一個錯誤信息。

如果SQL拒絕了你所填入的一列值,語句中其他各列的值也不會填入。這是因為SQL提供對事務的支持。一次事務將資料庫從一種一致性轉移到另一種一致性。如果事務的某一部分失敗,則整個事務都會失敗,系統將會被恢復(或稱之為回退)到此事務之前的狀態。

回到原來的INSERT的例子,請注意所有的整形十進制數都不需要用單引號引起來,而字元串和日期類型的值都要用單引號來區別。為了增加可讀性而在數字間插入逗號將會引起錯誤。記住,在SQL中逗號是元素的分隔符。

同樣要注意輸入文字值時要使用單引號。雙引號用來封裝限界標識符。

對於日期類型,我們必須使用SQL標准日期格式(yyyy-mm-dd),但是在系統中可以進行定義,以接受其他的格式。當然,2000年臨近,請你最好還是使用四位來表示年份。

既然你已經理解了INSERT語句是怎樣工作的了,讓我們轉到EMPLOYEES表中的其他部分:

INSERT INTO EMPLOYEES VALUES

('Bunyan','Paul','1970-07-04',

'Boston',12,70000);

INSERT INTO EMPLOYEES VALUES

('John','Adams','1992-01-21',

'Boston',20,100000);

INSERT INTO EMPLOYEES VALUES

('Smith','Pocahontas','1976-04-06',

'Los Angles',12,100000);

INSERT INTO EMPLOYEES VALUES

('Smith','Bessie','1940-05-02',

'Boston',5,200000);

INSERT INTO EMPLOYEES VALUES

('Jones','Davy','1970-10-10',

'Boston',8,45000);

INSERT INTO EMPLOYEES VALUES

('Jones','Indiana','1992-02-01',

'Chicago',NULL,NULL);

在最後一項中,我們不知道Jones先生的工薪級別和年薪,所以我們輸入NULL(不要引號)。NULL是SQL中的一種特殊情況,我們以後將進行詳細的討論。現在我們只需認為NULL表示一種未知的值。

有時,像我們剛才所討論的情況,我們可能希望對某一些而不是全部的列進行賦值。除了對要省略的列輸入NULL外,還可以採用另外一種INSERT語句,如下:

INSERT INTO EMPLOYEES(

FIRST_NAME, LAST_NAME,

HIRE_DATE, BRANCH_OFFICE)

VALUE(

'Indiana','Jones',

'1992-02-01','Indianapolis');

這樣,我們先在表名之後列出一系列列名。未列出的列中將自動填入預設值,如果沒有設置預設值則填入NULL。請注意我們改變了列的順序,而值的順序要對應新的列的順序。如果該語句中省略了FIRST_NAME和LAST_NAME項(這兩項規定不能為空),SQL操作將失敗。

讓我們來看一看上述INSERT語句的語法圖:

INSERT INTO table

[(column { ,column})]

VALUES

(columnvalue [{,columnvalue}]);

和前一篇文章中一樣,我們用方括弧來表示可選項,大括弧表示可以重復任意次數的項(不能在實際的SQL語句中使用這些特殊字元)。VALUE子句和可選的列名列表中必須使用圓括弧。

SELECT語句

SELECT語句可以從一個或多個表中選取特定的行和列。因為查詢和檢索數據是資料庫管理中最重要的功能,所以SELECT語句在SQL中是工作量最大的部分。實際上,僅僅是訪問資料庫來分析數據並生成報表的人可以對其他SQL語句一竅不通。

SELECT語句的結果通常是生成另外一個表。在執行過程中系統根據用戶的標准從資料庫中選出匹配的行和列,並將結果放到臨時的表中。在直接SQL(direct SQL)中,它將結果顯示在終端的顯示屏上,或者將結果送到列印機或文件中。也可以結合其他SQL語句來將結果放到一個已知名稱的表中。

SELECT語句功能強大。雖然表面上看來它只用來完成本文第一部分中提到的關系代數運算「選擇」(或稱「限制」),但實際上它也可以完成其他兩種關系運算—「投影」和「連接」,SELECT語句還可以完成聚合計算並對數據進行排序。

SELECT語句最簡單的語法如下:

SELECT columns FROM tables;

當我們以這種形式執行一條SELECT語句時,系統返回由所選擇的列以及用戶選擇的表中所有指定的行組成的一個結果表。這就是實現關系投影運算的一個形式。

讓我們看一下使用圖1中EMPLOYEES表的一些例子(這個表是我們以後所有SELECT語句實例都要使用的。而我們在圖2和圖3中給出了查詢的實際結果。我們將在其他的例子中使用這些結果)。

假設你想查看雇員工作部門的列表。那下面就是你所需要編寫的SQL查詢:

SELECT BRANCH_OFFICE FROM EMPLOYEES;

以上SELECT語句的執行將產生如圖2中表2所示的結果。

由於我們在SELECT語句中只指定了一個列,所以我們的結果表中也只有一個列。注意結果表中具有重復的行,這是因為有多個雇員在同一部門工作(記住SQL從所選的所有行中將值返回)。要消除結果中的重復行,只要在SELECT語句中加上DISTINCT子句:

SELECT DISTINCT BRANCH_OFFICE

FROM EMPLOYEES;

這次查詢的結果如表3所示。

現在已經消除了重復的行,但結果並不是按照順序排列的。如果你希望以字母表順序將結果列出又該怎麼做呢?只要使用ORDER BY子句就可以按照升序或降序來排列結果:

SELECT DISTINCT BRANCH_OFFICE

FROM EMPLOYEES

ORDER BY BRANCH_OFFICE ASC;

這一查詢的結果如表4所示。請注意在ORDER BY之後是如何放置列名BRANCH _OFFICE的,這就是我們想要對其進行排序的列。為什麼即使是結果表中只有一個列時我們也必須指出列名呢?這是因為我們還能夠按照表中其他列進行排序,即使它們並不顯示出來。列名BRANCH_ OFFICE之後的關鍵字ASC表示按照升序排列。如果你希望以降序排列,那麼可以用關鍵字DESC。

同樣我們應該指出ORDER BY子句只將臨時表中的結果進行排序;並不影響原來的表。

假設我們希望得到按部門排序並從工資最高的雇員到工資最低的雇員排列的列表。除了工資括弧中的內容,我們還希望看到按照聘用時間從最近聘用的雇員開始列出的列表。以下是你將要用到的語句:

SELECT BRANCH_OFFICE,FIRST_NAME,

LAST_NAME,SALARY,HIRE_DATE

FROM EMPLOYEES

ORDER BY SALARY DESC,

HIRE_DATE DESC;

這里我們進行了多列的選擇和排序。排序的優先順序由語句中的列名順序所決定。SQL將先對列出的第一個列進行排序。如果在第一個列中出現了重復的行時,這些行將被按照第二列進行排序,如果在第二列中又出現了重復的行時,這些行又將被按照第三列進行排序……如此類推。這次查詢的結果如表5所示。

將一個很長的表中的所有列名寫出來是一件相當麻煩的事,所以SQL允許在選擇表中所有的列時使用*號:

SELECT * FROM EMPLOYEES;

這次查詢返回整個EMPLOYEES表,如表1所示。

下面我們對開始時給出的SELECT語句的語法進行一下更新(豎直線表示一個可選項,允許在其中選擇一項。):

SELECT [DISTINCT]

(column [{, columns}])| *

FROM table [ {, table}]

[ORDER BY column [ASC] | DESC

[ {, column [ASC] | DESC }]];

定義選擇標准

在我們目前所介紹的SELECT語句中,我們對結果表中的列作出了選擇但返回的是表中所有的行。讓我們看一下如何對SELECT語句進行限制使得它只返回希望得到的行:

SELECT columns FROM tables [WHERE predicates];

WHERE子句對條件進行了設置,只有滿足條件的行才被包括到結果表中。這些條件由斷言(predicate)進行指定(斷言指出了關於某件事情的一種可能的事實)。如果該斷言對於某個給定的行成立,該行將被包括到結果表中,否則該行被忽略。在SQL語句中斷言通常通過比較來表示。例如,假如你需要查詢所有姓為Jones的職員,則可以使用以下SELECT語句:

SELECT * FROM EMPLOYEES

WHERE LAST_NAME = 'Jones';

LAST_NAME = 'Jones'部分就是斷言。在執行該語句時,SQL將每一行的LAST_NAME列與「Jones」進行比較。如果某一職員的姓為「Jones」,即斷言成立,該職員的信息將被包括到結果表中(見表6)。

使用最多的六種比較

我們上例中的斷言包括一種基於「等值」的比較(LAST_NAME = 'Jones'),但是SQL斷言還可以包含其他幾種類型的比較。其中最常用的為:

等於 =

不等於 <>

小於 <

大於 >

小於或等於 <=

大於或等於 >=

下面給出了不是基於等值比較的一個例子:

SELECT * FROM EMPLOYEES

WHERE SALARY > 50000;

這一查詢將返回年薪高於$50,000.00的職員(參見表7)。

邏輯連接符

有時我們需要定義一條不止一種斷言的SELECT語句。舉例來說,如果你僅僅想查看Davy Jones的信息的話,表6中的結果將是不正確的。為了進一步定義一個WHERE子句,用戶可以使用邏輯連接符AND,OR和NOT。為了只得到職員Davy Jones的記錄,用戶可以輸入如下語句:

SELECT * FROM EMPLOYEES

WHERE LAST_NAME = 'Jones' AND FIRST_NAME = 'Davy';

在本例中,我們通過邏輯連接符AND將兩個斷言連接起來。只有兩個斷言都滿足時整個表達式才會滿足。如果用戶需要定義一個SELECT語句來使得當其中任何一項成立就滿足條件時,可以使用OR連接符:

SELECT * FROM EMPLOYEES

WHERE LAST_NAME = 'Jones' OR LAST_NAME = 'Smith';

有時定義一個斷言的最好方法是通過相反的描述來說明。如果你想要查看除了Boston辦事處的職員以外的其他所有職員的信息時,你可以進行如下的查詢:

SELECT * FROM EMPLOYEES

WHERE NOT(BRANCH_OFFICE = 'Boston');

關鍵字NOT後面跟著用圓括弧括起來的比較表達式。其結果是對結果取否定。如果某一職員所在部門的辦事處在Boston,括弧內的表達式返回true,但是NOT操作符將該值取反,所以該行將不被選中。

斷言可以與其他的斷言嵌套使用。為了保證它們以正確的順序進行求值,可以用括弧將它們括起來:

SELECT * FROM EMPLOYEES

WHERE (LAST_NAME = 'Jones'

AND FIRST_NAME = 'Indiana')

OR (LAST_NAME = 'Smith'

AND FIRST_NAME = 'Bessie');

SQL沿用數學上標準的表達式求值的約定—圓括弧內的表達式將最先進行求值,其他表達式將從左到右進行求值。

以上對邏輯連接符進行了說明,在對下面的內容進行說明之前,我們再一次對SELECT語句的語法進行更新:

SELECT [DISTINCT]

(column [{, column } ] )| *

FROM table [ { , table} ]

[ORDER BY column [ASC] | [DESC

[{ , column [ASC] | [DESC } ] ]

WHERE predicate [ { logical-connector predicate } ];

NULL和三值邏輯

在SQL中NULL是一個復雜的話題,關於NULL的詳細描述更適合於在SQL的高級教程而不是現在的入門教程中進行介紹。但由於NULL需要進行特殊處理,並且你也很可能會遇到它,所以我們還是簡略地進行一下說明。

首先,在斷言中進行NULL判斷時需要特殊的語法。例如,如果用戶需要顯示所有年薪未知的職員的全部信息,用戶可以使用如下SELECT語句:

SELECT * FROM EMPLOYEES

WHERE SALARY IS NULL;

相反,如果用戶需要所有已知年薪數據的職員的信息,你可以使用以下語句:

SELECT * FROM EMPLOYEES

WHERE SALARY IS NOT NULL;

請注意我們在列名之後使用了關鍵字IS NULL或IS NOT NULL,而不是標準的比較形式:COLUMN = NULL、COLUMN <> NULL或是邏輯操作符NOT(NULL)。

這種形式相當簡單。但當你不明確地測試NULL(而它們確實存在)時,事情會變得很混亂。

例如,回過頭來看我們圖1中的EM-PLOYEES表,可以看到Indiana Jones的工薪等級或年薪值都是未知的。這兩個列都包含NULL。可以想像運行如下的查詢:

SELECT * FROM EMPLOYEES

WHERE GRADE <= SALARY;

此時,Indiana Jones應該出現在結果表中。因為NULL都是相等的,所以可以想像它們是能夠通過GRADE小於等於SALARY的檢查的。這其實是一個毫無疑義的查詢,但是並沒有關系。SQL允許進行這樣的比較,只要兩個列都是數字類型的。然而,Indiana Jones並沒有出現在查詢的結果中,為什麼?

正如我們早先提到過的,NULL表示未知的值(而不是象某些人所想像的那樣表示一個為NULL的值)。對於SQL來說意味著這個值是未知的,而只要這個值為未知,就不能將其與其他值比較(即使其他值也是NULL)。所以SQL允許除了在true 和false之外還有第三種類型的真值,稱之為「非確定」(unknown)值。

如果比較的兩邊都是NULL,整個斷言就被認為是非確定的。將一個非確定斷言取反或使用AND或OR與其他斷言進行合並之後,其結果仍是非確定的。由於結果表中只包括斷言值為「真」的行,所以NULL不可能滿足該檢查。從而需要使用特殊的操作符IS NULL和IS NOT NULL。

UPDATE語句

UPDATE語句允許用戶在已知的表中對現有的行進行修改。

例如,我們剛剛發現Indiana Jones的等級為16,工資為$40,000.00,我們可以通過下面的SQL語句對資料庫進行更新(並清除那些煩人的NULL)。

UPDATE EMPLOYEES

SET GRADE = 16, SALARY = 40000

WHERE FIRST_NAME = 'Indiana'

AND LAST_NAME = 'Jones';

上面的例子說明了一個單行更新,但是UPDATE語句可以對多行進行操作。滿足WHERE條件的所有行都將被更新。如果,你想讓Boston辦事處中的所有職員搬到New York,你可以使用如下語句:

UPDATE EMPLOYEES

SET BRANCH_OFFICE = 'New York'

WHERE BRANCH_OFFICE = 'Boston';

如果忽略WHERE子句,表中所有行中的部門值都將被更新為'New York'。

UPDATE語句的語法流圖如下面所示:

UPDATE table

SET column = value [{, column = value}]

[ WHERE predicate [ { logical-connector predicate}]];

DELETE語句

DELETE語句用來刪除已知表中的行。如同UPDATE語句中一樣,所有滿足WHERE子句中條件的行都將被刪除。由於SQL中沒有UNDO語句或是「你確認刪除嗎?」之類的警告,在執行這條語句時千萬要小心。如果決定取消Los Angeles辦事處並解僱辦事處的所有職員,這一卑鄙的工作可以由以下這條語句來實現:

DELETE FROM EMPLOYEES

WHERE BRANCH_OFFICE = 'Los Angeles';

如同UPDATE語句中一樣,省略WHERE子句將使得操作施加到表中所有的行。

DELETE語句的語法流圖如下面所示:

DELETE FROM table

[WHERE predicate [ { logical-connector predicate} ] ];

現在我們完成了數據操作語言(DML)的主要語句的介紹。我們並沒有對SQL能完成的所有功能進行說明。SQL還提供了許多的功能,如求平均值、求和以及其他對表中數據的計算,此外SQL還能完成從多個表中進行查詢(多表查詢,或稱之為連接)的工作。這種語言還允許你使用GRANT和REVOKE命令控制使用者的數據訪問許可權。

C. 把表名teacher改為教師表

摘要 1.寫出創建如下三張數據表的SQL語句 「教師表」表結構:

D. 寫出創建如下三張數據表的SQL語句

CREATETABLETEACHER
(
TIDCHAR(10)primarykey,
TNAMEVARCHAR(20),
TDEPTVARCHAR(30),
TJNAMECHAR(6)
)
insertintoTEACHERvalues('110','黃嘉欣','管理學系','教授')
insertintoTEACHERvalues('111','劉而已','計算機系','教師')
insertintoTEACHERvalues('112','王嘉驥','外語系','副教授')

CREATETABLECOURSE1
(
CNOCHAR(20)primarykey,
CNAMEVARCHAR(40),
CHOURtinyint,
TERMtinyint
)
insertintoCOURSE1values('011','酒店管理',35,1)
insertintoCOURSE1values('012','管理學基礎',75,1)
insertintoCOURSE1values('021','JAVA基礎',80,2)
insertintoCOURSE1values('022','安卓開發',70,2)
insertintoCOURSE1values('031','英語作文書寫',40,1)
insertintoCOURSE1values('032','日語聽力練習',70,1)

insertintoCOURSE1values('033','日語寫作',70,1)
insertintoCOURSE1values('023','數據結構',20,1)

createtabletcourse
(
TIDCHAR(10),
CNOCHAR(20),
thourint,
tyearint--這個題有些矛盾,如果這里設為了主鍵,下面插入數據就沒法插入重復的,c.3.就沒有意義
)
_consFOREIGNKEY(TID)REFERENCESteacher;
_consFOREIGNKEY(CNO)REFERENCEScourse1;

insertintotcoursevalues('110','011',35,2014)
insertintotcoursevalues('110','012',75,2012)
insertintotcoursevalues('111','021',80,2015)
insertintotcoursevalues('111','022',70,2013)
insertintotcoursevalues('112','031',40,2014)
insertintotcoursevalues('112','032',70,2014)
--a.
SELECTTNAME,TDEPTFROMTEACHERWHERETJNAME='教授'
--b.
SELECTCOUNT(CNO)FROMCOURSE1WHERECHOUR>40
--C.
selectCNAME,CHOUR,TNAME,thourFROMCOURSE1C1,TEACHERTR,tcourseTE
WHEREC1.CNO=TE.CNOANDTR.TID=TE.TIDANDTE.tyear=2012
--D.
DELETECOURSE1WHERECNONOTIN(SELECTCNOFROMtcourse)
--3.
CREATEVIEWQL
as
SELECTTNAME,CNAME,thourFROMCOURSE1C1,TEACHERTR,tcourseTE
WHEREC1.CNO=TE.CNOANDTR.TID=TE.TIDANDTE.tyear=2014

SELECT*FROMQL

我用的資料庫是SQL2008 R2,已測試。

E. SQL資料庫中Numeric(10,2)是什麼意思

SQL資料庫中Numeric(10,2)是指欄位是數值型,Numeric(10,2)表示總位數為10,小數點後為2位的數,也就是說這個欄位的整數位最大是8位。

SQL中的五種數據類型:字元型,文本型,數值型,邏輯型和日期型

numeric(p,s)p 為精度(有效位),表示可儲存數值的最大位數,小數點左右兩側都包括在內,默認最大位為38 位;s為小數位數,標識小數點後 面所能儲存的最大位數,默認最小位為0位。

(5)sql微整型擴展閱讀:

以下為其它SQL中的欄位的屬性:

bit  0或1的整型數字 

int  從-2^31(-2,147,483,648)到2^31(2,147,483,647)的整型數字 

smallint  從-2^15(-32,768)到2^15(32,767)的整型數字 

tinyint  從0到255的整型數字

decimal  從-10^38到10^38-1的定精度與有效位數的數字

F. SQL Server資料庫--表--新建表時的數據類型都是什麼意思啊

(1) 整數型
整數包括bigint、int、smallint和tinyint,從標識符的含義就可以看出,它們的表示數范圍逐漸縮小。
l bigint:大整數,數范圍為 -263 (-9223372036854775808)~263-1 (9223372036854775807) ,其精度為19,小數位數為0,長度為8位元組。
l int:整數,數范圍為 -231 (-2,147,483,648) ~231 - 1 (2,147,483,647) ,其精度為10,小數位數為0,長度為4位元組。
l smallint:短整數,數范圍為 -215 (-32768) ~215 - 1 (32767) ,其精度為5,小數位數為0,長度為2位元組。
l tinyint:微短整數,數范圍為 0~255,長度為1位元組,其精度為3,小數位數為0,長度為1位元組。
(2) 精確整數型
精確整數型數據由整數部分和小數部分構成,其所有的數字都是有效位,能夠以完整的精度存儲十進制數。精確整數型包括decimal 和 numeric兩類。從功能上說兩者完全等價,兩者的唯一區別在於decimal不能用於帶有identity關鍵字的列。
聲明精確整數型數據的格式是numeric | decimal(p[,s]),其中p為精度,s為小數位數,s的預設值為0。例如指定某列為精確整數型,精度為6,小數位數為3,即decimal(6,3),那麼若向某記錄的該列賦值56.342689時,該列實際存儲的是56.3427。
decimal和numeric可存儲從 -1038 +1 到 1038 –1 的固定精度和小數位的數字數據,它們的存儲長度隨精度變化而變化,最少為5位元組,最多為17位元組。
l 精度為1~9時,存儲位元組長度為5;
l 精度為10~19時,存儲位元組長度為9;
l 精度為20~28時,存儲位元組長度為13;
l 精度為29~38時,存儲位元組長度為17。
例如若有聲明numeric(8,3),則存儲該類型數據需5位元組,而若有聲明numeric(22,5),則存儲該類型數據需13位元組。
注意:聲明精確整數型數據時,其小數位數必須小於精度;在給精確整數型數據賦值時,必須使所賦數據的整數部分位數不大於列的整數部分的長度。
(3) 浮點型
浮點型也稱近似數值型。顧名思義,這種類型不能提供精確表示數據的精度,使用這種類型來存儲某些數值時,有可能會損失一些精度,所以它可用於處理取值范圍非常大且對精確度要求不是十分高的數值量,如一些統計量。
有兩種近似數值數據類型:float[(n)]和real,兩者通常都使用科學計數法表示數據,即形為:尾數E階數,如5.6432E20,-2.98E10,1.287659E-9等。
l real:使用4位元組存儲數據,表數范圍為-3.40E + 38 到 3.40E + 38,數據精度為7位有效數字。
l float:定義中的n取值范圍是1~53,用於指示其精度和存儲大小。當n在1~24之間時,實際上是定義了一個real型數據,存儲長度為4位元組,精度為7位有效數字;當n在25~53之間時,存儲長度為8位元組,精度為15位有效數字。當預設n時,代表n在25~53之間。float型數據的數范圍為- 1.79E+308 到 1.79E+308。
(4) 貨幣型
SQL Server提供了兩個專門用於處理貨幣的數據類型:money和smallmoney,它們用十進制數表示貨幣值。
l money:數據的數范圍為-263 (-922337203685477.5808)~263-1 (922337203685477.5807) ,其精度為19,小數位數為4,長度為8位元組。money的數的范圍與bigint相同,不同的只是money型有4位小數,實際上,money就是按照整數進行運算的,只是將小數點固定在末4位。
l smallmoney:數范圍為 –231 (-2,147,48.3648) ~231 - 1 (2,147,48.3647) ,其精度為10,小數位數為4,長度為4位元組。可見smallmoney與int的關系就如同money與bigint的關系。
當向表中插入money或smallmoney類型的值時,必須在數據前面加上貨幣表示符號($),並且數據中間不能有逗號(,);若貨幣值為負數,需要在符號$的後面加上負號(-)。例如:$15000.32,$680,$-20000.9088都是正確的貨幣數據表示形式。
(5) 位型
SQL Server中的位(bit)型數據相當於其他語言中的邏輯型數據,它只存儲0和1,長度為一個位元組。但要注意,SQL Server對表中bit類型列的存儲作了優化:如果一個表中有不多於 8 個的bit列,這些列將作為一個位元組存儲,如果表中有 9 到 16 個 bit 列,這些列將作為兩個位元組存儲,更多列的情況依此類推。
當為bit類型數據賦0時,其值為0,而賦非0(如100)時,其值為1。
若表中某列為bit類型數據,那麼該列不允許為空值(有關空值概念本節稍後即做介紹),並且不允許對其建立索引。
(6) 字元型
字元型數據用於存儲字元串,字元串中可包括字母、數字和其它特殊符號(如#、@、&等等)。在輸入字元串時,需將串中的符號用單引號或雙引號括起來,如』abc』、」Abc<Cde」。
SQL Server字元型包括兩類:固定長度 (char) 或可變長度 (varchar) 字元數據類型。
l char[(n)]
定長字元數據類型,其中n定義字元型數據的長度,n在1到8000之間,預設為1。當表中的列定義為char(n)類型時,若實際要存儲的串長度不足n時,則在串的尾部添加空格以達到長度n,所以char(n)的長度為n。例如某列的數據類型為char(20),而輸入的字元串為」ahjm1922」,則存儲的是字元ahjm1922和12個空格。若輸入的字元個數超出了n,則超出的部分被截斷。
l varchar[(n)]
變長字元數據類型,其中n的規定與定長字元型char中n完全相同,但這里n表示的是字元串可達到的最大長度。varchar(n)的長度為輸入的字元串的實際字元個數,而不一定是n。例如,表中某列的數據類型為varchar(100),而輸入的字元串為」ahjm1922」,則存儲的就是字元ahjm1922,其長度為8位元組。
當列中的字元數據值長度接近一致時,例如姓名,此時可使用 char;而當列中的數據值長度顯著不同時,使用varchar較為恰當,可以節省存儲空間。
(7) Unicode字元型
Unicode是「統一字元編碼標准」,用於支持國際上非英語語種的字元數據的存儲和處理。SQL Server的Unicode字元型可以存儲Unicode標准字元集定義的各種字元。
Unicode字元型包括nchar[(n)]和nvarchar[(n)]兩類。nchar是固定長度 Unicode 數據的數據類型,nvarchar 是可變長度 Unicode 數據的數據類型,二者均使用 UNICODE UCS-2 字元集。
l nchar[(n)]:nchar[(n)]為包含n個字元的固定長度 Unicode 字元型數據,n 的值在 1 與 4,000 之間,預設為1。長度為2n位元組。若輸入的字元串長度不足n,將以空白字元補足。
l nvarchar[(n)]:nvarchar[(n)]為最多包含n個字元的可變長度 Unicode 字元型數據,n 的值在 1 與 4,000之間,預設為1。長度是所輸入字元個數的兩倍。
實際上,nchar、nvarchar與char、varchar的使用非常相似,只是字元集不同(前者使用Unicode字元集,後者使用ASCII字元集)。
(8) 文本型
當需要存儲大量的字元數據,如較長的備注、日誌信息等等,字元型數據的最長8000個字元的限制可能使它們不能滿足這種應用需求,此時可使用文本型數據。
文本型包括text和ntext兩類,分別對應ASCII字元和Unicode字元。text類型可以表示最大長度為 231-1 (2,147,483,647) 個字元,其數據的存儲長度為實際字元數個位元組。ntext可表示最大長度為 230 - 1 (1,073,741,823) 個Unicode字元,其數據的存儲長度是實際字元個數的兩倍(以位元組為單位)。
(9) 二進制型
二進制數據類型表示的是位數據流,包括binary(固定長度)和varbinary(可變長度)兩種。
l binary [(n) ]:固定長度的n個位元組二進制數據。n取值范圍為 1 到 8,000,預設為1。binary(n)數據的存儲長度為 n+4 位元組。若輸入的數據長度小於n,則不足部分用0填充;若輸入的數據長度大於n,則多餘部分被截斷。
輸入二進制值時,在數據前面要加上0x,可以用的數字元號為0—9、A—F(字母大小寫均可)。因此,二進制數據有時也被稱為十六進制數據。例如0xFF、0x12A0分別表示值FF和12A0。因為每位元組的數最大為FF,故在「0x」格式的數據每兩位佔1個位元組。
l varbinary [(n) ]:n個位元組變長二進制數據。n取值范圍為 1 到 8,000,預設為1。varbinary(n)數據的存儲長度為實際輸入數據長度+4個位元組。
(10) 日期時間類型
日期時間類型數據用於存儲日期和時間信息,包括datetime和smalldatetime兩類。
l datetime:datetime類型可表示的日期范圍從 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和時間數據,精確度為百分之三秒(3.33 毫秒或 0.00333 秒),例如1到3毫秒的值都表示為0毫秒,4到6毫秒的值都表示為4毫秒。
datetime類型數據長度為8位元組,日期和時間分別使用4個位元組存儲。前4 位元組用於存儲datetime類型數據中距1900 年 1 月 1 日的天數,為正數表示日期在1900年1月1日之後,為負數則表示日期在1900年1月1日之前。後4個位元組用於存儲datetime類型數據中距12:00(24小時制)的毫秒數。
用戶以字元串形式輸入datetime類型數據,系統也以字元串形式輸出datetime類型數據,將用戶輸入到系統以及系統輸出的datetime類型數據的字元串形式稱為datetime類型數據的「外部形式」,而將datetime在系統內的存儲形式稱為「內部形式」,SQL Server負責datetime類型數據的兩種表現形式之間的轉換,包括合法性檢查。
用戶給出datetime類型數據值時,日期部分和時間部分分別給出。
日期部分的表示形式常用的格式如下:

年 月 日 2001 Jan 20、2001 Janary 20
年 日 月 2001 20 Jan
月 日[,]年 Jan 20 2001、Jan 20,2001、Jan 20,01
月 年 日 Jan 2001 20
日 月[,]年 20 Jan 2001、20 Jan,2001
日 年 月 20 2001 Jan
年(4位數) 2001表示2001年1月1日
年月日 20010120、010120
月/日/年 01/20/01、1/20/01、01/20/2001、1/20/2001
月-日-年 01-20-01、1-20-01、01-20-2001、1-20-2001
月.日.年 01.20.01、1.20.01、01.20.2001、1.20.2001

說明:年可用4位或2位表示,月和日可用1位或2位表示。
時間部分常用的表示格式如下:

時:分 10:20、08:05
時:分:秒 20:15:18、20:15:18.2
時:分:秒:毫秒 20:15:18:200
時:分AM|PM 10:10AM、10:10PM

l smalldatetime:smalldatetime類型數據可表示從 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和時間,數據精確到分鍾,即29.998 秒或更低的值向下舍入為最接近的分鍾,29.999 秒或更高的值向上舍入為最接近的分鍾。Smalldatetime類型數據的存儲長度為4位元組,前2個位元組用來存儲smalldatetime類型數據中日期部分距1900年1月1日之後的天數;後2個位元組用來存儲smalldatetime類型數據中時間部分距中午12點的分鍾數。
用戶輸入smalldatetime類型數據的格式與datetime類型數據完全相同,只是它們的內部存儲可能不相同。
(11) 時間戳型
標識符是timestamp。若創建表時定義一個列的數據類型為時間戳類型,那麼每當對該表加入新行或修改已有行時,都由系統自動將一個計數器值加到該列,即將原來的時間戳值加上一個增量。記錄timestamp列的值實際上反映了系統對該記錄修改的相對(相對於其他記錄)順序。一個表只能有一個timestamp 列。Timestamp類型數據的值實際上是二進制格式數據,其長度為8位元組。
(12) 圖象數據類型
標識符是image,它用於存儲圖片、照片等。實際存儲的是可變長度二進制數據,介於 0 與 231-1 (2,147,483,647) 位元組之間。
(13) 其它數據類型
除了上面所介紹的常用數據類型外,SQL Server 2000還提供了其它幾種數據類型:cursor、sql_variant、table和uniqueidentifier。
Cursor:是游標數據類型,用於創建游標變數或定義存儲過程的輸出參數。
Sql_variant:是一種存儲 SQL Server 支持的各種數據類型(除text、ntext、image、timestamp 和 sql_variant 外)值的數據類型。Sql_variant的最大長度可達 8016 位元組。
Table:是用於存儲結果集的數據類型,結果集可以供後續處理。
Uniqueidentifier:是唯一標識符類型。系統將為這種類型的數據產生唯一標識值,它是一個16位元組長的二進制數據。

G. sql 中tinyint這個默認值是什麼

tinyint是短整形(或微整形),取值范圍為:0-255,默認值為null

H. 安裝itunes失敗 提示itunes被配置前,安裝程序發生錯誤。安裝過程中出錯,您的系統未被修改。

iTunes安裝失敗的解決方法
大家好今天給大家分享iTunes安裝失敗報錯的解決方法,最近iTunes更新了新的版本後,部分用戶卸載iTunes後無法安裝的情況,故障現象大部分是安裝到中途的時候自動回滾,提示安裝包錯誤,請與電腦管理員聯系,很多用戶在網上搜索都是讓卸載新版本後安裝舊版本,但是故障依舊,甚至有些用戶安裝成功舊版本導致使用上受限制等因素,小編教大家修復方法。

第一步:首先我們下載最新iTunes安裝包,可以在第三方軟體管家裡,也可以在蘋果官方網站

下載iTunes

第二步:解壓縮iTunes安裝包

解壓縮

解壓縮後

第三步:依次從上到下單獨運行安裝,如果提示已經安裝就不要安裝,直接安裝下一個,以此類推

單獨安裝

這個AppleSoftwareUpdate可以不裝,最後安裝ITUNES主程序,你就會發現安裝完畢

順利安裝

最後很容易了直接下一步就可以安裝成功,是不是很簡單哦,如果您覺得幫到您了,可以收藏分享,關注生活滋味館,每天精彩文章。