• MySQL(一):库的操作、数据类型和表的操作


    一、操作数据库

    此处的数据库就指的是MySQL服务器中包含的一个个数据库。

    1.1 创建数据库

    【SQL语句】

    create database 数据库名;
    
    • 1

    【注意】:

    • create、database都是关键字且不区分大小写
    • 单词之间要有空格(一个、多个多可以)
    • 数据库名的定义规则与变量的命名规则类似(由数字、字母、下划线组成且数字不能开头)
    • 语句末尾的;不要忘写

    【使用示例】
    在这里插入图片描述
    【补充】:

    1. 没执行成功一行SQL语句都会显示执行时间,例如上面的0.01 sec,0.01sec对于计算机来说是很慢的,对于关系型数据库来说,操作效率是比较低的(读取磁盘、关系结构等所导致),这也是非关系型数据库产生的原因,非关系型数据库的约束更少,效率更高,更适合当下流行的"分布式系统"。

    2. 创建数据库的时候还可以指定字符集和校验规则
      字符集,描述了存储的数据都支持什么样的字符
      校验规则,描述了当前字符之间如何进行比较

    create database if not exists 数据库名  character set utf8;
    
    • 1

    如果要创建的数据库不存在就创建,该数据库使用的字符集为utf8

    【关于字符集】

    字符集的本质是,使用数字表示各种语言文字的符号,常见的字符集有ASCII,GBK和UTF8,MySQL默认使用拉丁文,不支持中文,要想插入中文需要手动配置,UTF8采用变长编码的方式,如果想表示的字符是英文字符那么一个字节就够了,如果想要表示的字符是和汉字,可能需要用2~4个字节(因为汉字常见字加生僻字有6w左右),UTF8被视为是"世界通用的字符编码",也是当下最主流使用的字符编码

    【有坑代码】:下面的代码使用的C语言编写

    char* s="秀";
    printf("%d\n",strlen(s));
    //代码所表达的含义是:一个汉字在存储中占用几个字节
    //答案:具体看是采用的哪种编码方式,GBK为汉字编码占用2个字节
    //UTF8为汉字编码占用2~4个字节
    
    • 1
    • 2
    • 3
    • 4
    • 5

    1.2 显示数据库

    【SQL语句】

    show databases;
    
    • 1

    【使用示例】
    在这里插入图片描述

    1.3 使用数据库

    要想针对某个数据库进行具体操作(存入数据/查询数据等)就需要先选中数据库
    【SQL语句】

    use 数据库名;
    
    • 1

    【使用示例】
    在这里插入图片描述

    1.4 删除数据库

    【SQL语句】

    drop database 数据库名;
    
    • 1

    【注意】:

    • 删库操作非常危险,不要轻易尝试
    • 数据库删除以后,内部看不到对应的数据库,里边的表和数据全部被删除

    采取哪些措施能避免出现删库或者把删库的代价降到最低呢?

    1. 权限:不是每个人都能登录上数据库,即使登录数据库,也不是每个人都能修改,只有少数人才能修改/删除数据库
    2. 备份:将数据再拷贝一份,将一份数据写到两个数据库中等
    3. 硬盘数据恢复:如果已经删了库,还没有备份,就需要恢复硬盘数据
      当操作系统要删除文件的时候,为了提高删除操作的效率,在删除的时候并不是真正的把硬盘上之前保存的数据清除掉,而是将该盘块对应的状态设置为"无效状态",因此一旦出现误删除的时候,应该及时"断电",避免操作系统将这些盘块分配出去,导致数据被覆盖,如果数据被覆盖了那就无法恢复了

    二、MySQL的数据类型

    数据类型一方面能方便我们对数据进行处理,另一方面能对我们插入的数据进行校验和检查。

    2.1 数值类型

    分为整型和浮点型
    在这里插入图片描述
    【补充】:

    • FLOAT(M,D):M表示整个数字的有效数字位数不超过M;D表示数字的小数点后面的位数不超过D
    • DECIMAL(M,D):相比于FLOAT和DOUBLE能够更精确的表示小数,DEMICAL本质上是通过字符串来表示一个浮点数,对与FLOAT和DOUBLE类型表示的浮点数是不够精确的,例如计算0.1+0.2,结果可能就不是0.3,因此有了DEMICAL来更精确的表示小数,但同时也会带来时间和空间上的开销

    2.2 字符串类型

    在这里插入图片描述
    【补充】:

    • varchar(20):表示这个字段最多存储20个字符,也可能更短,动态的根据存入数据的长度来自适应空间
    • 一个字节表示的整数:有符号数的范围是-128 ~ 127;无符号数的范围是0~255
    • 两个字节表示的整数:有符号数的范围是-32768 ~ 32767,无符号数的范围是0~ 65535
    • 四个字节表示的整数:有符号数的范围是-21亿~ 21 亿,无符号数的范围是0~ 42亿9千万

    2.3 日期类型

    在这里插入图片描述
    【补充】:

    时间戳:从1970年1月1日0时0分0秒作为基准时刻,计算当前时刻与基准时刻的秒数之差,在计算机中存储的都是时间戳,而像下面这种,跟根据时间戳进行的换算,方便我们观察
    在这里插入图片描述

    三、对表的操作

    需要操作数据库中的表时,需要先使用该数据库:

    3.1 创建表

    【SQL语句】

    create table 表名 (列名 类型,列名 类型.....);
    
    • 1

    【使用示例1】
    在这里插入图片描述

    【注意】:

    • 在同一个数据库中,不能有两个名字相同的表
    • 表名和列名不能和SQL中的关键字冲突,但如果就是想用关键字作为表名或列名需要用反引号`将名字引起来
      在这里插入图片描述

    3.2 查看表

    查看当前选中的数据库中有哪些表
    【SQL语句】

    show tables;
    
    • 1

    【使用示例】
    在这里插入图片描述

    3.3 查看表结构

    查看表里的列和类型
    【SQL语句】

    desc 表名;
    
    • 1

    【使用示例】
    在这里插入图片描述

    3.4 删除表

    【SQL语句】

    drop table 表名;
    
    • 1

    【使用示例】
    在这里插入图片描述

    四、SQL练习

    有一个商店的数据,记录客户及购物情况,有以下三个表组成:

    • 商品表goods(商品编号goods_id,商品名goods_name, 单价unitprice, 商品类别category, 供应商provider)
    • 客户customer(客户号customer_id,姓名name,住址address,邮箱email,性别sex,身份证card_id)
    • 购买purchase(购买订单号order_id,客户号customer_id,商品号goods_id,购买数量nums)

    【SQL语句】

    create table goods(
      goods_id int,
      goods_name varchar(20),
      unitprice decimal(3,1),
      category varchar(20),
      provider varchar(20)
    );
    create table customer(
      customer_id int,
      name varchar(20),
      address varchar(20),
      email varchar(20),
      sex varchar(5),
       card_id int
    );
    create table purchase(
      order_id int,
      customer_id int,
      goods_id int,
      nums int 
    );
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述

  • 相关阅读:
    回归拟合 | 灰狼算法优化核极限学习机(GWO-KELM)MATLAB实现
    Qt SQL:QSqlQuery
    Python分支结构和循环结构
    react 项目商城中,显示或者隐藏组件(锚点)
    多线程-定时器、线程池
    湖仓一体(Lakehouse)架构的核心组件之存储层——Lakehouse 架构(三)
    Java类变量和类方法
    paddle 45 使用paddledetection做旋转框预测(预测自己的dota数据集)
    vue 封装Form 表单组件
    程序的编译与链接
  • 原文地址:https://blog.csdn.net/m0_60631323/article/details/126679621