【Oracle】day01_数据类型_DDL语句_DML语句
1.数据类型:
->字符型
CHAR(n),NCHAR(n) --固定长度
VARCHAR2(n1),NVARCHAR2(n2) --可变长度
n1<=4000 n2<=2000
->数值型
NUMBER(p,s)
p--总位数
s--小数点后的位数
FLOAT(n) --主要用于存储二进制数
->日期型
DATE
范围:公元前4712年1.1-9999.12.31
TIMESTAMP --时间戳
能精确到秒
->其他类型
BLOB
4G 数据 二进制类型
CLOB
4G 数据 字符串类型
2.DDL语句
1)创建表
CREATE TABLE table_name(
column_name datatype,...
);
eg:
CREATE TABLE employee_fancq(
id NUMBER(4),
name VARCHAR2(20),
gender CHAR(1),
birth DATE,
salary NUMBER(6,2),
job VARCHAR2(30),
deptno NUMBER(2)
);
2)查看表结构
DESC employee_fancq
数据库中无论字段是什么类型,默认值都是NULL,也就是说当我们向表中插入一条数据时,若对应的字段没有给定值,那么默认就将NULL做为值插入到该字段上。可以使用DEFAULT为某个字段指定默认值,这样就会用指定的值插入当前字段。
SQL语句本身不区分大小写,但是行业中通常都会将关键字全部大写,其他内容全部小写形成差异来增加可读性。但是需要注意,字符串在数据库中使用单引号括起来,并且内容是区分大小写的!
3)删除表:
DROP TABLE employee_fancq
把表及其数据一块删除.
TRUNCATE TABLE table_name
删除表的全部数据,表的结构仍存在,比较快速.
4)NOT NULL 约束
该约束可以使某个字段必须给值,任何情况下该字段的值不能为NULL。
CREATE TABLE employee_fancq(
id NUMBER(4),
name VARCHAR2(20) NOT NULL,
gender CHAR(1) DEFAULT 'M',
birth DATE,
salary NUMBER(6,2),
comm NUMBER(6,2),
job VARCHAR2(30),
manager NUMBER(4),
deptno NUMBER(2)
);
5)修改表名:
RENAME old_name TO new_name
eg:
RENAME employee_fancq TO myemp_fancq
6)修改表结构:
6.1)添加新的字段,字段只能追加到表的最后而不是在现有字段中插入一个新字段。
ALTER TABLE table_name ADD column_name datatype;
eg:
ALTER TABLE myemp_fancq
ADD(
hiredate DATE DEFAULT SYSDATE
)
6.2)删除现有字段
ALTER TABLE table_name DROP [COLUMN] column_name;
eg:
ALTER TABLE myemp_fancq
DROP(hiredate);
DESC myemp_fancq;
6.3)修改现有字段
修改可以修改字段的长度,类型,默认值。
ALTER TABLE table_name MODIFY column_name datatype;
eg:
ALTER TABLE myemp_fancq
MODIFY(
job VARCHAR2(40) DEFAULT 'CLERK'
)
6.4)修改字段名
只是改变字段的名字,不改变字段的类型
ALTER TABLE table_name
RENAME [COLUMN] column_name TO new_column_name;
3.DML语句
DML可以对表中的数据进行"增,删,改"
DML语句是伴随事务控制的。
1)插入语句:
INSERT INTO table_name
(column1,column2,...)
VALUES(value1,value2);
eg:
INSERT INTO myemp_fancq
(id, name, job, salary)
VALUES
(1001, 'rose', 'PROGRAMMER', 5500);
SELECT * FROM myemp_fancq;
INSERT语句中可以不指定针对那些字段插入数据,若不指定,则是全列插入,这时候VALUES中给定的值的顺序,类型,个数必须与表中字段一致才可以。
插入日期类型数据建议使用TO_DATE函数:
INSERT INTO myemp_fancq
(id, name, job,birth)
VALUES
(1003, 'donna', 'MANAGER',
TO_DATE('2009-09-01', 'YYYY-MM-DD')
);
SELECT * FROM myemp_fancq;
2)修改表中数据,需要注意,不加WHERE条件,整张表中所有记录都会被修改!
UPDATE table_name
SET column1=value,...
[WHERE conditions];
eg:
UPDATE myemp_fancq
SET gender='F',salary=7000
WHERE name='rose';
3)删除表中数据
DELETE FROM table_name;
eg:
DELETE FROM myemp_fancq
WHERE name='rose';
4)复制表数据
4.1)在建表时复制
CREATE TABLE table_new
AS
SELECT column1,...|* FROM table_old;
4.2)在添加时复制
INSERT INTO table_new
[(column1,...)]
SELECT column1,...|* FROM table_old;