zoukankan      html  css  js  c++  java
  • 数据库DDL

    自己对数据库的整理,也是对自己知识的梳理

    SQL ( Structure query language ) 结构化查询语言

    SQL语言分为4个部分

    • 1、DDL(Data Definition Languages)语句:数据定义语言,主要负责定义字段,数据库,表,列,索引等。常用的语句主要包括,create、drop、alter等。
    • 2、DML(Data Manipulation Languages)语句:数据操作语言,主要负责添加、删除、更新和查询数据库记录,并检查数据的完整性。常用的语句包括,insert,delete,update,select等
    • 3 、DQL(data question language) 查询
    • 4、 DCL(Data control Languages)语句:数据控制语句,主要负责控制不同数据段直接的许可和访问,定义数据库,表,字段,用户的访问权限和安全级别,常用的语句包括,grant revoke等。

    DDL语句

    DDL 主要是对数据库内部对象进行创建,删除,修改等的
    操作语句。(对库和表结构的操作)
    
    和DML的区别:DML时针对表内部数据操作,而不涉及表的定义结构修改。(对数据的操作)
    
    DCL:主要是权限管理,一般由管理员使用,开发人员很少使用
    

    1. 库的操作

    • 命令行输入mysql -u root -p 输入密码进入

    每条SQL语句结束,用‘;’,或者‘g’ 表示结束

    创建数据库 test1

    CREATE DATABASE test1;
    结果:Query ok,1 row affected (0.00 sec) 表示创建成功
    
    如果test1库已经存在会返回一下结果
    ERROR 1007 (HY000): Can't create database 'test1'; database exists
    

    想查看系统中有哪些库:

    show database;
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sakila             |
    | sys                |
    | test1              |
    | world              |
    +--------------------+
    7 rows in set (0.00 sec)
    从上面结果可以看到有很多库,其他库都是系统内置,我们暂时可以不去理会
    

    进入到指定的数据库中:USE test1

    切换数据库 USE 库名
    
    mysql> USE test1;
    Database changed
    

    查看当前库中的所有的表

    要查看指定库中的表  必须使用USE切换到指定的库里然后执行
    show tables;
    
    mysql> show tables;
    Empty set (0.00 sec)
    
    test1库是刚创建的库,里面什么都没有 提示Empty
    

    删除库

    drop database 库名
    
    mysql> drop database test1;
    Query OK, 0 rows affected (0.23 sec)
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sakila             |
    | sys                |
    | world              |
    +--------------------+
    6 rows in set (0.00 sec)
    
    执行完命令我们在通过 show databases; 查看系统中所有的库发现test1没有了
    注意:数据库删除后,下面所有的表数据都会全部删除,所以删除前一定要慎重并做好数据备份
    

    库操作总结:

    • 查看所有库: show databases;
    • 创建库: CREATE DATABASE 库名
    • 切换库: USE 库名
    • 查看当前库中所有的表: show tables;

    2.表操作

    查看当前表结构: desc 表名;

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

    创建表:

    cerate table class(
        id int(10) unsigned not null auto_increment primary key,
        cname varchar(50)
    )default charset=utf8
    
    class 为表名 
    id 和 cname 是字段名,列名
    int(10) varchar(50) 字段类型
    unsigned not null ... 是字段约束 
    

    查看表结构:

    desc 表名
    
    mysql> desc class;
    +-------+------------------+------+-----+---------+----------------+
    | Field | Type             | Null | Key | Default | Extra          |
    +-------+------------------+------+-----+---------+----------------+
    | id    | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
    | cname | varchar(30)      | YES  |     | NULL    |                |
    +-------+------------------+------+-----+---------+----------------+
    2 rows in set (0.00 sec)
    

    查看建表语句:

    mysql> show create table classG;
    *************************** 1. row ***************************
           Table: class
    Create Table: CREATE TABLE `class` (
      `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
      `cname` varchar(30) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)
    
    ERROR: 
    No query specified
    

    删除表:

    mysql> drop table class;
    Query OK, 0 rows affected (0.00 sec)
    

    修改表结构:

    对于已经建立好的表,尤其是有大量数据的表,如果需要做一些结构上的修改,可以先将表删除,然后重新建表,但是这样做需要做一些而外的工作,如果有服务正在访问,对服务也会产生影响

    所以大多数情况下使用下面的命令修改

    alter table 表名 modeify 字段名 字段类型和约束
    

    添加字段:

    alter table 表名 add 新字段名 字段类型和约束
    

    删除字段;

    alter table 表名 drop 字段名
    

    修改字段名:

    alter table 表名 change 旧字段名 新字段名  字段类型和约束
    

    注意:modify 和 change 都可以修改字段 不同的是 change 后面必须写两次字段名

    指定字段添加的位置:

    前面添加字段都是将字段默认添加到最后
    
    如果我向将字段添加到最前面
    alter table class add 字段名 字段类型和约束 first
    
    如果我想将字段放到指定字段的后面
    alter table class add 字段名和字段约束 after 指定的字段名
    

    修改表名

    alter table class rename 新表名
    

    表操作总结:

    创建表
    查看表结构
    删除表
    修改表结构
    修改表名
    

    DDL语句 库和表的操作

  • 相关阅读:
    6.1成果(冲刺2.10)
    5.31成果(冲刺2.9)
    5.30成果(冲刺2.8)
    5.29成果(冲刺2.7)
    5.28成果(冲刺2.6)
    5.27成果(冲刺2.5)
    5.26成果(冲刺2.4)
    5.25成果(冲刺2.3)
    Nginx location匹配后 跳转问题
    记一次centos上发布core,访问502的bug
  • 原文地址:https://www.cnblogs.com/zhanghuanyu/p/10153031.html
Copyright © 2011-2022 走看看