mysql系列教程(九)—–mysql创建和管理表

MySQL

前边为各位小伙伴介绍了基础的操作,这一节来介绍数据表的创建和管理。

创建数据库

create database db_name;
#创建一个数据库
show databases; 
#查看当前所有的数据库
use db_name;
#切换当前使用的数据库

命名规则

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

创建表

  • 必须具备
    • CREATE TABLE权限
    • 存储空间
  • 必须指定
    • 表名
    • 列名,数据类型,尺寸
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr][, ...]);
#创建表的语法

常用的数据类型

数据类型含义
INT使用4个字节保存整数数据
CHAR(size)定长字符数据。若未指定,默认为1个字符,最大长度为255
VACHAR(size)可变长字符数据,根据字符串实际长度保存,必须指定长度
FLOAT(M,D)单精度浮点数,M=整数位+小数位,D=小数位。D<=M<=255,0<=D<=30,默认M+D<=6
DOUBLE(M,D)双精度浮点数,D<=M<=255,0<=D<=30,默认M+D<=15
DATE日期型数据,格式‘YYYY-MM-DD’
BLOB二进制形式的长文本数据,最大可达4G
TEXT长文本数据,最大可达4G
数据类型

创建表代码示例


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

使用子查询创建表

  • 使用AS subquery选项,将创建表和插入数据结合起来
  • 指定的列和子查询中的列要一一对应
  • 通过列名和默认值定义列
CREATE TABLE table
[(column, column...)]
AS subquery;
create table emp1 as select * from employees;
#创建的emp1包含了employees的数据
create table emp2 as select * from employees where 1=2;
#创建的emp2是空表。

CREATE TABLE dept80
AS 
    SELECT employee_id, last_name, 
           salary*12 ANNSAL, 
           hire_date
    FROM employees
    WHERE department_id = 80;
#创建并导入部门id是80的表数据

管理表

ALTER TABLE 语句

  • 向现有的表中添加列
  • 修改现有表中的列
  • 删除现有表中的列
  • 重命名现有表中的列

添加一列

ALTER TABLE dept 
ADD job_id varchar(15);
#向dept添加一列

修改一列

  • 可以修改列的数据类型,尺寸和默认值
  • 对默认值的修改只影响之后对表的修改
ALTER TABLE dept
MODIFY (last_name VARCHAR(30));
#修改数据类型和尺寸
ALTER TABLE dept
MODIFY (salary double(9,2) default 1000);
#修改数据类型和尺寸和默认值

删除列

ALTER TABLE dept
DROP COLUMN job_id;

重命名列

ALTER TABLE dept
CHANGE department_name dept_name varchar(15);
#将department_name修改为dept_name

删除表

  • 数据和结构都被删除
  • 所有正在运行的相关事务被提交
  • 所有相关索引被删除
  • DROP TABLE 语句不能回滚
DROP TABLE dept;

清空表

  • TRUNCATE TABLE语句
    • 删除表中所有的数据
    • 释放表的存储空间
  • TRUNCATE 语句不能回滚
  • DELETE语句删除数据,可以回滚
TRUNCATE TABLE detail_dept;

改变对象的名称

  • 执行RENAME语句改变表,视图的名称
  • 必须是对象的拥有者
ALTER table dept
RENAME TO detail_dept;

今天的分享就到这里了,欢迎小伙伴指正补充!

发表评论