# 管理表
表是存储数据的基本存储单位
表是二维结构,由行(记录)和列(域和字段)组成
# 约定
1、每一列数据必须具有相同数据类型。
2、列名是唯一的
3、每一行数据的唯一性
# 数据类型
字符型、数值型、日期型、其他类型。
字符型 | n最大值 | 说明 |
---|---|---|
CHAR(n) | 2000 | n为10时,输入长度3字符的字符将补齐7个空格,易造成空间浪费 |
NCHAR(n) | 1000 | 按Unicode格式存放数据,常用于存储汉字 |
VARCHAR2(n) | 4000 | 存储可变长度数据类型,相对CHAR更节约空间 |
NVARCHAR2(n) | 2000 | 支持Unicode格式存放 |
数值型 | 说明 |
---|---|
NUMBER(p,s) | p有效数字;s小数点后位数,支持正负数 |
FLOAT(n) | 用于存储二进制数据,能表示二进制位数1-126位。转换成10进制,则需乘以0.30103 |
NUMBER(5, 2)
# 有效数字5位,保留2位小数,如123.45
1
2
2
日期型 | 说明 |
---|---|
DATE | 范围:公元前4712年1月1日,至公元9999年12月31日,精确到秒 |
TIMESTAMP |
其他类型 | 最大能存储 | 说明 |
---|---|---|
BLOB | 4GB数据 | 以二进制格式存储 |
CLOB | 4GB数据 | 以字符串形式存储 |
# 表的相关操作
创建表、修改表、删除表
创建表语法
CREATE TABLE table_name
(
column_name datatype [default value], ...
)
# default 添加默认值,默认value获取系统当前时间sysdate
1
2
3
4
5
2
3
4
5
实例:
修改表
添加字段、更改字段数据类型、修改字段名、删除字段、修改表名
添加字段
ALTER TABLE table_name
ADD column_name datatype [default value];
# alter table user_info add remark varchar2(500);
1
2
3
2
3
更改字段数据类型
ALTER TABLE table_name
MODIFY column_name datatype [default value];
# alter table user_info modify remark varchar2(300);
# alter table user_info modify password number(10, 0);
1
2
3
4
2
3
4
删除字段
ALTER TABLE table_name
DROP COLUMN column_name;
# alter table user_info drop column remark;
1
2
3
2
3
修改字段名称
ALTER TABLE table_name
RENAME COLUMN column_name TO new_column_name;
# alter table user_info rename column user_name to username;
1
2
3
2
3
修改表名
RENAME table_name TO new_table_name;
# rename user_info to userinfo;
1
2
2
删除表
删除表中所有数据
删除表
删除表中所有数据
TRUNCATE TABLE table_name
1
删除表
DROP TABLE table_name
1
# 操作表中数据
添加数据:INSERT语句、操作实例、复制表数据
INSERT语句
# INSERT语句
INSERT INTO table_name
(column1, column2, ...)
VALUES(value1, value2, ...)
# column1 ...栏可以省略,但value栏的顺序必须与数据库表字段顺序一致
1
2
3
4
5
2
3
4
5
实例
向表中所有字段添加值
insert into user_info values(1, 'jock', '123456', '1522@qq.com', sysdate);
# sysdate 获取系统当前时间
1
2
2
向表中指定字段添加值
insert into user_info (id, user_name, password) values(2, 'tom', '123456');
1
复制表数据
# 在创建时复制
CREATE TABLE table_new
AS
SELECT column1, ...|* FROM table_old
# column 指定需要复制的字段
# * 代表复制所有字段数据
# create table new_userinfo as select * from user_info;
# create table new_userinfo2 as select id, user_name from user_info;
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
在添加时复制
INSERT INTO table_new
[(column1, ...)]
SELECT column1, ...|* FROM table_old
# 插入表的字段顺序及数据类型,需要与table_old表一致。
# insert into new_userinfo select * from user_info;
# insert into new_userinfo (id, user_name) select id, user_name from user_info;
1
2
3
4
5
6
2
3
4
5
6
修改数据
# UPDATE语句
UPDATE table_name
SET column1=value1, ...
[WHERE conditions]
1
2
3
4
2
3
4
# 无条件更新
update user_info set password='1111111';
1
2
2
# 有条件更新
update user_info set password='222222', email='8888@xx.com' where id='2';
1
2
2
删除数据
# DELETE语句
DELETE FROM table_name
[WHERE conditions]
# drop删除表数据,要比delete快。
1
2
3
4
2
3
4
# 无条件删除
delete from user_info_copy;
1
2
2
# 有条件删除
delete from user_info where id='1';
1
2
2
← 表空间 约束constraint →