[1]数据库mySQL学习笔记

125 阅读6分钟
  • 概念性问题(简略解释):
    • 什么是数据库:用于存储、管理、检索大量数据的系统;

    • 什么是SQL:结构化查询语言;

    • 数据库的服务器、数据库、表的关系:

        1. mysql的服务只有一个,在服务上面创建数据库DB;
        2. 一个服务可以创建多个数据库;
        3. 一个数据库里面可以创建多个表;
        4. 客户端通过使用mysql服务来访问数据库;
        5. phpStudy的作用就是去搭建mySQL服务;
        6. navicat只是使用mySQL服务的一个工具,而不是mySQL本身;
        7. 真正使用mySQL的方式就是mysql语句;
       
      

image.png

  • 使用mySQL要用到的2个软件:
    • phpStudy:可以用来搭建一些服务、网站用于我们的学习和使用,是搭建在我们的物理机上面;
    • navicate:具体使用mySQL的软件;

image.png

image.png

  • 具体使用操作: -phpStudy要点击启动,让 Apache、MySQL这两个都显示绿色才可以正常使用;

image.png

  • 创建数据库并连接: 刚创建的时候有4个默认数据库
  1. information_schema:存放数据库里面的一些表,例如table表;
  2. mysql:是核心数据库,主要存储mysql服务器的一些信息,比如用户的账号、权限;
  3. performance_schema:用来记录数据库运行的性能数据;
  4. test:用来测试和实验;

image.png

  • 点击新建查询:在空白处输入sql语句(即对数据库执行的一些语句);(支持补全)

image.png

  1. 创建数据库命令:create database (数据库名)

  2. 查询数据库是否创建成功:show databases

    下面来实践一下,注意语句要以分号结尾;语句写完点击运行,结果如下:

image.png ok即表明运行成功; 也可以用show databases,查看所有数据库:

image.png 可以看到名为"practice20250107"的数据库创建成功; 也可以刷新后在左侧栏直接看到;

  1. 在创建数据库的时候指定字符集:create database (数据库名) character set utf8;

    使用实例如下:

image.png

4.也可以改变数据库的字符集:alter database (数据库名) character set (字符集名);

使用实例如下:

image.png

5.删除数据库:drop database (数据库名);

使用实例如下:

image.png

  • 数据库常用的数据类型介绍(创建表时常用):
    • 数值:浮点型

        1.     float:占用4个字节,用于表示单精度浮点数;
        2.     double:占8个字节,用于表示双精度浮点数;
        3.     decimal:用于表示高精度的小数,其精度和计数方法可以指定,以适应特定的需求(续爱数段后的位数更多,一般银行使用);
      
    • 数值:整型

image.png

  • 日期/时间:

image.png

  • 字符串:

image.png

根据具体需要选择合适的数据类型;

-charvarchar用的最多,是数据库中最常见的数据类型;
- char(定长):空下的存储空间会被空格填满;
- varchar(边长)空下的存储空间不会被占用;
  • 数据库服务器、数据库、表的关系: (avicat是用于帮助使用mysql服务的软件,实际应用中不会使用navicat,而是直接使用命令)

  • 创建表:

    • 第一步:不同的列的列名要在创建表的时候声明清楚(ID、name等等),且创建表的时候要去申明每一列的数据类型(比如字符串、浮点数等等)
    • 第二步:填充表中的内容,ID列从1~5,用整型int;name列内容都是中文,可以用char和varchar;price列的内容都是2位小数,可以用浮点型double;stock库存列内容都是整数,可以用int;insert_time列的内容都是日期,数据类型可以用date;
  • 实操

    • 创建表:用命令CREATE TALBE 表名(列名 数据类型,列名 数据类型,···);
      • 20的意思是20个字符;
      • use YYY表明我们在YYY数据库中创建表;
    • 创建之后可以查询表的结构:使用命令desc+表名;

image.png

image.png

从这里可以看到表的结构信息:

image.png

这里的null表示该数据可否为空,即可否什么都不放; key值是可以用来配置的,创建表的时候可以配置主键、外键; 以上,我们的表的框架结构就搭建好了,剩下的就是向里面填充数据;

  • 修改表的基本操作:
    • 改表名:alter table 表 名 rename to 新表名;[1]

    • 添加列:alter table 表 名 add 列名 数据类型;[2]

    • 改数据类型:alter table 表 名 modify 列名 新数据类型;[3]

    • 改列名:alter table 表 名 change 列名 新列名 数据类型;[4]

    • 删除列:alter table 表名 drop 列名;[5]

    • 删除表:drop table 表 名;[6]

      (如果避免报错的话可以写成drop table if not exists 表名;)

[1] image.png

[2] image.png

[3] image.png

[4] image.png

[5] image.png

[6] image.png

  • 填充表的数据:
    • insert into 表名 (列名1,列名2,列名3,···) values(X1,X2,X3···)
      • 其中values括号中的是每一列的同一行对应的数据;
    • 例如:INSERT into product (id,name,price,insert_time) VALUES(1,'手机',3999.99,25,'2024-10-20');[1]
      • 这里是填充了第一行的数据。
    • 想要查询表中的数据可以用*:select * from product;其中 * 表示所有,故这里查询的是product表中的所有数据,只是我们目前只填充了一行数据;
    • 如果同样的命令我们执行两次,就会填充两行数据进去;[2]
    • 下面我们再添加一行数据进去*:INSERT into product (id,name,price,stock,insert_time) VALUES(2,'电脑',8999.99,8,'2024-10-20');[3]
    • 为了更快地填充数据,表名后括号以及列名都可以省略不写*:INSERT into product VALUES(3,'冰箱',12999.99,16,'2024-10-20');[4]
    • 同样也可以两行数据一起填充(批量填充数据):INSERT into product VALUES(4,'洗衣机',9999.99,16,'2024-10-20'),(5,'微波炉',8888.88,50,'2024-10-20');[5] (注:desc用于查表的结构,select用于查表的数据;)

[1] image.png

[2] image.png

[3] image.png

[4] image.png

[5] image.png

  • 对表的内容进行修改、删除:
    • 更新修改表格数据:update 表名 set 被修改数据列名=修改后目标值 where 条件句;
      • 例如:UPDATE product set price=3500 where name='手机';
      • 上面的where相当于条件判断,用于确定要修改第几行的price的值;
      • 但是注意这种方法不适用于有相同值的情况,可以看到表中的两行手机的价格都被改变了,因为它们的name都是'手机';
      • 再改一个冰箱的价格:UPDATE product set price=6666.66 where name='冰箱';[2]
      • 这里的条件句也可以是根据ID值判断,逻辑同上;
    • 删除表中的数据:delete from 表 名 where 条件句;
      • 例如:DELETE FROM product WHERE name='微波炉';[3]

[1] image.png

[2] image.png

[3] image.png