数据库中表的创建一般需要考虑三部分:表名、列名及类型、列的约束
表名:没什么要求,只要不重名就行。
常用数据类型:
1、字符类型
1)CHAR(长度):定长字符串,位数不足时用空格填充
2)VARCHAR2(长度):变长字符串,不会自动填充空格,比较常用
2、数字类型
1)NUMBER(p,s):p表示精度(总长度),s表示小数位
2)INT:普通整型
3、日期类型
1)DATE:精确到秒
2)TIMESTAMP:精度小于秒
4、大文件
1)BLOB:一般用来存储二进制数据,图像等,最大4GB
2)CLOB:一般用来存储文本信息,最大4GB
约束:用来防止无效的数据进入数据库,保持数据的完整性。
约束分类:
1、NOT NULL:非空
2、UNIQUE:唯一,能有一个空
3、PRIMARY KEY:主键,非空和唯一
4、FOREIGN KEY:外键,表中的某个属性值在另外表中有出现
5、CHECK:检查约束,缩小数据值域,如年龄必须非负
6、DEFAULT:默认约束,如果没有指定插入的值则使用默认值
具体语句:
1、创建表(没有约束)
CREATE TABLE <表名> (
<列名> <列类型>
[,<列名> <列类型>...]
);
2、行级约束(直接写在列类型后面)
CREATE TABLE <表名> (
id INT PRIMARY KEY, --主键
sex VARCHAR2(2) DEFAULT '男', -- 默认
name VARCHAR(10) NOT NULL, -- 非空
tel VARCHAR2(11) UNIQUE, -- 唯一
deptno INT CONSTRAINT <约束名> REFERENCES <引用表名>(<引用列名>), -- 外键
age INT CONSTARINT <约束名> CHACK(<条件>) -- 检查约束
);
3、表级约束(写在最后一个列申明后面)
CREATE TABLE <表名> (
id INT ,
sex VARCHAR2(2) ,
name VARCHAR2(10),
tel VARCHAR2(11) ,
deptno INT ,
age INT ,
PRIMARY KEY(<列名>), -- 主键
UNIQUE(<列名>), -- 唯一
CHECK(<条件>), -- 检查约束
CONSTRAINT <约束名> PRIMARY KEY(<列名>), -- 主键
CONSTRAINT <约束名> UNIQUE(<列名>), -- 唯一
CONSTRAINT <约束名> FOREIGN KEY(<列名>) REFERENCES <引用表名>(<引用列名>), -- 外键
CONSTRAINT <约束民> CHECK(条件) -- 检查约束,
);
4、修改约束
1)添加约束
ALTER TABLE <表名> ADD PRIMARY KEY(<列名>) -- 主键
ALTER TABLE <表名> ADD UNIQUE(<列名>) -- 唯一
ALTER TABLE <表名> ADD FOREIGN KEY(<表名>) REFERENCES <引用表名>(<引用列名>) -- 外键
ALTER TABLE <表名> ADD CHECK(<条件>) -- 检查约束
2)删除约束
ALTER TABLE <表名> DROP PRIMARY KEY -- 删除主键
ALTER TABLE <表名> DROP UNIQUE(<列名>) -- 删除唯一
ALTER TABLE <表名> DROP CONSTRAINT <约束名> -- 根据约束名删除约束
5、添加数据
INSERT INTO <表名> VALUES(<列的值>[,<列的值>]) -- 这种方式必须给全部列赋值,且必须按顺序赋值
INSERT INTO <表名>(<列1名字>[,<列2名字>]) VALUES(<列1的值>[,<列2的值>]) -- 根据指定列的顺序给列赋值,其他列若没有默认值则会赋空
6、查询数据
SELECT * FROM <列名> [WHERE <条件>] -- 会输出满足条件的数据的所有列
SELECT <列名1> [重命名1], <列名2>[重命名2] FROM <列名> [WHERE <条件>] -- 会输出满足条件的数据指定列,若有重命名则列名为重命名的值
7、删除数据
DELETE <表明> [WHERE <条件>] -- 会删除满足条件的所有数据,不加条件则删除所有数据
8、更新数据
UPDATE <表明> SET <列名> = <值>[,<列名> = <值>] [WHERE <条件>] -- 更新指定列的值,不加条件则前部修改