美文网首页mysql
MySQL基础02-数据库定义(DDL语句)

MySQL基础02-数据库定义(DDL语句)

作者: 四月不见 | 来源:发表于2022-01-20 16:20 被阅读0次

一、简介

DDL(Data Definition Language)数据定义语言。
用来定义数据库对象:数据库等。关键词:createdropalter

二、DDL操作数据库

1、创建数据库

创建语法:create database [if not exists] 数据库名;
创建数据库并指定字符集(字符编码):create database 数据库名 character set 字符集;

创建一个数据库,如:

mysql> create database db1 character set utf8;
Query OK, 1 row affected, 1 warning (0.02 sec)
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db1                |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
7 rows in set (0.00 sec)

2、查看某个数据库的定义信息(创建语句):

语法:show create database 数据库名;

mysql> show create database db1;
+----------+-------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                 |
+----------+-------------------------------------------------------------------------------------------------+
| db1      | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+-------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> show create database db1 \G
*************************** 1. row ***************************
       Database: db1
Create Database: CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET utf8 */ /*!80016 DEFAULT ENCRYPTION='N' */
1 row in set (0.00 sec)

3、修改数据库

修改数据库字符集格式:alter database 数据库名 default character set 字符集;

mysql> alter database db1 default character set gbk;
Query OK, 1 row affected (0.00 sec)

mysql> show create database db1;
+----------+------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                |
+----------+------------------------------------------------------------------------------------------------+
| db1      | CREATE DATABASE `db1` /*!40100 DEFAULT CHARACTER SET gbk */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

4、删除数据库

语法:drop database 数据库名;

mysql> drop database db3;
Query OK, 0 rows affected (0.02 sec)

要删除的数据库不存在时:

mysql> drop database db3;
ERROR 1008 (HY000): Can't drop database 'db3'; database doesn't exist
mysql> drop database if exists db3;
Query OK, 0 rows affected, 1 warning (0.00 sec)

5、使用/切换数据库

查看正在使用的数据库:select database();
切换/使用数据库:use 数据库名;

mysql> use db1;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| db1        |
+------------+
1 row in set (0.00 sec)

三、DDL操作数据表

1、创建表

语法:create table 表名 ([字段名 [属性]...,]...);

mysql> create table user (
    -> id int,
    -> name char
    -> );
Query OK, 0 rows affected (0.04 sec)

创建一个结构相同的表:create table 新表名 like 旧表名;

mysql> create table user1 like user;
Query OK, 0 rows affected (0.02 sec)

2、查看表

查看某个数据库中的所有表:show tables;

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| user          |
| user1         |
+---------------+
2 rows in set (0.00 sec)

查看表结构:desc 表名;

mysql> desc user;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int     | YES  |     | NULL    |       |
| name  | char(1) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.01 sec)

查看表的创建语句:show create table 表名;

mysql> show create table user1 \G
*************************** 1. row ***************************
       Table: user1
Create Table: CREATE TABLE `user1` (
  `id` int DEFAULT NULL,
  `name` char(1) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

3、修改表

修改表名:rename table 表名 to 新表名;

mysql> rename table user to user1;
Query OK, 0 rows affected (0.02 sec)

修改表的字符集:alter table 表名 character set 字符集;

mysql> alter table user1 character set gbk;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table user1 \G
*************************** 1. row ***************************
       Table: user1
Create Table: CREATE TABLE `user1` (
  `id` int DEFAULT NULL,
  `name` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk
1 row in set (0.00 sec)

4、删除表

语法:drop table [if exists] 表名;

mysql> drop table user1;
Query OK, 0 rows affected (0.02 sec)

mysql> show tables;
+---------------+
| Tables_in_db1 |
+---------------+
| user          |
+---------------+
1 row in set (0.01 sec)

四、DDL操作数据列(字段)

1、添加表列

语法:alter table 表名 add 列名 [属性]... [after 插入位置];

mysql> alter table user1 add age int;
Query OK, 0 rows affected, 1 warning (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 1

mysql> desc user1;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int     | YES  |     | NULL    |       |
| name  | char(1) | YES  |     | NULL    |       |
| age   | int     | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
3 rows in set (0.00 sec)

2、修改表列

修改列类型:alter table 表名 modify 列名 [新属性];

mysql> alter table user1 modify name varchar(8);
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc user1;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id    | int        | YES  |     | NULL    |       |
| name  | varchar(8) | YES  |     | NULL    |       |
| age   | int        | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

修改列名:alter table 表名 change 旧列名 新列名 [新属性];

mysql> alter table user1 change age phone varchar(20);
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc user1;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | YES  |     | NULL    |       |
| name  | varchar(8)  | YES  |     | NULL    |       |
| phone | varchar(20) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)

3、删除列

语法:alter table 表名 drop 列名;

mysql> alter table user1 drop phone;
Query OK, 0 rows affected (0.03 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc user1;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| id    | int        | YES  |     | NULL    |       |
| name  | varchar(8) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
2 rows in set (0.01 sec)

五、参考

8.0官方文档:https://dev.mysql.com/doc/refman/8.0/en/

相关文章

  • MySQL基础02-数据库定义(DDL语句)

    一、简介 DDL(Data Definition Language)数据定义语言。用来定义数据库对象:数据库、表、...

  • mysql常用的一些操作

    1.登录mysql 2.常见DDL语句-数据库定义语言

  • SQL基础

    SQL基础 DDL 语句 DDL - 数据库定义语言。这些语句对数据库内部对象进行创建、删除、修改等操作。 查看建...

  • Mysql常用命令

    Mysql常用命令 数据定义语句(DDL) 数据库操作 登录数据库:mysql -uroot -proot 创建数...

  • SQL名词

    DDL,DML,DCL,TCL DDL(Data Definition Languages)语句:即数据库定义语句...

  • MySQL学习笔记

    MySQL学习笔记 一、SQL语句 DDL(数据定义语言):定义数据库,数据表的结构:create(创建)、dro...

  • mysql初涉

    mysql中语句分类 mysql中sql语句分为四种类型,DDL,DQL,DML和DCL。 DDL(数据定义语言)...

  • 2018-08-27数据库、数据库命令

    数据库操作语句梳理 1. DDL****语句 数据库模拟定义语言DDL(Data Definition Langu...

  • MySQL基础——DML语句

    上篇文章我们学习了MySQL基础——DDL语句,这篇文章学习MySQL基础——DML语句。 DML语句 DML英文...

  • MySQL基础

    MySQL的SQL语句 1.DDL : 定义数据库,数据表的结构,create drop alter 2.DM...

网友评论

    本文标题:MySQL基础02-数据库定义(DDL语句)

    本文链接:https://www.haomeiwen.com/subject/ofarcrtx.html