_创建和管理表
Posted 嫚嫚_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了_创建和管理表相关的知识,希望对你有一定的参考价值。
# 第10章_创建和管理表
-- 1.1如何创建数据库
-- 方式一
CREATE DATABASE mytest1
SHOW CREATE DATABASE mytest1;
-- 方式2 显式指明了要创建的数据库的字符集
CREATE DATABASE mytest3 CHARACTER SET 'gbk'
SHOW CREATE DATABASE mytest3
SHOW DATABASES
-- 方式三 如果要创建的数据库已经存在,则创建不成功,反不会报错
CREATE DATABASE IF NOT EXISTS mytest3 CHARACTER SET 'gbk'
# 1.2 管理数据库
-- 查看当前连接的数据库有哪些
SHOW DATABASES;
-- 切换数据库
USE mytest2;
-- 查看当前数据库中并保存的数据表
SHOW TABLES;
-- 查看当前使用的数据库
SELECT DATABASE() FROM DUAL ;
-- 查看指定数据库下保存的数据表
SHOW TABLES FROM mysql;
# 1.3 修改数据库
-- 更改数据库字符集
SHOW CREATE DATABASE mytest2
ALTER DATABASE mytest2 CHARACTER SET 'utf8';
# 1.4删除数据库
# 方式一
DROP DATABASE mytest1;
SHOW DATABASES;
# 方式二 不报错
DROP DATABASE IF EXISTS mytest1;
DROP DATABASE IF EXISTS mytest2;
-- 2 创建表
USE atguigudb;
SHOW CREATE DATABASE atguigudb;
SHOW TABLES;
-- 方式一(需要用户的权限)
CREATE TABLE IF NOT EXISTS myemp1(
id INT ,
emp_name VARCHAR(15),# 要指明长度
hire_date DATE
);
-- 查看表结构
DESC mysql1;
SHOW CREATE TABLE mysql1;
SELECT * FROM mysql1;
-- 方式二:基于现有的表创建新的表
CREATE TABLE myemp2
AS
SELECT employee_id,last_name,salary
FROM employees;
DESC myemp2
DESC employees;
-- 练习一 创建一个表 实现对employees的复制,包括表数据
CREATE TABLE employees_copy
AS
SELECT *
FROM employees;
SELECT * FROM employees_copy
-- 练习一 创建一个表 实现对employees的复制,不包括表数据
CREATE TABLE employees_bank
AS
SELECT *
FROM employees;
WHERE department_id>10000
SELECT * FROM employees_bank
# 3:修改表 alter table
DESC myemp1;
-- 3.1添加一个字段
ALTER TABLE myemp1
ADD salary DOUBLE(10,2) # 默认添加到最后一个字段
ALTER TABLE myemp1
ADD phone_number VARCHAR(20) FIRST;
-- 3.2 修改一个一段
ALTER TABLE myemp1
MODIFY emp_name VARCHAR(25);
ALTER TABLE myemp1
MODIFY emp_name VARCHAR(25) DEFAULT 'aaa'
-- 3.3 重命名一个字段
ALTER TABLE myemp1
CHANGE salary monthly_salary DOUBLE(10,2);
-- 3.4删除一个字段
ALTER TABLE myemp1
DROP COLUMN id
# 4:重命名
-- 方式一
RENAME TABLE myemp1
TO myemp11;
DESC myemp11;
-- 方式二
ALTER TABLE myemp2
RENAME TO myenp12;
# 5: 删除表
-- 不光将表结构删除也将表数据删除
DROP TABLE IF EXISTS myemp2;
# 6:清空表
-- 清空数据
SELECT * FROM employees_copy;
TRUNCATE TABLE employees_copy
DESC employees_copy;
# DCL 中commit和rollback
# commit:提交数据,一旦执行commit,则数据被永久保存在了数据库中,意味着数据不可回滚
# rollback :回滚数据,一旦执行rollback则可以实现数据的回滚,归滚到最近的一次
# 8:对比 TRUNCATE TABLE和 delect from
# 相同点:对表中所有数据的删除
-- 不同点 :TRUNCATE TABLE 表数据全部清除,同时,数据是不能回滚
-- DELETE 可以实现回滚
SELECT *
FROM myemp3;
# 课后练习
-- 创建数据库test01_office,指明字符集为utf8。并在此数据库下执行下述操作
CREATE DATABASE IF NOT EXISTS test01_office CHARACTER SET 'utf8'
USE test01_office
#2. 创建表dept01
/*
字段 类型
id INT(7)
NAME VARCHAR(25)
*/
CREATE TABLE IF NOT EXISTS dept01(
id INT(7),
NAME VARCHAR(25)
)
#3. 将表departments中的数据插入新表dept02中
CREATE TABLE dept02
AS
SELECT *
FROM atguigudb.departments;
#4. 创建表emp01
/*
字段 类型
id INT(7)
first_name VARCHAR (25)
last_name VARCHAR(25)
dept_id INT(7)
*/
CREATE TABLE emp01(
id INT(7),
first_name VARCHAR(25),
last_name VARCHAR(25),
dept_id INT(7)
);
#5. 将列last_name的长度增加到50
DESC emp01;
ALTER TABLE emp01
MODIFY lasT_name VARCHAR(50)
#6. 根据表employees创建emp02
CREATE TABLE emp02
AS
SELECT *
FROM atguigudb.`employees`;
SHOW TABLES;
#7. 删除表emp01
DROP TABLE emp01
-- rollback;
#8. 将表emp02重命名为emp01
ALTER TABLE emp02 RENAME TO emp01
#9.在表dept02和emp01中添加新列test_column,并检查所作的操作
ALTER TABLE emp01 ADD test_colunm VARCHAR(10);
DESC emp01;
#10.直接删除表emp01中的列 department_id
ALTER TABLE emp01
DROP COLUMN department_id
# 练习二
以上是关于_创建和管理表的主要内容,如果未能解决你的问题,请参考以下文章