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
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号