SQL笔记-第二章,数据表的创建和管理

数据类型

分5类:整数、数值、字符相关、日期时间以及二进制

1.整数

数据库系统类型说明
MYSQL tinyint [unsigned] 一个很小的整数。有符号的范围是-128 到127,无符号的范围是0 到255。
smallint [unsigned] 一个小整数。有符号的范围是-32768到32767,无符号的范围是0 到65535。
mediumint [unsigned] 一个中等大小整数。有符号的范围是-8388608到8388607,无符号的范围是0到16777215。
int [unsigned] 一个正常大小整数。有符号的范围是-2147483648 到2147483647,无符号的范围是0到4294967295。
integer [unsigned] 同int
bigint [unsigned] 一个大整数。有符号的范围是-9223372036854775808 到9223372036854775807,无符号的范围是0 到18446744073709551615。
Oracle number(10) Oracle 中没有专门的整数类型,因此需要使用Number(10)来表示整形。
DB2 smallint 小整型是两个字节的整数,精度为5位。小整型的范围从-32,768 到32,767。
integer 普通整型是四个字节的整数,精度为10 位。大整型的范围从-2,147,483,648 到2,147,483,647。
bigint 大整型是八个字节的整数,精度为19位。巨整型的范围从-9,223,372,036,854,775,808 到9,223,372,036,854,775,807。

 2.数值

数据库系统类型说明
MYSQL float[(m,d)] 单 精密浮点数字。取值范围是-3.402823466E+38 到-1.175494351E-38 , 0 和1.175494351E-38 到3.402823466E+38。m是显示宽度、而d 是小数的位数。没有参数的float或有<24 的一个参数表示一个单精密浮点数字。
double[(m,d)] 双 精密浮点数字。取值范围是-1.7976931348623157E+308 到-2.2250738585072014E-308、 0和2.2250738585072014E-308 到1.7976931348623157E+308。m是显示宽度、而d是小数位数。没有参数的double 代表一个双精密浮点数字。
real[(m,d)] 同double
decimal[(m[,d])] 一个未压缩的浮点数字,数字作为一个字符串被存储,值的每一位使用一个字符。小数点,并且对于负数,“-”符号不在M 中计算。如果D 是0,值将没有小数点或小数部分。decimal值的最大范围与double相同,但是对一个给定的decimal 列,实际的范围可以通过m 和d的选择被限制。如果d 被省略,它被默认设置为0。如果m 被省掉,它被默认设置为10。
numeric(m,d) 同decimal
Oracle number(m,n) 数值型,m 是所有有效数字的位数,n是小数点以后的位数。如:number(5,2),则这个字段的最大值是99,999,如果数值超出了位数限制就会被截取多余的 位数。如:number(5,2),但在一行数据中的这个字段输入575.316,则真正保存到字段中的数值是575.32。 如:number(3,0),输入575.316,真正保存的数据是575。
DB2 decimal(p,s) 小数型的值,它是一种压缩十进制数,它有一个隐含的小数点。压缩十进制数将以BCD 码来存储。小数点的位置取决于数字的精度(p)和小数位(s)。小数型的范围从-1031+1 到1031-1。
numeric(p,s) numeric (p,s)是decimal(p,s)的同义词。
real 单精度浮点数,它是实数的32位近似值。数字可以为零,或者在从-3.402E+38 到-1.175E-37或从1.175E-37 到3.402E+38的范围内。
double 双精度浮点数是实数的64 位近似值。数字可以为零,或者在从-1.79769E+308 到-2.225E-307或从2.225E-307 到1.79769E+308 的范围内。

 3.字符相关

数据库系统类型说明
 
 
 
 
 MYSQL
 
 
 
char(m) 固定长度字符串,长度为m
varchar(m) 可变长度字符串,最大长度为m
tinytext 小的可变长度字符串,最大长度2^8- 1 字节
text 可变长度大字符串,最大长度216 – 1 字节
mediumtext 中等可变长度字符串,最大长度224- 1 字节
longtext 大文本可变长度字符串,最大长度232- 1 字节
enum(“value1”, “value2”, …) 枚举字符串,列可被赋予某个枚举成员
set (“value1”, “value2”, …) 集合字符串;列可被赋予多个集合成员
 
 
 
 ORACLE
 
 char(m) 固定长度字符串,长度为m
 varchar2(m)  可变长度字符串,最大长度为m
 nvarchar2(m)  可变长度国际化字符串,最大长度为4GB
 clob  可变长度大字符串,最大长度216 – 1 字节
 nclob  可变长度国际化大字符串,最大长度为4GB
 
 
 
 
 
 DB2
 
 CHARACTER(m)  固定长度字符串,长度为m
 VARCHAR(m)  可变长度字符串,最大长度为m
 LONG VARCHAR  可变长度字符串,最长可达32,700 字节
 CLOB  变长大字符串,最长可以达到2,147,483,647 字节
 GRAPHIC[(m)]  固定长度图形字符串,长度为m,如果没有指定长度,就认为是1 个双字节字符
 VARGRAPHIC(m)  可变长度图形字符串,最大长度为m
 LONG VARGRAPHIC  可变长度图形字符串

 4.时间日期类型

数据库系统类型说明
 
 
 MYSQL
 
 
date “yyyy-mm-dd”格式表示的日期值。取值范围:“1000-01-01”到“9999-12-31”
time “hh:mm:ss”格式表示的时间值。取值范围:“-838:59:59”到“838:59:59”
datetime “yyyy-mm-dd hh:mm:ss”格式表示的日期时间值。取值范围:“1000-01-01 00:00:00” 到“9999-12-31 23:59:59”
timestamp “yyyymmddhhmmss”格式表示的时间戳值。取值范围:19700101000000 到2037 年的某个时刻
year “yyyy”格式的年份值。取值范围:1901 到2155
 
 ORACLE
date 日期时间数据
timestamp 时间戳
 DB2
  
DATE 日期值。取值范围:“0001-01-01 00:00:00” 到“9999-12-31 23:59:59”
TIME 时间值。
TIMESTAMP 时间戳

5. 二进制类型

数据库系统 类型 说明
MYSQL blob  
Oracle blob  
DB2 blob  

 

通过SQL语句管理数据表

1.创建数据表

CREATE TABLE 表名
(
字段名1  字段类型  约束1,
字段名2  字段类型  约束1,
字段名3  字段类型  约束1,
………………
)

 例如:

CREATE TABLE T_Student

(

FNumber VARCHAR(20) NOT NULL ,

FName VARCHAR(20)NOT NULL ,

FAge INT NOT NULL ,

FFavorite VARCHAR(20),

FPhoneNumber VARCHAR(20)

)

2.定义默认值

CREATE TABLE T_Teacher

(

FNumber VARCHAR(20),

FName VARCHAR(20),

FAge INT,

FISMaster VARCHAR(5) DEFAULT ‘NO’

)

3.定义主键

CREATE TABLE T_Bus

(

FNumber VARCHAR(20),

FDriverName VARCHAR(20),

FUsedYears INT,

PRIMARY KEY (FNumber)

)

4.定义外键

表1

CREATE TABLE T_Department

(

FId VARCHAR(20),

FName VARCHAR(20),

FLevel INT,

PRIMARY KEY (FId)

)

表2

CREATE TABLE T_Employee

(

FNumber VARCHAR(20),FName VARCHAR(20),

FDepartmentId VARCHAR(20),

FOREIGN KEY (FDepartmentId) REFERENCES T_Department(FId)

)

 5.修改已有数据表

添加字段

ALTER TABLE T_PERSON ADD FFavorite VARCHAR(20)

修改字段

ALTER TABLE T_Person change FAge newFAge varchar(30)

删除字段

ALTER TABLE T_Person DROP FAge

6.删除数据表

DROP TABLE T_Person

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。