SQL DDL 数据定义语句

前言

  • DDL(Data Definition Language)语句:数据定义语句,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象。常用的语句关键字主要包括 create、drop、alter 等。

1、DDL 数据库操作语句

  • 1)创建数据库语句

    # 创建数据库,数据使用默认编码方式 utf8mb4
    # create database 数据库名;
    > create database test;
    
        Query OK, 1 row affected (0.04 sec)
    
    # 创建数据库,指定数据编码方式
    # create database 数据库名 character set 字符集;
    > create database test character set gbk;
    
        Query OK, 1 row affected (0.02 sec)
  • 2)删除数据库语句
    # 删除数据库
    # drop database 数据库名;
    > drop database test;
    
        Query OK, 0 rows affected (0.05 sec)
    # 删除数据库,如果数据库存在就删除
    # drop database if exists 数据库名;
    > drop database if exists test;
    
        Query OK, 0 rows affected (0.01 sec)
  • 3)显示所有数据库语句
    # 显示所有数据库
    > show databases;
    
        +--------------------+
        | Database           |
        +--------------------+
        | information_schema |
        | performance_schema |
        | mysql              |
        | sys                |
        +--------------------+
        4 rows in set (0.01 sec)
    • 系统自动创建的数据库

      • 上面的显示结果中的 4 个数据库都是安装 MySQL 时系统(macOS)自动创建的。
      • information_schema:主要存储了系统中的一些数据库对象信息,不如用户表信息、列信息、权限信息、字符集信息、分区信息等。
      • performance_schema:主要用于收集数据库服务器性能参数。
      • mysql:包含权限配置,事件,存储引擎状态,主从信息,日志,时区信息,用户权限配置等。
      • sys:performance_schema 的替代方案。
  • 4)显示数据库的创建信息语句
    # 显示数据库具体信息
    # show create database 数据库名;
    > show create database test;
    
        +----------+---------------------------------------------------------------------------------------------+
        | Database | Create Database                                                                             |
        +----------+---------------------------------------------------------------------------------------------+
        | test     | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ |
        +----------+---------------------------------------------------------------------------------------------+
        1 row in set (0.00 sec)
  • 5)选择操作的数据库语句
    # 选择操作的数据库
    # use 数据库名;
    > use test;
    
        Database changed
  • 6)显示正在操作的数据库语句
    # 显示正在操作的数据库
    > select database();
    
        +------------+
        | database() |
        +------------+
        | test       |
        +------------+
        1 row in set (0.00 sec)
  • 7)导出数据库语句
    # 导出数据库,同时倒出数据库表结构和数据
    # mysqldump -u 用户名 -p 数据库名 > 导出到的目标文件路径.sql;
    $ mysqldump -u root -p test > /Users/qianchia/Desktop/test.sql;
    
        Enter password: 
    # 导出数据库,只倒出数据库表结构
    # mysqldump -u 用户名 -p -d 数据库名 > 导出到的目标文件路径.sql;
    $ mysqldump -u root -p -d test > /Users/qianchia/Desktop/test.sql;
    
        Enter password: 
    • 导出数据库是在系统命令模式下操作。
  • 8)导入数据库语句
    # 导入数据库/表
    # source 导入的目标文件路径.sql;
    > source /Users/qianchia/Desktop/test.sql;
    
        Query OK, 0 rows affected (0.00 sec)
        Query OK, 0 rows affected (0.01 sec)
        ...
        Query OK, 3 rows affected (0.00 sec)
        Records: 3  Duplicates: 0  Warnings: 0
    • 导入数据库是在选择了操作数据库后在 mysql 命令模式下操作。

2、DDL 表操作语句

  • 1)创建表语句

    # 创建表
    # create table 表名 (
          列名称字段 数据类型(长度) 约束条件,
          列名称字段 数据类型(长度) 约束条件
      );
    > create table student (
          no int,
          name varchar(20),
          age int,
          score int
      );
    
        Query OK, 0 rows affected (0.08 sec)
    # 创建表,约束
    
    > create table student (
          no int unique,                           // 设置唯一约束
          name varchar(20) not null,               // 设置非空约束
          age int,
          score int
      );
    
    > create table student (
          no int primary key,                      // 设置主键约束
          name varchar(20),
          age int,
          score int
      );
    
    > create table student (
          no int,
          name varchar(20),
          age int,
          score int
    
          primary key(no)                          // 设置主键约束
      );
    
    > create table student (
          no int primary key auto_increment,       // 设置主键自增约束
          name varchar(20),
          age int,
          score int
      );
    
    > create table A (
          ano int primary key,
          aname varchar(20),
          loc varchar(100)
      );
    
    > create table B (
          bno int primary key,
          bname varchar(20),
    
          bano int,
          # constraint 约束名称 foreign key(外键名称) references 源表(主键名称)
          constraint fk_a_b foreign key(bano) references A(ano)                // 设置外键约束
      );
  • 2)删除表语句
    # 删除表
    # drop table 表名;
    > drop table student;
    
        Query OK, 0 rows affected (0.07 sec)
    # 删除表,如果表存在就删除
    # drop table if exists 表名;
    > drop table if exists student;
    
        Query OK, 0 rows affected (0.06 sec)
  • 3)显示所有表语句
    # 显示所有表
    > show tables;
    
        +----------------+
        | Tables_in_test |
        +----------------+
        | A              |
        | B              |
        | student        |
        +----------------+
        3 rows in set (0.00 sec)
  • 4)显示表的创建信息语句
    # 显示表具体信息
    > show create table student;
    
        +---------+--------------------------------------------------------------------------------------------------+
        | Table   | Create Table                                                                                     |
        +---------+--------------------------------------------------------------------------------------------------+
        | student | CREATE TABLE `student` (
                                            `no` int(11) NOT NULL AUTO_INCREMENT,
                                            `name` varchar(20) NOT NULL,
                                            `age` int(11) DEFAULT NULL,
                                            `score` int(11) DEFAULT NULL,
                                            PRIMARY KEY (`no`)
                                           ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci        |
        +---------+--------------------------------------------------------------------------------------------------+
        1 row in set (0.01 sec)
  • 5)显示表的数据结构语句
    # 显示表的数据结构
    # desc 表名称;
    > desc student;
    
        +-------+-------------+------+-----+---------+----------------+
        | Field | Type        | Null | Key | Default | Extra          |
        +-------+-------------+------+-----+---------+----------------+
        | no    | int(11)     | NO   | PRI | NULL    | auto_increment |
        | name  | varchar(20) | NO   |     | NULL    |                |
        | age   | int(11)     | YES  |     | NULL    |                |
        | score | int(11)     | YES  |     | NULL    |                |
        +-------+-------------+------+-----+---------+----------------+
        4 rows in set (0.01 sec)
  • 6)重命名表语句
    # 重命名表
    # alter table 旧表名称 rename [to] 新表名称;
    > alter table student rename [to] stu;
    
        Query OK, 0 rows affected (0.02 sec)
    # 重命名表
    # rename table 旧表名称 to 新表名称;
    > rename table student to stu;
    
        Query OK, 0 rows affected (0.08 sec)
  • 7)修改表的字符集语句
    # 修改表的字符集
    # alter table 表名称 cahracter set 字符集;
    > alter table student character set gbk;
    
        Query OK, 0 rows affected (0.05 sec)
        Records: 0  Duplicates: 0  Warnings: 0
  • 8)导出表语句
    # 导出数据库指定的表,同时导出表结构和数据
    # mysqldump -u 用户名 -p 数据库名 表名 > 导出到的目标文件路径.sql;
    $ mysqldump -u root -p test student > /Users/haiqianj/Desktop/test.sql;
    
        Enter password: 
    # 导出数据库指定的表,只导出表结构
    # mysqldump -u 用户名 -p -d 数据库名 表名 > 导出到的目标文件路径.sql;
    $ mysqldump -u root -p -d test student > /Users/haiqianj/Desktop/test.sql;
    
        Enter password: 
    • 导出表是在系统命令模式下操作。
  • 9)导入表语句
    # 导入表/数据库
    # source 导入的目标文件路径.sql;
    > source /Users/qianchia/Desktop/test.sql;
    
        Query OK, 0 rows affected (0.00 sec)
        Query OK, 0 rows affected (0.01 sec)
        ...
        Query OK, 3 rows affected (0.00 sec)
        Records: 3  Duplicates: 0  Warnings: 0
    • 导入表是在选择了操作数据库后在 mysql 命令模式下操作。

3、DDL 列字段操作语句

  • 1)添加列语句

    # 添加列,添加单列
    # alter table
        表名称
      add [column]
        列名称 类型 [约束] [first | after 列名称];
    > alter table student add cla varchar(20);
    
        Query OK, 0 rows affected (0.04 sec)
        Records: 0  Duplicates: 0  Warnings: 0
    # 添加列,添加多列
    # alter table
        表名称
      add [column]
        列名称 类型 [约束] [first | after 列名称],
      add [column]
         列名称 类型 [约束] [first | after 列名称],
       ...;
    > alter table student add cla varchar(20), add addr varchar(100);
    
        Query OK, 0 rows affected (0.02 sec)
        Records: 0  Duplicates: 0  Warnings: 0
  • 2)删除列语句
    # 删除列,删除单列
    # alter table
        表名称
      drop [column]
        列名称;
    > alter table student drop address;
    
        Query OK, 0 rows affected (0.10 sec)
        Records: 0  Duplicates: 0  Warnings: 0
    # 删除列,删除多列
    # alter table
        表名称
      drop [column]
        列名称,
      drop [column]
        列名称,
      ...;
    > alter table student drop class, drop address;
    
        Query OK, 0 rows affected (0.11 sec)
        Records: 0  Duplicates: 0  Warnings: 0
  • 3)修改列名称语句
    # 修改列名称,修改单列名称
    # alter table
        表名称
      change [column]
        旧列名称
        新列名称 类型 [约束] [first | after 列名称];
    > alter table student change cla class int;
    
        Query OK, 0 rows affected (0.10 sec)
        Records: 0  Duplicates: 0  Warnings: 0
    # 修改列名称,修改多列名称
    # alter table
        表名称
      change [column]
        旧列名称
        新列名称 类型 [约束] [first | after 列名称],
      change [column]
        旧列名称
        新列名称 类型 [约束] [first | after 列名称],
      ...;
    > alter table student change cla class int, change addr address varchar(100);
    
        Query OK, 0 rows affected (0.10 sec)
        Records: 0  Duplicates: 0  Warnings: 0
  • 4)修改列属性语句
    # 修改列属性,修改单列的字段类型及约束
    # alter table
        表名称
      modify [column]
        列名称 类型 [约束] [first | after 列名称];
    > alter table student modify cla int;
    
        Query OK, 0 rows affected (0.11 sec)
        Records: 0  Duplicates: 0  Warnings: 0
    # 修改列属性,修改多列的字段类型及约束
    # alter table
        表名称
      modify [column]
        列名称 类型 [约束] [first | after 列名称],
      modify [column]
        列名称 类型 [约束] [first | after 列名称],
      ...;
    > alter table student modify cla int, modify addr varchar(200);
    
        Query OK, 0 rows affected (0.10 sec)
        Records: 0  Duplicates: 0  Warnings: 0
  • 5)修改列顺序语句
    • 在上边的 add、change、modify 语句中的可选参数 [first | after 列名称] 可以用老修改字段在表中的位置。
    • first:放在所有列最前边
    • after 列名称:放在指定列之后
    • 注意:change、first、after column 这些关键字都属于 MySQL 在标准 SQL 上的扩展,在其它数据库中不一定适用。

原文地址:https://www.cnblogs.com/QianChia/p/9185028.html

时间: 2024-10-26 03:28:20

SQL DDL 数据定义语句的相关文章

mysql快速上手之DDL数据定义语句

SQL分类 DDL语句:数据定义语句,定义了不同的数据段.数据库.表.列.索引等数据库对象的定义.(create.drop.alter等) DML语句:数据操纵语句,用于增删改查的操作,并检查数据完整性. DCL语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句,这些语句定义了数据库.表.字段.用户的访问级别和安全级别.(grant.revoke等) DDL语句 数据库的操作 创建数据库 create database 数据库名 charset=utf8; 查看存在哪些数据库 sh

Hive 官方手册翻译 -- Hive DDL(数据定义语言)

Hive DDL(数据定义语言) Confluence Administrator创建, Janaki Lahorani修改于 2018年9月19日 原文链接 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL 翻译:Google Google翻译,金山软件 金山词霸 校对:南大通用 范振勇 (2018.9.26) 一.概述 这里是HiveQL DDL语句的文档,其中包括: CREATE 数据库/SCHEMA,表

MySQL数据定义语句

MySQL数据定义语句主要是创建.修改.删除表,增加,修改,删除字段的操作 创建表:CREATE TABLE 表名(属性名 数据类型 约束条件, 属性名 数据类型 约束条件, 属性名 数据类型 约束条件, 属性名 数据类型 , ); 完整约束条件:PRIMARY KEY 主键FOREIGN KEY 外键NOT NULL 非空UNIQUE 唯一键AUTO_INCREMENT 自增键(mysql特色)DEFAULT 设置默认值 1.创建表test1 mysql> create table test1

第4章 DDL数据定义

第4章 DDL数据定义 4.1 创建数据库 1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db. hive (default)> create database db_hive; 2)避免要创建的数据库已经存在错误,增加if not exists判断.(标准写法) hive (default)> create database db_hive; FAILED: Execution Error, return code 1 from org.

Mysql数据库 DDL 数据定义语言

数据库(Database,DB): 按照数据结构来组织.存储和管理数据的仓库,本质上就是文件系统,数据按照一定的格式存储,用户可以进行CRUD(增删改查) 数据库管理系统(Data Base Management System,DBMS): 创建和管理数据库的,介于应用程序和操作系统之间,不仅具有最基本的数据管理功能,还能保证数据的完整性.安全性和可靠性.eg:MySQL.Oracle.SQL.Server.DB2等. 数据库系统(DataBase System,DBS): 是由硬件和软件组成的

DDL(数据定义语言)

DDL,是对数据库内部的对象进行创建,删除,修改等的操作语言.它和DML语言最大的区别是DML只是对表内部数据的操作,而不涉及到表的定义,结构的修改,更不会涉及到其它对象. 1.连接数据库:注:1.mysql代表客户端命令,-u后面跟连接的数据库用户,-p表示需要输入密码.    2.命令的结束符用;或者\g结束 2.创建数据库:格式:create database dbname; Query OK执行成功1 row affected 只影响了数据库中一行的记录.0.13 sec 记录了操作执行

MySql DDL数据定义语言

1.数据库创建.查看以及使用/切换 直接创建数据库 db1 create database db1; 查看当前在哪个库里边 select database(); 进入库的操作:use 库名; use db1; 判断是否存在,如果不存在则创建数据库 db2 create database if not exists db2; 创建数据库db3,并指定字符集为 gbk create database db3 default character set gbk; 查看某个库是什么字符集: show c

Hive的DDL数据定义语言

1.创建数据库 hive>create database myhive; hive>create database if not exists myhive; hive>show databases; hive>show databases like '*t*'; 说明:hive为创建的数据库生成了相对应的目录(*.db),目录在{hive.metastore.warehouse.dir}属性下,同时,数据库中的表将以目录中的子目录进行存储:default默认数据库除外. a.自定

SQL——数据定义

SQL--数据定义 SQL数据定义功能:定义各种数据库的"对象" 模式定义 表定义 视图定义 索引定义 数据字典 数据查字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有的对象的定义信息以及一些统计信息: 关系模式.表.视图.索引的定义 完整性约束的定义 分类用户对数据库的操作权限 统计信息 关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的相应信息. 数据定义 1.模式定义 [例题]为用户WANG定义一个学生-课程模式S-T ? 解: CREA