创建与修改表

目录

一. 创建和管理数据库

1.1 创建数据库

1.2  管理数据库 

1.3  修改数据库

二. 创建表 -- 两种方式

 2.1 mysql中的数据类型

2.2 创建数据表 

2.2.1 方式一

2.2.2 方式二---基于现有的表创建表 

三. 修改表 

3.1 添加一个字段(添加列) 

3.2  修改一个字段 : 数据类型,长度,默认值,位置

3.3 重命名一个字段

3.4 删除一个字段 

四. 重命名表

五. 删除表

六. 清空表

6.1 DCL中 CMMIT 与 ROLLBACK

6.6.1  DDL 和 DML 的说明 

七. 练习 

7.1 练习一

7.2 练习二

7.3 练习三 


一. 创建和管理数据库

1.1 创建数据库

#方式一
CREATE DATABASE 数据库名;
#方式二 :创建数据库并指定字符集
CREATE DATABASE 数据库名 CHARACTER SET 字符集;
# 方式三: 判断数据库是否已经存在,不存在则创建数据库( 推荐 )
CREATE DATABASE IF NOT EXISTS 数据库名;
SHOW DATABASES; #显示数据库
SHOW CREATE DATABASE 数据库名; #显示数据库信息
总结推荐: CREATE DATABASE IF NOT EXISTS 数据库名 CHARACTER SET 字符集;

1.2  管理数据库 

#查看当前所有的数据库
SHOW DATABASES;
#查看当前正在使用的数据库
SELECT DATABASE() FROM DUAL;
#查看指定库下所有的表
SHOW TABLES FROM 数据库名;
#查看数据库的创建信息
SHOW CREATE DATABASE 数据库名; 
或者: SHOW CREATE DATABASE 数据库名\G
#使用/切换数据库
USE 数据库名;
注意:要操作表格和数据之前必须先说明是对哪个数据库进行操作,否则就要对所有对象加上数据库名.”

1.3  修改数据库

#更改数据库字符集
ALTER DATABASE 数据库名 CHARACTER SET 字符集;
#删除指定的数据库
#方式一
DROP DATABASE 数据库名;
#方式二(推荐)
DROP DATABASE IF EXISTS 数据库名;

二. 创建表 -- 两种方式

 2.1 mysql中的数据类型

常用的数据类型如下:

1.数值类型

整数类型 :  INT

浮点类型: FLOAT , DOUBLE

定点数类型:  DECIMAL

位类型: BIT

2.日期时间类型: DATE, TIME,DATETIME,YEAR

3.字符串类型 : CHAR,VARCHAR,TEXT,JSON对象

4.空间数据类型

2.2 创建数据表 

2.2.1 方式一

字段和数据类型必须有 

CREATE TABLE IF NOT EXISTS mytable(
id INT,
emp_name VARCHAR(15),
hire_date DATE
)

2.2.2 方式二---基于现有的表创建表 

例子:

CREATE TABLE   employees1
AS SELECT employee_id,last_name,salary
FROM employees
#或者(别名可以作为新创建的表的名称)
CREATE TABLE   employees2
AS SELECT employee_id id,last_name lname,salary s
FROM employees
DESC employees2

 

SHOW CREATE TABLE 表名\G :  查看数据表结构 

#复制employees表,包括表数据
CREATE TABLE employees_copy
AS SELECT *
FROM employees
DESC employees_copy
#复制employees表,不包括表数据
CREATE TABLE employees2
AS SELECT *
FROM employees
WHERE 1=2

三. 修改表 

修改表指的是修改数据库中已经存在的数据表的结构。
使用 ALTER TABLE 语句可以实现:
  1. 向已有的表中添加列
  2. 修改现有表中的列
  3. 删除现有表中的列
  4. 重命名现有表中的列

3.1 添加一个字段(添加列) 

#ALTER TABLE 表名 ADD 【COLUMN】 字段名 字段类型 【FIRST|AFTER 字段名】;
例子1:
ALTER TABLE mytable 
ADD salary DOUBLE(10,2)
一共10位,小数位2位
例子2:
ALTER TABLE mytable
ADD department_id INT
AFTER emp_name;
DESC mytable;

3.2  修改一个字段 : 数据类型,长度,默认值,位置

ALTER TABLE 表名 
MODIFY 【COLUMN】 字段名1 字段类型 【DEFAULT 默认值】【FIRST|AFTER 字段名 2】;
例子:
ALTER TABLE mytable 
MODIFY department_id VARCHAR(3) DEFAULT 'a';

3.3 重命名一个字段

ALTER TABLE 表名 CHANGE 【column】 列名 新列名 新数据类型;
例子:
ALTER TABLE mytable
CHANGE salary month_salary DOUBLE(10,2);

3.4 删除一个字段 

ALTER TABLE 表名 DROP 【COLUMN】字段名
例子:
ALTER TABLE mytable
DROP COLUMN department_id;

四. 重命名表

1.方式一:使用RENAME(建议)

RENAME TABLE emp TO myemp;

2.方式二:

ALTER table dept RENAME [TO] detail_dept; -- [TO]可以省略

五. 删除表

  • MySQL中,当一张数据表 没有与其他任何数据表形成关联关系 时,可以将当前数据表直接删除。
  • 数据和结构都被删除
  • 所有正在运行的相关事务被提交
  • 所有相关索引被删除
DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, …, 数据表n];
例子:
DROP TABLE IF EXISTS mytable;
DROP TABLE 语句不能回滚(撤销)

六. 清空表

  • 删除表中所有的数据
  • 释放表的存储空间
  • 保留表结构
  • TRUNCATE TABLE detail_dept
    TRUNCATE 语句 不能回滚 ,而使用 DELETE 语句删除数据,可以回滚

6.1 DCL中 CMMIT 与 ROLLBACK

COMMMIT : 提交数据 一旦执行,数据被永久保存在数据库中,数据不可以回滚(撤销)

ROLLBACK: 回滚数据,一旦执行,可以实现数据回滚,回滚到最近一次的COMMIT之后

对比 TRUNCATE TABLE与DELETE FROM

相同点:都可以实现对表中所有数据的删除,同时保留表结构

不同点:TRUNCATE语句不能回滚,而使用 DELETE 语句删除数据,可以回滚

6.6.1  DDL 和 DML 的说明 

1.DDL一旦执行,就不可以回滚,指令SET autocommit = FALSE 对DDL 失效

2.DML默认一旦执行,也是不可以回滚,但如果在执行DML

之前设置了SET autocommit = FALSE,就可以实现回滚

COMMIT;
SET autocommit = FALSE;
DELETE FROM `employees`; 
#TRUNCATE TABLE emp2; 
SELECT * FROM employees;
ROLLBACK;
SELECT * FROM `employees`;
阿里开发规范:
【参考】 TRUNCATE TABLE DELETE 速度快,且使用的系统和事务日志资源少,但 TRUNCATE 无 事务且不触发 TRIGGER ,有可能造成事故,故不建议在开发代码中使用此语句。
说明: TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同。

七. 练习 

7.1 练习一

#1. 创建数据库test01_office,指明字符集为utf8。并在此数据库下执行下述操作
CREATE DATABASE IF NOT EXISTS test01_office CHARACTER SET 'utf8';
USE test01_office;
SHOW DATABASES;
#2. 创建表dept01
 /*字段 类型 id INT(7) NAME VARCHAR(25) */
 CREATE TABLE IF NOT EXISTS dept01(
 id INT(7),
 `name` VARCHAR(25)
 );
 SHOW TABLES;
 #3. 将表departments中的数据插入新表dept02中
 CREATE TABLE IF NOT EXISTS 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 IF NOT EXISTS emp01(
id INT(7),
first_name VARCHAR (25),
last_name VARCHAR(25),
dept_id INT(7));
#5. 将列last_name的长度增加到50 
ALTER TABLE emp01 MODIFY last_name VARCHAR(50);
DESC emp01;
#6. 根据表employees创建emp02 
CREATE TABLE IF NOT EXISTS emp02
AS SELECT *
FROM atguigudb.employees;
#7. 删除表emp01 
DROP TABLE emp01;
#8. 将表emp02重命名为emp01
#方式一: 推荐
RENAME TABLE emp02 TO emp01;
#方式二
ALTER TABLE emp02 RENAME TO emp01;
#9.在表dept02和emp01中添加新列test_column,并检查所作的操作 
ALTER TABLE dept02 ADD test_column VARCHAR(10);
ALTER TABLE emp01 ADD test_column VARCHAR(10);
DESC dept02;
DESC emp01;
#10.直接删除表emp01中的列 department_id
ALTER TABLE emp01 DROP COLUMN department_id;









7.2 练习二

# 1、创建数据库 test02_market
CREATE DATABASE IF NOT EXISTS test02_market;
SHOW DATABASES;
USE test02_market;
 # 2、创建数据表 customers
 CREATE TABLE IF NOT EXISTS customers(
 c_num INT,
 c_name VARCHAR(50),
 c_contact VARCHAR(50),
 c_city VARCHAR(50),
 c_birth DATE); 
 DESC customers_info;
# 3、将 c_contact 字段移动到 c_birth 字段后面
ALTER TABLE customers MODIFY c_contact VARCHAR(50) AFTER c_birth; 
# 4、将 c_name 字段数据类型改为 varchar(70)
ALTER TABLE customers MODIFY c_name VARCHAR(70); 
# 5、将c_contact字段改名为c_phone 
ALTER TABLE customers CHANGE c_contact  c_phone VARCHAR(15);
# 6、增加c_gender字段到c_name后面,数据类型为char(1)
ALTER TABLE customers ADD c_gender CHAR(1) AFTER c_name;
# 7、将表名改为customers_info
RENAME TABLE customers TO customers_info;
# 8、删除字段c_city
ALTER TABLE customers_info DROP c_city;

#总结
MODIFY 修改列数据类型,长度,位置,默认值
CHANGE 修改列的名称

7.3 练习三 

# 1、创建数据库test03_company 
CREATE DATABASE IF NOT EXISTS test03_company ;
USE test03_company ;
# 2、创建表offices
CREATE TABLE IF NOT EXISTS offices(
officeCode INT,
city VARCHAR(30),
address VARCHAR(50),
country VARCHAR(50),
postalCode VARCHAR(25));
DESC offices;
# 3、创建表employees
CREATE TABLE IF NOT EXISTS employees(
empNum INT,
lastName VARCHAR(50),
firstName VARCHAR(50),
mobile VARCHAR(25) ,
`code` INT ,
jobTitle VARCHAR(50),
 birth DATE ,
 note VARCHAR(255) ,
 sex VARCHAR(5)
);
DESC employees;
# 4、将表employees的mobile字段修改到code字段后面
ALTER TABLE employees MODIFY mobile VARCHAR(25) AFTER `code`;
# 5、将表employees的birth字段改名为birthday
ALTER TABLE employees CHANGE birth birthday DATE; 
# 6、修改sex字段,数据类型为char(1)
ALTER TABLE employees MODIFY sex CHAR(1); 
# 7、删除字段note 
ALTER TABLE employees DROP note;
# 8、增加字段名favoriate_activity,数据类型为varchar(100)
ALTER TABLE employees ADD favoriate_activity VARCHAR(100); 
# 9、将表employees的名称修改为employees_info
RENAME TABLE employees TO employees_info;
ALTER TABLE employees_info RENAME TO employees;

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值