zoukankan      html  css  js  c++  java
  • MySQL 初识

    数据库的存储结构是库->表结构,相关的数据存放在一个库中,库中按类分为多个表,这样的多级存放,提高了查询效率,也显得十分有逻辑。

    下面分别讲讲基本的数据库建立操作。

    对数据库的操作

    在一个运行MySQL的服务器上,可以创建多个数据库。要列出所有数据库,使用命令:

    mysql> SHOW DATABASES;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | test               |
    | school             |
    +--------------------+

    其中,information_schema、mysql、performance_schema和sys是系统库,不要去改动它们。其他的test、school是用户创建的数据库。

    创建新数据库:CREATE DATABASE <tabelname>;
    eg: mysql> CREATE DATABASE test;
        Query OK, 1 row affected (0.01 sec)
    
    删除数据库:DROP DATABASE <tablename>;
    eg: mysql> DROP DATABASE test;
        Query OK, 0 rows affected (0.01 sec)
    
    对一个数据库进行操作时,要首先将其切换为当前数据库:USE <tablename>; 
    eg: mysql> USE test; 
        Database changed

    对表的操作

    基本的操作:

    SHOW TABLES;              #列出当前数据库的所有表
    DROP TABLE <tablename>;   #删除表
    CREAT TABLE <tablename>;  #创建表
    #修改表名的两种方式:
    RENAME TABLE <tablename> TO <newname>;
    ALTER TABLE <tablename> RENAME TO <newname>;

    这里需要展开讲的是创建表操作,如果使用上面的语句创建一个表,得到的是空表,连有什么列,列的数据类型也没有定义,表的结构取决于往其中插入的第一条数据。通常,为了更加明确,我们在创建表时就应该定义好表的属性,有什么列,列的类型,是否有默认值,哪些列是主键、索引,使用什么引擎等。因此推荐写比较详细的创建语句。

    CREATE TABLE <tablename> (list1name type, list1name type…);    #指定列名和类型

    create语句中加入若干关键字,可以对列的特性进行约束。
    a.设置主键
    CREATE TABLE <tablename> (list1name type primary key auto_increment, list1name type…);
    在要设置为主键的列的类型后面加上primary key关键词,由Mysql 一些概念所述主键有四种,这里是自增型主键auto_increment.
    b.是否可以为NULL
    默认允许为NULL,若不允许该列为NULL,可以在列的类型后加入关键词not null.
    c.设置默认值
    所有的字段都可以设置默认值,如果不设置,默认的默认值为NULL。设置方法为在列的类型后加入关键词default 'shit'.
    d.指定编码格式
    若需指定表的编码格式,可在最后(括号后)加入指定的格式。如希望默认编码格式为utf8,末尾插入default charset = utf8.
    e.指定引擎
    若需指定特定的引擎,在末尾加上指定引擎。如指定为MyISAM,应加上ENGINE=MyISAM.

    查看表的结构

    #查看表的结构 两种方法
    SHOW COLUMNS FROM <tablename>; 
    DESC <tablename>; eg:DESC students; +----------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+----------------+ | id | bigint | NO | PRI | NULL | auto_increment | | class_id | bigint | NO | | NULL | | | name | varchar(100) | NO | | NULL | | | gender | varchar(1) | NO | | NULL | | | score | int | NO | | NULL | | +----------+--------------+------+-----+---------+----------------+

    对列的操作

    若需要对创建好的表进行修改,如修改列名,插入、删除列,设置主键、索引等,则需要用到关键字ALTER;

    删除列:
    ALTER TABLE <tablename> DROP <listname>;
    新增列:
    ALTER TABLE <tablename> ADD <listname> <type> <otherInfo>; #默认增加到末尾
    ALTER TABLE <tablename> ADD <listname> <type> <otherInfo> FIRST; #新增为第一列
    ALTER TABLE <tablename> ADD <listname> <type> <otherInfo> AFTER <listK>; #新增到名为listK的列之后
    修改列:
    ALTER TABLE <tablename> MODIFY <listname> <newtype> <newInfo>; #修改列的类型、其他信息
    ALTER TABLE <tablename> CHANGE <oldlistname> <newname> <type> <otherInfo>; #当需要修改列名时用change
    change也可以实现既修改列名,也修改其他属性。

    后面的文章都以两个表students表和classes表作示例,展示MySQL的其他语法。

     参考:廖雪峰的SQL教程

  • 相关阅读:
    vue react 路由是否包含id
    vue react初始化脚手架
    多线程编程基础
    模拟实现简化版List迭代器&嵌入List
    斐波那契数与二分法的递归与非递归算法及其复杂度分析
    C语言模拟实现多态
    C++智能指针剖析(下)boost::shared_ptr&其他
    C++智能指针剖析(上)std::auto_ptr与boost::scoped_ptr
    C++模板实现动态顺序表(更深层次的深浅拷贝)与基于顺序表的简单栈的实现
    C++—模板(2)类模板与其特化
  • 原文地址:https://www.cnblogs.com/cpcpp/p/13019865.html
Copyright © 2011-2022 走看看