创建和管理表

  • 一、创建数据库
  • 二、创建表
  • 三、修改表
  • 四、删除表


一、创建数据库

创建一个保存员工信息的数据库:

create database employees;

相关其他命令:

show databases;查看当前所有数据库
use employees;“使用”一个数据库,使其作为当前数据库

1、命名规则
(1)数据库名不得超过30个字符,变量名限制为29个
(2)必须只能包含 A–Z, a–z, 0–9, _共63个字符
(3)不能在对象名的字符间留空格
(4)必须不能和用户定义的其他对象重名
(5)必须保证你的字段没有和保留字、数据库系统或常用方法冲突
(6)保持字段名和类型的一致性,在命名字段并为其指定数据类型的时候一定要保证一致性。假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了。

2、CREATE TABLE 语句
必须具备:

– CREATE TABLE权限
– 存储空间

CREATE TABLE [schema.]table
(column datatype [DEFAULT expr][, ...]);

必须指定:

– 表名
– 列名, 数据类型, 尺寸

二、创建表

语法:

CREATE TABLE dept
	(deptno INT(2),
	dname VARCHAR(14),
	loc VARCHAR(13));
Table created.

确认:

DESCRIBE dept

ddl 设计一个员工表mysql 创建员工管理数据库mysql_ddl 设计一个员工表mysql


1、常用数据类型

ddl 设计一个员工表mysql 创建员工管理数据库mysql_创建表_02

创建表
CREATE TABLE emp (
#int类型,自增
emp_id INT AUTO_INCREMENT,
#最多保存20个中英文字符
emp_name CHAR (20),
#总位数不超过15位
salary DOUBLE,
#日期类型
birthday DATE,
#主键
PRIMARY KEY (emp_id)
) ;

ddl 设计一个员工表mysql 创建员工管理数据库mysql_数据库_03


2、使用子查询创建表

(1)使用 AS subquery 选项,将创建表和插入数据结合起来

CREATE TABLE table
	[(column, column...)]
AS subquery;

1)指定的列和子查询中的列要一一对应
2)通过列名和默认值定义列

(2)复制现有的表:

create table emp1 as select * from employees;
create table emp2 as select * from employees where 1=2;
--创建的emp2是空表。

(3)使用子查询创建表举例:

CREATE TABLE dept80
  AS
	SELECT employee_id, last_name,
		salary*12 ANNSAL,
		hire_date
	FROM employees
	WHERE department_id = 80;
Table created.
DESCRIBE dept80

ddl 设计一个员工表mysql 创建员工管理数据库mysql_mysql_04

三、修改表

1、ALTER TABLE 语句

使用 ALTER TABLE 语句可以实现:

(1)向已有的表中添加
(2)修改现有表中的列
(3)删除现有表中的列
(4)重命名现有表中的列

2、追加一个新列

ddl 设计一个员工表mysql 创建员工管理数据库mysql_数据库_05

ALTER TABLE dept80
ADD job_id varchar(15);

3、修改一个列

(1)可以修改列的数据类型, 尺寸默认值

ALTER TABLE dept80
MODIFY (last_name VARCHAR(30));
Table altered.
ALTER TABLE dept80
MODIFY (salary double(9,2) default 1000);
Table altered.

(2)对默认值的修改只影响今后对表的修改

4、删除一个列

使用 DROP COLUMN 子句删除不再需要的列:

ALTER TABLE dept80
DROP COLUMN job_id;
Table altered.

5、重命名一个列

使用 CHANGE old_column new_column dataType子句重命名列:

ALTER TABLE dept80
CHANGE department_name dept_name varchar(15);
Table altered.

四、删除表

(1)数据和结构都被删除
(2)所有正在运行的相关事务被提交
(3)所有相关索引被删除
(4)DROP TABLE 语句不能回滚

DROP TABLE dept80;
Table dropped.

1、清空表

(1)TRUNCATE TABLE 语句:

– 删除表中所有的数据
– 释放表的存储空间

TRUNCATE TABLE detail_dept;
Table truncated.

(2)TRUNCATE语句不能回滚

(3)可以使用 DELETE 语句删除数据,可以回滚

对比:

delete from emp2;
select * from emp2;
rollback;
select * from emp2;

2、改变对象的名称

(1)执行RENAME语句改变表, 视图的名称

ALTER table dept
RENAME TO detail_dept;
Table renamed.

(2)必须是对象的拥有者