MySQL学习历程

149 阅读5分钟

SQL基本语法

  • 登录mysql

        mysql -h localhost -u root -p  
        然后输入密码即可
    
  • 退出mysql

        exit;
    

数据库的基本操作

  • 查看所有数据库

        SHOW DATABASES;
    
  • 创建数据库

        CREATE DATABASE database_name;  
        eg:  
            CREATE DATABASE test_db; ` 这样将会创建一个名叫test_db的数据库 `  
    
  • 查看某个数据库的信息

        SHOW CREATE DATABASE database_name \G  
        eg:
            SHOW CREATE DATABASE test_db \G ` 这样的话就会把一个数据库的所有的信息展示出来了 `
    
  • 查看数据库中表格的信息

        show tables; # 前提是已经切换到这个表中了(use database_name;)
    
  • 删除数据库

        DROP DATABASE database_name;  
        eg:
            DROP DATABASE test_db; ` 这样我们刚刚创建的名叫test_db的数据库就被删除了 `
        PS:
            DROP 为删除命令
            DROP TABLE table_name;` 这样就会删除一个table `
    
  • 使用某个数据库

        USE database_name;  
        eg:  
            USE test_db;  
    

表格的基本操作

  • 创建表单

        CREATE TABLE 表名
        (
            字段名1 数据类型 列级别约束条件,
            字段名2 数据类型 列级别约束条件,    
            ...
        );
        CREATE TABLE tb_emp1
        (
            id  INT(11),
            name VARCHAR(25),
            depeId INT(11),
            salary FLOAT
        );
    
  • 指定主键

        #在创建时用列级别约束条件直接指定
        CREATE TABLE tb_emp1
        (
            id  INT(11) PRIMARY KEY,
            name VARCHAR(25),
            deptId INT(11),
            salary FLOAT
        );
    
        也可以写成
        CREATE TABLE tb_emp1
        (
            id  INT(11),
            name VARCHAR(25),
            deptId INT(11),
            salary FLOAT,
            PRIMARY KEY(id)
        );
    
  • 向表格中添加信息

    insert into <表名> (参数   注意此处的顺序可以与表格创建时的顺序不一样,但是一定要包含所有的参数);
    eg:
            insert into students (id, name);
        -> values(2018303012, 'pxc'), (2018303000, 'xxx');
    
  • 查看表格信息

        select * from <表名>;
        eg:
            select * from students;
    
        将有以下显示:
        +----+------+
        | id | name |
        +----+------+
        | 11 | zrs  |
        | 12 | pxc  |
        | 13 | hz   |
        +----+------+
    
        其实,*代表了选择显示所有的列,如果是输入 "select id from students;" ,将会有以下显示:
        +----+
        | id |
        +----+
        | 11 |
        | 12 |
        | 13 |
        +----+
    
  • 查看表格结构

    法一:
        desc <表名>;
        describe <表名>;
        # 两种写法效果一致
        eg:
            desc students;
            describe students;
        将有以下显示:
        +-------+-------------+------+-----+---------+-------+
        | Field | Type        | Null | Key | Default | Extra |
        +-------+-------------+------+-----+---------+-------+
        | id    | int(11)     | NO   | PRI | NULL    |       |
        | name  | varchar(25) | YES  |     | NULL    |       |
        +-------+-------------+------+-----+---------+-------+
        NULL表示一列表示这个字段是否可以为空
        Key表示该字段是否编制索引,PRI表示该字段为主键,UNI表示该列是UNIQUE索引的一部分,MUL表示该列中某个给定值允许出现多次
        Default表示该字段是否有默认值
        Extra表示可以获取的与给定列有关的附加信息
    
    法二:
        show create table <表名> \G; # 加上\G是为了更清晰的展示
        eg:
            show create table students \G;
        将有以下显示:
        *************************** 1. row ***************************
        Table: students
        Create Table: CREATE TABLE `students` (
        `id` int(11) NOT NULL,
        `name` varchar(25) DEFAULT NULL,
        PRIMARY KEY (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
    
    
        不加\G:
        show create table <表名>;
        eg:
            show create table students;
        将有以下显示:(可以看出比较乱)
        +----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
        | Table    | Create Table
                                                                        |
        +----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
        | students | CREATE TABLE `students` (
        `id` int(20) NOT NULL,
        `name` varchar(30) DEFAULT NULL,
        PRIMARY KEY (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
        +----------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
    
  • 修改数据表
    使用alter table <表名>修改
    基本格式为alter table <表名> + 进行的修改操作

        修改操作包括
        rename <新表名>      (修改表名)
        add <字段名> <字段数据类型> [约束条件] [first | after 已存在的字段名]    (增加字段)
        change <旧字段名> <新字段名> <新数据类型>     (修改字段名)
        drop <字段名>    (删除字段)
        drop foreign key <外键约束名>
        modify <字段名> <新数据类型>   (修改字段的数据类型)
        modify <字段名> <数据类型> first | after 已存在的字段名 (修改字段的位置)
        engine=<新引擎名>   (修改该表的存储引擎)
    
    • 修改表名(rename)
        alter table <旧表名> rename [TO(可加可不加)] <新表名>;
        eg:
        alter table students rename students_hhh; # alter table students rename to students_hhh;效果一样
        修改后使用show tables;看表格信息如下:
        +-------------------+
        | Tables_in_test_db |
        +-------------------+
        | students_hhh      |
        +-------------------+
        可以看到表的名字已经改变了(再改回来,以便以后好继续总结)
    
    • 修改字段的数据类型(modify)
        alter table <表名> modify <字段名> <数据类型>;
        eg:
        alter table students modify name varchar(30); # 不要瞎搞,不要原来保存着VARCHAR的数据然后你又要改成int,那样会出现error的.但是如果此表这一列中原来为空,可以修改数据类型.
    
    • 修改字段名(change)
        alter table <表名> change <旧字段名> <新字段名> <新数据类型>;
        alter table students change name newname varchar(30); # 依旧不要瞎搞,不要把之前保存着varchar的数据然后又改成int,那样会出现error的.但是如果此表这一列中原来为空,可以修改数据类型.
    
    • 添加字段(add)
        alter table <表名> add <新字段名> <数据类型> [约束条件] [first | after 已存在的字段名]; first 或after指定添加的字段的位置.
        alter table students add sex varchar(1) after id;
    
    • 删除字段(drop)
        alter table <表名> drop <字段名>;
        alter table students drop sex;
    
  • 删除不存在关联的表

        drop table [if exists]<表1,表2,...,表n>;
    
  • 删除被其他主键关联的表

        首先要解除外键约束
        alter table <表名> drop foreign key <外键的名称>;
        然后再删除表格
        drop table [if exists]<表名>;