MySQL | DDL SQL语句 | 数据定义语言 | Data Defination Language

DDL SQL 语句

DDL是指 Data Defination Language,数据定义语言,包括创建、删除、修改数据库表、列等的SQL语句。

列出数据库模式

数据库模式(Schema)。表建立在不同的数据库模式中。通常一个应用程序对应一个数据库模式。数据库模式保证多个应用程序可以使用同一个MySQL服务器,但是却互不干扰。

使用SHOW DATABASE列出所有的数据库模式

show databases;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.00 sec)

切换数据库模式

使用use命令切换到指定的数据库模式

use information_schema;
mysql> use information_schema;
Database changed

切换后使用select database()查看当前使用的哪个数据库模式

select database();
mysql> select database();
+--------------------+
| database()         |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)d

也可以在登录的时候直接声明数据库模式名称

-uroot -padmin information_schema

列出数据表

切换到某一数据库模式后使用SHOW TABLES列出该模式所有的数据表

show tables;
mysql> show tables;
+---------------------------------------+
| Tables_in_information_schema          |
+---------------------------------------+
| CHARACTER_SETS                        |
| COLLATIONS                            |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS                               |
| COLUMN_PRIVILEGES                     |
| ENGINES                               |
| EVENTS                                |
| FILES                                 |
| GLOBAL_STATUS                         |
| GLOBAL_VARIABLES                      |
| KEY_COLUMN_USAGE                      |
| PARAMETERS                            |
| PARTITIONS                            |
| PLUGINS                               |
| PROCESSLIST                           |
| PROFILING                             |
| REFERENTIAL_CONSTRAINTS               |
| ROUTINES                              |
| SCHEMATA                              |
| SCHEMA_PRIVILEGES                     |
| SESSION_STATUS                        |
| SESSION_VARIABLES                     |
| STATISTICS                            |
| TABLES                                |
| TABLESPACES                           |
| TABLE_CONSTRAINTS                     |
| TABLE_PRIVILEGES                      |
| TRIGGERS                              |
| USER_PRIVILEGES                       |
| VIEWS                                 |
| INNODB_BUFFER_PAGE                    |
| INNODB_TRX                            |
| INNODB_BUFFER_POOL_STATS              |
| INNODB_LOCK_WAITS                     |
| INNODB_CMPMEM                         |
| INNODB_CMP                            |
| INNODB_LOCKS                          |
| INNODB_CMPMEM_RESET                   |
| INNODB_CMP_RESET                      |
| INNODB_BUFFER_PAGE_LRU                |
+---------------------------------------+
40 rows in set (0.00 sec)

查看表结构

使用DESC或者DESCRIBE命令查看指定表的结构

desc COLUMNS;
mysql> desc COLUMNS;
+--------------------------+---------------------+------+-----+---------+-------+
| Field                    | Type                | Null | Key | Default | Extra |
+--------------------------+---------------------+------+-----+---------+-------+
| TABLE_CATALOG            | varchar(512)        | NO   |     |         |       |
| TABLE_SCHEMA             | varchar(64)         | NO   |     |         |       |
| TABLE_NAME               | varchar(64)         | NO   |     |         |       |
| COLUMN_NAME              | varchar(64)         | NO   |     |         |       |
| ORDINAL_POSITION         | bigint(21) unsigned | NO   |     | 0       |       |
| COLUMN_DEFAULT           | longtext            | YES  |     | NULL    |       |
| IS_NULLABLE              | varchar(3)          | NO   |     |         |       |
| DATA_TYPE                | varchar(64)         | NO   |     |         |       |
| CHARACTER_MAXIMUM_LENGTH | bigint(21) unsigned | YES  |     | NULL    |       |
| CHARACTER_OCTET_LENGTH   | bigint(21) unsigned | YES  |     | NULL    |       |
| NUMERIC_PRECISION        | bigint(21) unsigned | YES  |     | NULL    |       |
| NUMERIC_SCALE            | bigint(21) unsigned | YES  |     | NULL    |       |
| CHARACTER_SET_NAME       | varchar(32)         | YES  |     | NULL    |       |
| COLLATION_NAME           | varchar(32)         | YES  |     | NULL    |       |
| COLUMN_TYPE              | longtext            | NO   |     | NULL    |       |
| COLUMN_KEY               | varchar(3)          | NO   |     |         |       |
| EXTRA                    | varchar(27)         | NO   |     |         |       |
| PRIVILEGES               | varchar(80)         | NO   |     |         |       |
| COLUMN_COMMENT           | varchar(1024)       | NO   |     |         |       |
+--------------------------+---------------------+------+-----+---------+-------+
19 rows in set (0.02 sec)

该命令将列出表的所有列名、类型,是否可以为空,是否主键,默认值以及描述等属性。

创建数据库模式

使用CREAT DATABASE创建数据库,并在自定义数据库里创建表以及写数据等

create database crane;
mysql> create database crane;
Query OK, 1 row affected (0.00 sec)

MySQL默认的编码方式为latin1,显示中文字符时可能会乱码。可以在创建数据库的时候指明数据库编码

CREATE DATABASE crane CHARCTER SET utf8

删除数据库模式

删除数据库使用DROP DATABASE命令

drop database crane;
mysql> drop database crane;
Query OK, 0 rows affected (0.00 sec)

修改数据库模式

修改数据库使用ALTER DATABASE命令。使用此命令可能需要相应的权限

ALTER DATABASE crane CHARACTER SET utf8;
mysql> alter database crane character set utf8;
Query OK, 1 row affected (0.00 sec)

创建表

使用CREATE TABLE创建表。表必须创建在某个数据库模式下面
完整格式为:CREATE [TEMPORARY] TABLE [IF NOT EXISTS] table_name (table_column)。方括号[]表示该参数是可选的

CREATE TABLE IF NOT EXISTS tb_CRANE --如果表tb_CRANE不存在则创建
(id int primary key auto_increment, --创建int类型主键,且自增长
name varchar(200) not null, --创建字符类型的列,最大长度为200字节
salary float(11, 2), --创建小数类型的列,小数点后2位
birthday date, --创建日期类型的列 只保存日期不保存时间 如 2019-05-17
sleep time, --创建时间类型的列 只保存时间不保存日期 如 22:22:22
ts timestamp, --创建时间戳类型的列,保存日期与时间 如 2019-05-17 22:22:22
description text, --创建大文本类型数据的列,保存大文本,长度不受限
picture blob --创建二进制类型的列,保存二进制数据
);

'–'后面为MySQL的行注释。也可以使用/* */引起的多行注释。
SQL中列出了常用类型的列的创建方式,如int(integer)、varchar、float、date、time、timestamp、text、blob等。varchar有最大长度限制,一般为255个字符。而text要相对长一些,适用于存储较大的文本。
用primary key注明主键,不能为空,不会重复,每行对应一个主键值。

mysql> CREATE TABLE IF NOT EXISTS tb_CRANE
    -> (id int primary key auto_increment,
    -> name varchar(200) not null,
    -> salary float(11, 2),
    -> birthday date,
    -> sleep time,
    -> ts timestamp,
    -> description text,
    -> picture blob);
Query OK, 0 rows affected (0.42 sec)

使用TEMPORARY可以创建临时表。临时表是指创建后只在当前数据库内有效,断开数据库的连接后表就自动删除了

CREATE TEMPORARY TABLE tb_temp
( id integer,
name varchar(100),
primary key(id));
mysql> CREATE TEMPORARY TABLE tb_temp
    -> ( id integer,
    -> name varchar(100),
    -> primary key(id));
Query OK, 0 rows affected (0.36 sec)

临时表常用来转移数据,或者存储中间计算结果。

删除表

使用DROP TABLE命令。如果表中有数据也会一并删除

drop table tb_CRANE;
mysql> drop table tb_CRANE;
Query OK, 0 rows affected (0.38 sec)

修改表

修改表结构使用ALTER TABLE。常用的操作有删除列,添加列,更改列,改表名等

删除列的格式为ALTER TABLE table_name DROP column_name

ALTER TABLE tb_CRANE DROP name;
mysql> ALTER TABLE tb_CRANE DROP name;
Query OK, 0 rows affected (0.61 sec)
Records: 0  Duplicates: 0  Warnings: 0

添加列的格式为ALTER TABLE table_name ADD column_name

ALTER TABLE tb_CRANE ADD name varchar(200) not null default 'CRANE';
--非空的varchar类型列,有默认值
mysql> ALTER TABLE tb_CRANE ADD name varchar(200) not null default 'CRANE';
Query OK, 0 rows affected (0.59 sec)
Records: 0  Duplicates: 0  Warnings: 0

修改列的格式为ALTER TABLE table_name CHANGE column_name

ALTER TABLE tb_CRANE CHANGE name c_name integer;
mysql> ALTER TABLE tb_CRANE CHANGE name c_name integer;
Query OK, 0 rows affected (0.53 sec)
Records: 0  Duplicates: 0  Warnings: 0
--如果原name列有非数字字符,强制类型转换位integer列时会出错

少女终末旅行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值