zoukankan      html  css  js  c++  java
  • SQL语言之DDL(操作数据库和表结构)

    1、DDL的基本概念

    DDL(Data Definition Language,操作数据库和表结构):DDL是用来操作数据库和表的,也就是创建数据库和表、删除数据库和表、修改表结构这些操作。通常,DDL由数据库管理员执行。

    2、DDL操作数据库(选择和增删改查)

     

    2.1、创建数据库(Create)

    可以通过 create 语句来创建一个数据库

    CREATE DATABASE 数据库名;  -- 创建数据库
    create database 数据库名 character set utf-8;  -- 在创建数据库时可以指定数据库的字符集

    如果同名数据库已经存在,再创建一个会报错,提示该数据库已存在。我们可以通过判断该数据库是否已存在来避免报错:

    create database if not exists basename;  -- 如果已存在则不会创建,否则新建一个数据库
    create database if not exists basename character set gbk;  -- 判断同时指定字符集

    2.2、查询所有的数据库(show)

    可以使用 show database; 语句来查询 MySQL 中所有的数据库。

    如下:MySQL在安装后默认建立了四个数据库。前三个数据库都是保存着MySQL的一些信息,最好不要乱改。如果需要,我们可以在 test 数据库上做一些修改测试。

    (其中 information_schema 并没有真正对应的实体文件夹,该数据库是一个信息数据库,其保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等。也就是说当你建立一个新的数据库,或者在已有的数据库中增删改表的话,都会记录在information_schema库中)

    我们也可以通过 show create database 数据库名;  语句来查看创建某个数据的语法。如下所示,我们还可以知道该数据库使用的字符集是 utf-8。

    2.3、修改数据库(alter)

    修改数据库的字符集:

    alter database 数据库名称 character set 字符集名称;
    # 示例:
    alter database testdb character set utf8;

    2.4、删除数据库(drop)

    drop database 数据库名称;
    drop database if exists 数据库名称;   # 如果该数据库不存在,直接删除会报错,我们可以先判断是否存在

    2.5、选择数据库(use)

    在连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以我们需要选择要进行操作的数据库。

    use 数据库名称; 

    执行以上命令后,就会选择某个数据库,后续的操作都会在该数据库中执行,比如对数据表的操作等等。

    查询目前正在使用的数据库:

    select database();  # 当没有选择数据库时,会提示 null

    3、DDL操作数据表(增删改查)

    3.1、创建数据表(create)

    创建MySQL数据表需要以下信息:表名、表字段名、定义每个表字段。

    以下为创建MySQL数据表的SQL通用语法:

    CREATE TABLE table_name (column_name column_type);
    
    # 示例创建数据表runoob_tbl:
    CREATE TABLE IF NOT EXISTS `runoob_tbl`(
       `runoob_id` INT UNSIGNED AUTO_INCREMENT,   # AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1
       `runoob_title` VARCHAR(100) NOT NULL,      # 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL,在操作数据库时如果输入该字段的数据为NULL,就会报错。
       `submission_date` DATE,
       PRIMARY KEY ( `runoob_id` )                # PRIMARY KEY关键字用于定义列为主键,可以使用多列来定义主键,列间以逗号分隔。建表语句的最后一列不要加逗号,否则报错
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;          # ENGINE 设置存储引擎,CHARSET 设置编码

    对于一个关系表,除了定义每一列的名称外,还需要定义每一列的数据类型。关系数据库支持的标准数据类型包括数值、字符串、时间等:

    上面的表中列举了最常用的数据类型。很多数据类型还有别名,例如,浮点型REAL又可以写成FLOAT(24)。还有一些不常用的数据类型,例如,TINYINT(范围在0~255)。各数据库厂商还会支持特定的数据类型,例如JSON

    选择数据类型的时候,要根据业务规则选择合适的类型。通常来说,长整型BIGINT能满足整数存储的需求,变长字符串VARCHAR(N)能满足字符串存储的需求,这两种类型是使用最广泛的。

    3.2、删除数据表(drop)

    在进行删除表操作时要非常小心,因为执行删除命令后所有数据都会消失。

    以下为删除MySQL数据表的通用语法:

    DROP TABLE table_name;
    DROP TABLE if exists table_name;  # 判断是否存在,存在再删除

    3.3、修改表

    3.3.1、对表的整体进行修改

    修改表名:

    alter table 表名 rename to 新表名;

    修改表的字符集:

    alter table 表名 character set 字符集名称;
    # 示例:
    alter table testtable character set utf8;  # utf-8字符集写成utf8,否则报错

    3.3.2、修改表结构

    添加一列:

    alter table 表名 add 列名 数据类型;
    # 示例:
    alter table testtable add name varchar(10);  # varchar(10)表示最多有10个字符

    修改列名、数据类型:

    alter table 表名 modify 列名 新数据类型;  # 修改列的数据类型
    alter table 表名 change 列名 新列名 新数据类型;  # 同时修改列名和数据类型

    删除列:

    alter table 表名 drop 列名; 

    3.4、查询

    3.4.1、查询数据库中的所有表

    查询某个数据库中的所有表:

    show tables;

    3.4.2、查询表结构

    查询表结构:

    desc 表名;
  • 相关阅读:
    理解OpenShift(5):从 Docker Volume 到 OpenShift Persistent Volume
    理解OpenShift(4):用户及权限管理
    理解OpenShift(3):网络之 SDN
    理解OpenShift(2):网络之 DNS(域名服务)
    理解OpenShift(1):网络之 Router 和 Route
    HTML盒子模型
    架构系统的雪崩理解
    C++11 lambda表达式学习
    C++11 std::shared_ptr总结与使用
    Kafka学习笔记
  • 原文地址:https://www.cnblogs.com/wenxuehai/p/13485427.html
Copyright © 2011-2022 走看看