zoukankan      html  css  js  c++  java
  • mysql语句-DDL语句

    SQL分类

    1、DDL语句:数据定义语句,用来定义不同的数据段、数据库,表,列,索引等数据表对象,常用语句:create、drop、alter等。
    2、DML语句:数据操作语句,用于添加、删除、更新和查询数据库记录:insert,delete,update,select.
    3、DCL语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句:grant、revoke
    

    DDL语句

    1.create创建数据库

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

    如果创建时,数据库已经存在则会提示:

    mysql> create database test1;
    ERROR 1007 (HY000): Can't create database 'test1'; database exists
    

    这时可以使用show命令来查看系统中有哪些数据库

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db1                |
    | db2                |
    | db3                |
    | homework           |
    | mysql              |
    | mysqlbook          |
    | performance_schema |
    | test               |
    | test1              |
    +--------------------+
    10 rows in set (0.00 sec)
    

    2.删除数据库

    语法drop + datavase + 数据库名:

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

    注意,删除数据库时会将数据库下所有的表连同删除

    3、创建表

    创建表语法:

    create table 表名(
    字段名 数据类型 约束条件,
    字段名 数据类型 约束条件,
    字段名 数据类型 约束条件,
    )
    

    例如创建一个emp表,字段:ename、hiredate、sal,数据类型:varchar(10)、date、int(2)(后面会介绍数据类型)

    create table emp(
    ename varchar(10),
    hiredate date,
    sal decimal(10,2),
    deptno int(2)
    );
    

    创建完成后可以输入以下命令查看表结构:
    desc 表名

    mysql> desc emp;
    +----------+---------------+------+-----+---------+-------+
    | Field    | Type          | Null | Key | Default | Extra |
    +----------+---------------+------+-----+---------+-------+
    | ename    | varchar(10)   | YES  |     | NULL    |       |
    | hiredate | date          | YES  |     | NULL    |       |
    | sal      | decimal(10,2) | YES  |     | NULL    |       |
    | deptno   | int(2)        | YES  |     | NULL    |       |
    +----------+---------------+------+-----+---------+-------+
    4 rows in set (0.01 sec)
    

    但是desc命令显示的信息不是最全的,全面信息可以用如下命令:
    show create table +表名G;

    mysql> show create table empG;
    *************************** 1. row ***************************
           Table: emp
    Create Table: CREATE TABLE `emp` (
      `ename` varchar(10) DEFAULT NULL,
      `hiredate` date DEFAULT NULL,
      `sal` decimal(10,2) DEFAULT NULL,
      `deptno` int(2) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)
    

    G是使记录竖向排列

    4、删除表

    删除表的命令如下:
    drop table 表名:
    列如删除数据库中的emp表

    drop table emp;
    

    5、修改表

    修改表设计到多方面,修改字段,删除字段、修改数据、修改数据类型以及约束条件等。
    表的修改都使用到alter table语句

    5.1 修改表字段的数据类型

    语法:
    alter table 表名 modify 字段名 数据类型 约束条件;
    例如修改表emp的ename字段定义,把varchar(10)改为varchar(20):

    mysql> alter table emp modify ename varchar(20);
    Query OK, 0 rows affected (0.06 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    #查看表结构
    mysql> desc emp;
    +----------+---------------+------+-----+---------+-------+
    | Field    | Type          | Null | Key | Default | Extra |
    +----------+---------------+------+-----+---------+-------+
    | ename    | varchar(20)   | YES  |     | NULL    |       |
    | hiredate | date          | YES  |     | NULL    |       |
    | sal      | decimal(10,2) | YES  |     | NULL    |       |
    | deptno   | int(2)        | YES  |     | NULL    |       |
    +----------+---------------+------+-----+---------+-------+
    4 rows in set (0.01 sec)
    #ename字段的数据类型以及修改
    

    5.2增加表字段

    语法:
    alter table 表名 add 字段名 数据类型 约束条件 [first/after 表名];
    例如在emp中增加字段age,数据类型为int(3):

    alter table emp add age int(3);
    
    mysql> alter table emp add age int(3);
    Query OK, 0 rows affected (0.03 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    mysql> desc emp;
    +----------+---------------+------+-----+---------+-------+
    | Field    | Type          | Null | Key | Default | Extra |
    +----------+---------------+------+-----+---------+-------+
    | ename    | varchar(20)   | YES  |     | NULL    |       |
    | hiredate | date          | YES  |     | NULL    |       |
    | sal      | decimal(10,2) | YES  |     | NULL    |       |
    | deptno   | int(2)        | YES  |     | NULL    |       |
    | age      | int(3)        | YES  |     | NULL    |       |
    +----------+---------------+------+-----+---------+-------+
    5 rows in set (0.01 sec)
    

    可以在语句后面加first为加到表首字段,after+字段名表示在谁后面

    5.3删除表字段

    语法:alter table emp drop 字段名;
    举例:删除age字段

    mysql> alter table emp drop age;
    Query OK, 0 rows affected (0.03 sec)
    Records: 0  Duplicates: 0  Warnings: 0
    
    mysql> desc emp;
    +----------+---------------+------+-----+---------+-------+
    | Field    | Type          | Null | Key | Default | Extra |
    +----------+---------------+------+-----+---------+-------+
    | ename    | varchar(20)   | YES  |     | NULL    |       |
    | hiredate | date          | YES  |     | NULL    |       |
    | sal      | decimal(10,2) | YES  |     | NULL    |       |
    | deptno   | int(2)        | YES  |     | NULL    |       |
    +----------+---------------+------+-----+---------+-------+
    4 rows in set (0.01 sec)
    

    5.4字段改名

    语法:alter table 表名 change 字段名 新字段名 [约束条件]:

    alter table emp change age age1 int(4);
    

    注意:change 和modify都可以修改表的定义,不同的是change后面需要两次列表(新旧)

    5.5修改表名

    语法: alter table 表名 rename 新表名;

    alter table emp rename emp1;
    
  • 相关阅读:
    【Oracle】修改oracle数据库的字符集
    【OS_Linux】Centos7 设置定时任务
    【 DB_Oracle】Oracle多表关联更新
    Java后端技术路线
    【 OS_Linux】centos下查找jdk的安装路径
    【实用工具】Notepad++的主题和字体设置
    【OS_Linux】Linux删除指定日期之前的文件
    【OS_Windows】windows下删除指定日期前的文件
    C#计算一段程序运行时间的三种方法
    Win10 新功能 改变显示器色彩
  • 原文地址:https://www.cnblogs.com/Kingfan1993/p/9845776.html
Copyright © 2011-2022 走看看