_创建和管理表

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


# 练习二


以上是关于_创建和管理表的主要内容,如果未能解决你的问题,请参考以下文章

休眠搜索以处理两个不同实体对象的相同索引

SQL表名不同结构相同 如何做成复制订阅?

Python实现双向链表

Mysql中高级操作中的视图_事务_索引_账户权限管理

_创建和管理表

_创建和管理表