其他分享
首页 > 其他分享> > 07-创建和管理表

07-创建和管理表

作者:互联网

# 创建和管理表

# 显示已有的数据库
SHOW DATABASES;

#使用指定的数据库
USE test;
USE myemployees;

#创建数据库
CREATE DATABASE temp;

# 查看以后的数据库中的表
SHOW TABLES;

# 常见的数据库对象都有哪些?
# 表(table)/ 视图(view) / 索引(index) / 序列(sequence) / 存储过程(procedure) 
# 函数(function) / 触发器(trigger)

# 1.创建数据表(table)
# 两种方式:
# 方式一:"白手起家"
CREATE TABLE emp(
id INT,
NAME VARCHAR(15),
salary DOUBLE(10,2),
hire_date DATE
);

SELECT * FROM emp;

DESC emp;

# 方式二:基于现有的表
CREATE TABLE emp1
AS
SELECT employee_id,last_name
FROM employees;
# 此种方式,会同步的将原表中的数据拷贝过来。但是部分约束不会拷贝过来
SELECT * FROM emp1;
# emp1表中字段的数据类型和数据长度,也与原表保持一致
DESC emp1;

DESC employees;

#创建新表,指定新的列的名字
CREATE TABLE emp2
AS
SELECT employee_id emp_id,last_name NAME
FROM employees
WHERE department_id IN (10,20,30,40);

SELECT * FROM emp2;

#复制一个employees表(包括数据):
CREATE TABLE employees_copy
AS
SELECT * FROM employees;


SELECT * FROM employees_copy;

DESC employees_copy;
DESC employees;

#复制一个employees表(不包括数据):
CREATE TABLE employees_blank
AS
SELECT *
FROM employees
WHERE 1=2;

SELECT * FROM employees_blank;


# 2.修改表(alter table)
# ① 新增一个列
ALTER TABLE emp
ADD email VARCHAR(25);

DESC emp;

# ② 删除一个列
ALTER TABLE emp
DROP COLUMN email;

DESC emp;
# ③ 修改列的数据类型、数据长度
ALTER TABLE emp
MODIFY salary DOUBLE(15,2); #修改数据长度

DESC emp;

ALTER TABLE emp
MODIFY salary VARCHAR(15);

# 一般情况下,我们不会修改数据表的列的数据类型。
ALTER TABLE emp1
MODIFY last_name DOUBLE(15,2);

ALTER TABLE emp1
MODIFY employee_id VARCHAR(15); #使用了double 到 varchar的自动类型转化

DESC emp1;

# ④ 重命名列
ALTER TABLE emp
CHANGE id emp_id INT; # oracle: rename id to emp_id.

DESC emp;

# 3. 重命名表   # rename emp to myemp;
ALTER TABLE emp
RENAME TO myemp;

DESC emp;#Table 'myemployees.emp' doesn't exist

# 4.删除表
DROP TABLE myemp;

# 5. 清空表 (truncate table):会将表中的所有数据清空,但是不会删除表结构
SELECT * FROM emp1;

# 对比 清空表(truncate table)和删除表数据(delete from ..) 
# 清空表操作一旦执行,不能回滚
# 删除表数据的操作执行完后,还可以回滚

#前提:设置不允许自动提交数据
SET autocommit = FALSE;

DELETE FROM emp1; 

SELECT * FROM emp1;

# 回滚数据
ROLLBACK;  # DCL中的操作

#********************

TRUNCATE TABLE emp1; # 不可回滚。或者理解为:每次执行以后,会自动提交数据。

ROLLBACK;  # 会回滚到最近的一次commit的位置。


#********DCL:commit / rollback***********
SET autocommit = FALSE;

SELECT * FROM employees_copy;

DELETE FROM employees_copy;

ROLLBACK;

COMMIT; # 数据一旦提交,就不可回滚。

ROLLBACK; 

# 数据库事务:一组逻辑操作单元(一条或多条DML操作),使数据从一种状态变换到另一种状态。

#举例:
# AA 给 BB 转账 100.
#过程:① 从AA账户中减100  ② 向BB账户中加100
# 第一步:
#SET autocommit = FALSE;
# try{
# 第二步:
# ① 从AA账户中减100

# 可能存在异常

# ② 向BB账户中加100

# 第三步:提交数据
# commit;

# }catch(){
# 第四步:回滚数据
# rollback;
#}

 

标签:07,管理,创建,employees,emp,emp1,TABLE,SELECT,DESC
来源: https://blog.csdn.net/shujuelin/article/details/89713637