认识表
- 基本存储单位
- 二维结构
- 行(记录)和列(域或者字段)
约定
- 每一列数据必须具有相同的数据类型
- 列名唯一
- 每一行数据的唯一性
表字段的数据类型
- 字符型
- CHAR(n)、NCHAR(n) 不可变长度类型
NCHAR是按照Unicode格式存放数据
CHAR的n最大值为2000、NCHAR的n最大值为1000 - VARCHAR2(n)、NVARCHAR2(n) 可变长度类型
VARCHAR2的n最大值为4000、NVARCHAR2的n最大值为2000
- 数值型
- NUMBER(p,s) p是有效数字,s是小数点后的位数
例如NUMBER(5,2)是指有效数字5位,保留2位小数,如123.45 - FLOAT(n)
- 日期型
- DATE 范围:公元前4712年1月1号到公元9999年12月31号,精确到秒
- TIMESTAMP: 精确到毫秒
- 其他类型
- BOLB:二进制存放,最大4G
- CLOB :字符存放,最大4G
创建表
- 所需字段
- 字段的数据类型
语法:
CREATE TABLE table_name
(
column_name datatype ,…
);
例:
CREATE TABLE userinfo
(
id number(6,0),
username varchar2(20),
userpwd varchar2(20),
email varchar2(30),
regdate date
);
修改表
-
添加字段
ALTER TABLE table_name ADD column_name datatype;
例:ALTER TABLE userinfo ADD remarks varchar2(500); -
更改字段数据类型
ALTER TABLE table_name MODIFY column_name datatype;
可以同时修改数据类型和长度
例:ALTER TABLE userinfo MODIFY remarks varchar2(400);
ALTER TABLE userinfo MODIFY userpwd number(6,0); -
删除字段
ALTER TABLE table_name DROP COLUMN column_name;
例:ALTER TABLE userinfo DROP COLUMN remarks; -
修改字段名
ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name;
例:ALTER TABLE userinfo RENAME COLUMN email TO new_email; -
修改表名
RENAME table_name TO new_table_name;
例:RENAME userinfo TO new_userinfo;
删除表
- TRUNCATE TABLE table_name;
删除表的全部数据,并没有将表删除;也叫截断表。 - DROP TABLE table_name;
删除表的全部数据和表自身。
例:DROP TABLE new_userinfo;
表 - 添加数据
INSERT语句
INSERT INTO table_name (column1,column2…) VALUES(value1,value2…);
注:value的数量和数据类型需要和column指定的要一致
- 向表中所有字段添加值
INSERT INTO userinfo VALUES(1,‘xxx’,‘123’,‘xxx@126.com’,sysdate); - 向表中指定的字段添加值
INSERT INTO userinfo VALUES(2,‘yyy’,‘123’); - 向表中添加默认值
CREATE TABLE table_name
(
column_name datatype DEFAULT xxx ,…
);
例子:
CREATE TABLE userinfo1(
id number(6,0),
regdate date DEFAULT sysdate
);
表 - 复制数据
在建表时复制
CREATE TABLE table_new AS SELECT column1,xxx FROM table_old;
注:其中column是需要复制的字段
例子:
CREATE TABLE userinfo_new AS SELECT * FROM userinfo;
CREATE TABLE userinfo_new1 AS SELECT id,username FROM userinfo;
在添加时复制
INSERT INTO table_new [(column1,…)] SELECT column1,… FROM table_old;
其中table_new表需要存在,然后将table_old表的数据追加到table_new上
例子:
INSERT INTO userinfo_new SELECT * FROM userinfo;
INSERT INTO userinfo_new(id,username) SELECT id,username FROM userinfo;
表 - 修改数据
UPDATE语句
UPDATE table_name SET column1=value1,… [WHERE conditions];
-
无条件修改
UPDATE userinfo SET userpwd=‘111111’;
UPDATE userinfo SET userpwd=‘111’,email=‘111@126.com’; -
有条件修改
UPDATE userinfo SET userpwd=‘123456’ WHERE username=‘xxx’;
表 - 删除数据
DELETE语句
DELETE FROM table_name [WHERE conditions];
-
无条件删除
DELETE userinfo; -
有条件删除
DELETE userinfo WHERE username=‘yyy’;