创建表
CREATE TABLE dept
(deptno INT(2),
dname VARCHAR(14),
loc VARCHAR(13));
DESCRIBE dept
创建表
CREATE TABLE emp (
#int类型,自增
emp_id INT AUTO_INCREMENT,
#最多保存20个中英文字符
emp_name CHAR (20),
#总位数不超过15位
salary DOUBLE,
#日期类型
birthday DATE,
#主键
PRIMARY KEY (emp_id)
) ;
使用子查询创建表
• 使用 AS subquery 选项,将创建表和插入
数据结合起来
• 指定的列和子查询中的列要一一对应
• 通过列名和默认值定义列
复制现有的表:
create table emp1 as select * from employees;
create table emp2 as select * from employees where 1=2;
--创建的emp2是空表。
CREATE TABLE dept80
AS
SELECT employee_id, last_name,
salary*12 ANNSAL,
hire_date
FROM employees
WHERE department_id = 80;
修改表
使用 ALTER TABLE 语句可以实现:
向已有的表中添加列
修改现有表中的列
删除现有表中的列
重命名现有表中的列
追加一个新列
ALTER TABLE dept80
ADD job_id varchar(15);
修改一个列
删除一个列
使用 DROP COLUMN 子句删除不再需要的列.
ALTER TABLE dept80
DROP COLUMN job_id;
重命名一个列
使用 CHANGE old_column new_column dataType
子句重命名列
ALTER TABLE dept80
CHANGE department_name dept_name varchar(15);
删除表
• 数据和结构都被删除
• 所有正在运行的相关事务被提交
• 所有相关索引被删除
• DROP TABLE 语句不能回滚
DROP TABLE dept80;
清空表
• TRUNCATE TABLE 语句:
– 删除表中所有的数据
– 释放表的存储空间
TRUNCATE TABLE detail_dept;
• TRUNCATE语句不能回滚
• 可以使用 DELETE 语句删除数据,可以回滚
delete from emp2;
select * from emp2;
rollback;
select * from emp2;
改变表, 视图的名称
ALTER table dept
RENAME TO detail_dept;
Table renamed.
• 必须是对象的拥有者