第10章 创建和管理表

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


1.创建和管理数据库

1.1 创建数据库

方式1:创建数据库

CREATE DATABASE 数据库名;
CREATE DATABASE mytest1;
SHOW DATABASES;

方式2:创建数据库并指定字符集

CREATE DATABASE 数据库名 CHARACTER SET 字符集;
CREATE DATABASE mytest2 CHARACTER SET 'gbk';
SHOW CREATE DATABASE mytest2;

方式3:判断数据库是否已经存在,不存在则创建数据库( 推荐 )

CREATE DATABASE IF NOT EXISTS 数据库名;
#如果要创建的数据库已经存在,则创建不成功,但不会报错
CREATE DATABASE IF NOT EXISTS mytest2 CHARACTER SET 'utf8';
#如果要创建的数据库不存在,则创建成功
CREATE DATABASE IF NOT EXISTS mytest3 CHARACTER SET 'utf8';
SHOW DATABASES;

1.2 使用数据库

  1. 查看当前所有的数据库
SHOW DATABASES; #有一个S,代表多个数据库
  1. 查看当前正在使用的数据库
SELECT DATABASE(); #使用的一个 mysql 中的全局函数
  1. 查看指定库下所有的表
SHOW TABLES FROM atguigudb;
  1. 查看数据库的创建信息
SHOW CREATE DATABASE 数据库名;
或者:
SHOW CREATE DATABASE 数据库名\G
  1. 使用/切换数据库
USE atguigudb;

1.3 修改数据库

  1. 更改数据库字符集
#ALTER DATABASE 数据库名 CHARACTER SET 字符集; #比如:gbk、utf8等
SHOW CREATE DATABASE mytest2;
ALTER DATABASE mytest2  CHARACTER SET 'utf8';

1.4 删除数据库

  • 方式1:删除指定的数据库
#DROP DATABASE 数据库名
DROP DATABASE mytest1;
  • 方式2:删除指定的数据库(推荐)
#DROP DATABASE IF EXISTS 数据库名;
DROP DATABASE IF EXISTS mytest1;
SHOW DATABASES;

2.创建表

  • 创建表
-- 创建表
CREATE TABLE emp (
-- int类型
emp_id INT,
-- 最多保存20个中英文字符
emp_name VARCHAR(20),
-- 总位数不超过15位
salary DOUBLE,
-- 日期类型
birthday DATE
);

CREATE TABLE IF NOT EXISTS myemp1(  #需要用户具备创建表的权限
id INT,
emp_name VARCHAR(15),
hire_data DATE
);

方式2:

#方式二:基于现有的表,同时导入数据
CREATE TABLE myemp2
AS
SELECT employee_id,last_name,salary
FROM employees;
#练习1:创建一个表employee_copy,实现对employees表的复制,包括表数据
CREATE TABLE employee_copy
AS
SELECT * 
FROM employees;

SELECT *
FROM employee_copy;
#练习2:创建一个表employee_blank,实现对employees表的复制,不包括表数据
CREATE TABLE employee_blank
AS
SELECT * 
FROM employees
#where department_id > 10000;
WHERE 1 = 2;
SELECT *
FROM employee_blank;

3.修改表

DESC myemp1;
	#3.1 添加一个字段
	#添加在最后
	ALTER TABLE myemp1
	ADD salary DOUBLE(10,2);#一共十位  小数点后两位
	#添加在第一个
	ALTER TABLE myemp1
	ADD phone_number VARCHAR(20) FIRST;
	#添加在emp_name的后面
	ALTER TABLE myemp1
	ADD email VARCHAR(45) AFTER emp_name;
	#3.2 修改一个字段:数据类型、长度、默认值()
	#修改字段长度
	ALTER TABLE myemp1
	MODIFY emp_name VARCHAR(25);
	#修改字段长度和默认值
	ALTER TABLE myemp1
	MODIFY emp_name VARCHAR(35) DEFAULT 'aaa';
	#3.3 重命名一个字段
	ALTER TABLE myemp1
	CHANGE salary monthly_salary DOUBLE(10,2);
	
	ALTER TABLE myemp1
	CHANGE email my_email VARCHAR(50);
	#3.4删除一个字段
	ALTER TABLE myemp1
	DROP COLUMN my_email;

4.重命名表

方式1:使用RENAME

RENAME TABLE myemp1
TO myemp11;

方式2:

ALTER TABLE myemp11
RENAME TO myemp1;

5.删除表

#DROP TABLE [IF EXISTS] 数据表1 [, 数据表2,, 数据表n];
DROP TABLE IF EXISTS myemp3;

IF EXISTS的含义为:如果当前数据库中存在相应的数据表,则删除数据表;如果当前数据库中不存在相应的数据表,则忽略删除语句,不再执行删除数据表的操作.

DROP TABLE 语句不能回滚

6.清空表

-TRUNCATE TABLE语句:

  • 删除表中所有的数据

  • 释放表的存储空间

TRUNCATE TABLE employee_copy;#
  • TRUNCATE语句不能回滚,而使用 DELETE 语句删除数据,可以回滚
    #COMMIT:提交数据。一旦执行COMMIT。则数据就被永久的保存在了数据库中,意味着数据不可以回滚
    #ROLLBACK:回滚数据。一旦执行ROLLBACK,则可以实现数据的回滚。回滚到最近的一次COMMIT之后

DDL的操作一旦执行,就不可以回滚。指令SET autocommit = FALSE对DDL操作失效(因为在执行完DDL操作之后,一定会执行一次COMMIT。而此COMMIT操作不受SET autocommit = FALSE影响的)
DML的操作默认情况下,一旦执行,也是不可以回滚的。但是,如果执行DML之前,执行了SET autoCOMMIT = false,则执行的DML操作就可以实现回滚了

#演示:DELETE FROM
CREATE TABLE myemp3
AS 
SELECT e.employee_id emp_id,e.last_name lname,department_name
FROM employees e JOIN departments d
ON e.department_id = d.department_id;

COMMIT;
SELECT * FROM myemp3;

SET autocommit = FALSE;

DELETE FROM myemp3;
SELECT * FROM myemp3;
ROLLBACK;
SELECT * FROM myemp3;
#演示:TRUNCATE TABLE
COMMIT;
SELECT * FROM myemp3;

SET autocommit = FALSE;

TRUNCATE TABLE myemp3;
SELECT * FROM myemp3;
ROLLBACK;
SELECT * FROM myemp3;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值