• 数据库开发——MySQL——基本操作


    一、SQL语句

    有了mysql这个数据库软件,就可以将程序员从对数据的管理中解脱出来,专注于对程序逻辑的编写。

    mysql服务端软件帮我们管理好文件夹以及文件,前提是作为使用者需要下载mysql的客户端,或者其他模块来连接到mysql,然后使用mysql软件规定的语法格式去提交自己命令,实现对文件夹或文件的管理。

    该语法即sql(Structured Query Language 即结构化查询语言),SQL语言主要用于存取数据、查询数据、更新数据和管理关系数据库系统,SQL语言由IBM开发。

    SQL语言分为3种类型:

    1、DDL语句    数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER
    
    2、DML语句    数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE、查询数据SELECT
    
    3、DCL语句    数据库控制语言: 例如控制用户的访问权限GRANT、REVOKE
    

    MySQL中建立的库其实就是文件夹。

    语法(help create database)

    CREATE DATABASE 数据库名 charset utf8;
    

    数据库的命名规则

    可以由字母、数字、下划线、@、#、$
    
    区分大小写
    
    唯一性
    
    不能使用关键字如 create select
    
    不能单独使用数字
    
    最长128位
    

    练习

    create database testdb charset utf8;
    

    在这里插入图片描述
    可以发现,在MySQL的安装路径中的data目录里,多了一个文件夹:
    在这里插入图片描述

    drop database testdb;
    

    在这里插入图片描述
    可以发现,data目录下的相应文件夹也不见了:
    在这里插入图片描述

    更改库的编码:

    alter database testdb charset gbk;
    

    在这里插入图片描述

    查看当前创建的库:

    show databases;
    

    在这里插入图片描述
    可以看到当前有五个数据库,但是我们看见data目录下只有四个文件夹,这是因为除了咱们创建的testdb之外的四个数据库都是系统数据库

    information_schema:虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息、列信息、权限信息、字符信息等
    
    performance_schema:MySQL 5.5开始新增一个数据库:主要用于收集数据库服务器性能参数,记录处理查询请求时发生的各种事件、锁等现象
    
    mysql:授权库,主要存储系统用户的权限信息
    
    sys:mysql5.7增加了sys系统数据库,通过这个库可以快速的了解系统的元数据信息,这个库确实可以方便DBA发现数据库的很多信息,解决性能瓶颈都提供了巨大帮助
    

    查看数据库详情:

    show create database testdb;
    

    在这里插入图片描述

    切换数据库操作:

    use testdb;
    

    在这里插入图片描述

    表介绍

    表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,称为表的字段。

    在这里插入图片描述

    学号、姓名、专业、生日和手机号称为字段,其余的,一行内容称为一条记录。

    创建表语法:

    create table 表名(
    字段名1 类型[(宽度) 约束条件],
    字段名2 类型[(宽度) 约束条件],
    字段名3 类型[(宽度) 约束条件]
    );
    

    注意:

    1. 在同一张表中,字段名是不能相同
    2. 宽度和约束条件可选
    3. 字段名和类型是必须的
    create table people(id int, name char);
    

    在这里插入图片描述

    复制表

    复制表结构+记录 (key不会复制: 主键、外键和索引)

    create table new_service select * from service;
    

    只复制表结构

    select * from service where 1=2;        //条件为假,查不到任何记录
    
    create table new1_service select * from service where 1=2;  
    
    create table t4 like employees;
    

    drop table people;
    

    在这里插入图片描述

    alter table people modify name char(3);
    
    alter table people change name nickname char(5);
    

    在这里插入图片描述
    修改表结构

    1. 修改表名
          ALTER TABLE 表名 
                              RENAME 新表名;
    2. 增加字段
          ALTER TABLE 表名
                              ADD 字段名  数据类型 [完整性约束条件…],
                              ADD 字段名  数据类型 [完整性约束条件…];
          ALTER TABLE 表名
                              ADD 字段名  数据类型 [完整性约束条件…]  FIRST;
          ALTER TABLE 表名
                              ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;
    3. 删除字段
          ALTER TABLE 表名 
                              DROP 字段名;
    4. 修改字段
          ALTER TABLE 表名 
                              MODIFY  字段名 数据类型 [完整性约束条件…];
          ALTER TABLE 表名 
                              CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
          ALTER TABLE 表名 
                              CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];
    

    show tables;
    

    在这里插入图片描述

    查看表的数据类型

    desc innodb_t1;
    

    在这里插入图片描述

    记录

    insert into people values(1, "Alex"),(2, "Coco"),(3, "Bei");
    

    在这里插入图片描述

    delete from people where id=3;
    

    在这里插入图片描述

    update people set nickname="Baby" where id=3;
    

    在这里插入图片描述

    select * from people;
    

    在这里插入图片描述

    示例

    创建数据库

    mysql> use db1;
    Database changed
    

    创建表

    mysql> create table t1(
        -> id int,
        -> name varchar(50),
        -> sex enum("male", "female"),
        -> age int(3)
        -> );
    Query OK, 0 rows affected (0.55 sec)
    

    查看表描述

    mysql> desc t1;
    +-------+-----------------------+------+-----+---------+-------+
    | Field | Type                  | Null | Key | Default | Extra |
    +-------+-----------------------+------+-----+---------+-------+
    | id    | int(11)               | YES  |     | NULL    |       |
    | name  | varchar(50)           | YES  |     | NULL    |       |
    | sex   | enum('male','female') | YES  |     | NULL    |       |
    | age   | int(3)                | YES  |     | NULL    |       |
    +-------+-----------------------+------+-----+---------+-------+
    4 rows in set (0.00 sec)
    

    插入数据

    mysql> insert into t1 values
        -> (1, "Alex", "male", 19),
        -> (2, "Coco", "female", 19);
    Query OK, 2 rows affected (0.17 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    

    查询表内容

    mysql> select * from t1
        -> ;
    +------+------+--------+------+
    | id   | name | sex    | age  |
    +------+------+--------+------+
    |    1 | Alex | male   |   19 |
    |    2 | Coco | female |   19 |
    +------+------+--------+------+
    2 rows in set (0.00 sec)
    

    只插入id数据并查询

    mysql> insert into t1(id) values
        -> (3),
        -> (4);
    Query OK, 2 rows affected (0.07 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    mysql> select * from t1;
    +------+------+--------+------+
    | id   | name | sex    | age  |
    +------+------+--------+------+
    |    1 | Alex | male   |   19 |
    |    2 | Coco | female |   19 |
    |    3 | NULL | NULL   | NULL |
    |    4 | NULL | NULL   | NULL |
    +------+------+--------+------+
    4 rows in set (0.00 sec)
    

    查看表结构

    mysql> show create table t1G
    *************************** 1. row ***************************
           Table: t1
    Create Table: CREATE TABLE `t1` (
      `id` int(11) DEFAULT NULL,
      `name` varchar(50) DEFAULT NULL,
      `sex` enum('male','female') DEFAULT NULL,
      `age` int(3) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    1 row in set (0.00 sec)
    
  • 相关阅读:
    大数据是否有可能有效配置资源?
    在大数据时代,我们需要数据售货员
    在大数据时代,我们需要数据售货员
    粗糙的贝叶斯转化概率预测模型
    粗糙的贝叶斯转化概率预测模型
    MVC中的ViewData、ViewBag和TempData
    58被微信玩弄,你知道吗?
    你的以太网速度足够快吗?四种更快的速度正在路上······
    hibernate预编译SQL语句中的setParameter和setParameterList
    创建单线性链表的不同表示方法和操作
  • 原文地址:https://www.cnblogs.com/AlexKing007/p/12337999.html
Copyright © 2020-2023  润新知