建表时字段的选择:
Varchar2(n) 变长类型,最长4000个字符
Char(n) 定长,最长2000个字符
变长与定长的区别:
Varchar2(n) ,char(n) 为例, 2者最多能存n个字符, 不同在于,char(n)
,如果实际只存1个字符,仍占据n个字符的空间 Varchar(n) ,如果实际存在1字符,占据1+[1-2]字符 Char性能高一些,
开发优化实例:在一些大的网站上, 用户名一般允许6-16字符 Char(16)
??如果用户表还有个人简介字段,少的10来字,多的1000字,
用char太浪费了,怎么办?
答:竖直分表,把表的不常用及低效率字段,拆出来,放到另一张表.
Number类型 ,可以存整数和浮点数
Number(m,n) m:是总位数(精度),是小数点后面的位数(标度)
Number(5,2) , 999.99
Date 日期类型 :年月日
(精确到秒,存储时间戳)
时间戳是指1970/01/01/00:00:00到当前瞬间的秒数
建表语法:
建表就是一个声明列的过程
典型语法:
Create table 表名 ( 列名称 列类型, 列名称 列类型, … );
查看表结构:
Desc 表名
修改表:
删除列: alter table 表名 drop column 列名
例: alter table employee drop intro;
增加列: alter table 表名 add (列名 列类型)
改列: alter table 表名 modify (列名 新列类型)
-注意:在mysql中是有: 改列同时改名 alter table 表名 change 原列名 新列名 列类型)
修改字段的名:alter table 表名 rename column (原列名) to (新列名)
改表名: alter table 表名 rename to 新表名
快速复制一张表:
Create table 表名 as select */字段 from 另一张表
??我只是想复制表结构,不想要数据??
可以在where后加一个恒为假的条件
例:create table empcopy2 as select * from employer where 2<1;
删除表: drop table 表名
清空表: truncate table 表名
–添加时如果有数据不能设置not null.
–删除不可在sys下使用。
–这些都是在数据库层面上,针对表和表结构操作,属于ddl