MySQL创建和管理数据库

igxiaoshan Lv5

创建和管理数据库

创建数据库

1
2
3
4
5
6
7
8
-- 方式一
CREATE DATABSE 数据库名;

-- 方式二
CREATE DATABASE 数据库名 CHARACTER UTF-8;

-- 方式三
CREATE DATABASE IF NOT EXISTS 数据库名; (推荐使用方式)

使用数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-- 查看当前所有数据库
show databases;

-- 查看当前正在使用的数据库
select database();

-- 查看指定数据库下的所有数据表
show tables from 数据库名;

-- 查看数据库的创建信息
select create database 数据库名;
或者
select create database 数据库名\G;

-- 使用\切换数据库
use 数据库名;

修改数据库

1
2
3
4
5
6
7
8
-- 更改数据库字符集
alter database 数据库名 character set 字符集; # 比如: GBK,UTF-8

-- 删除数据库
-- 方式一
drop database 数据库名;
-- 方式二
drop database if exists 数据库名;(推荐使用)

创建表

1
2
3
4
5
create table [if not exists] 表名 (
字段1, 数据类型 [约束条件] [默认值],
...
);
-- 加上了 [if not exists] 关键字,则表示: 如果当前数据库中不存在要 创建的数据表,则创建数据表;如果当前数据库中已经存在要创建的数据表,则忽略建表语句,不再创建数据表.

查看数据表结构

MySQL支持使用DESCRIBEDESC语句查看数据表结构,也支持SHOW CREATE TABLE 数据表语句查看数据表结构

1
2
3
SHOW CREATE TABLE 表名;
或者
SHOW CREATE TABLE 表名\G;

修改表

修改表是指修改数据库中已经存在的数据表的结构

  • 使用ALTER TABLE语句可以实现
    • 向已有的表中添加列
    • 修改现有表中的列
    • 删除现有表中的列
    • 重命名现有表中的列

追加一个列

1
2
3
4
ALTER TABLE 表名 ADD [COLUMN] 字段名 字段类型 [FIRST|AFTER 字段名]

-- 举例
alter table my_table1 add last_name varchar(255);

修改一个列

  • 可以修改列的数据类型,长度,默认值和位置
1
2
3
4
ALTER TABLE 表名 MODIYF [COLUMN] 字段名1 字段类型 [DEFAULT 默认值] [FIRST|AFTER 字段名];

-- 举例
alter table my_table1 modify last_name varchar(50);

重命名一个列

1
2
3
4
ALTER TABLE 表名 CHANGE [COLUMN] 列名 新列名 新数据类型;

-- 举例
alter table my_table1 change last_name l_name varchar(50);

删除一个列

1
2
3
4
ALTER TABLE 表名 DROP [COLUMN] 字段名

-- 举例
alter table my_table1 drop l_name;

重命名表

  • 方式一: 使用 rename
1
RENAME TABLE 旧表名 TO 新表名;
  • 方式二
1
ALTER TABLE 旧表名 RENAME [TO] 新表名;

删除表

  • 在MySQL中,当一张数据表没有与其他任何数据表形成关联关系时,可以将当前数据表直接删除
  • 数据和结构都被删除
  • 所有正在运行的相关事务被提交
  • 所有相关索引被删除
1
DROP TABLE [IF EXISTS] 数据表1 [, 数据表2, ...数据表n]

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

DROP TABLE 语句不能回滚

清空表

  • TRUNCATE TABLE 语句:
    • 删除表中所有的数据
    • 释放表的存储空间
1
TRUNCATE TABLE 表名;
  • truncate 语句不能回滚,而使用delete语句删除数据,可以回滚

  • 对比

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SET autocommit = FALSE;

    DELETE FROM my_table1;
    -- TRUNCATE TABLE my_table1;

    SELECT * FROM my_table1;

    ROLLBACK;

    SELECT * FROM my_table1;

    -- 验证结果: TRUNCATE 操作不能回滚