- 概念性问题(简略解释):
-
什么是数据库:用于存储、管理、检索大量数据的系统;
-
什么是SQL:结构化查询语言;
-
数据库的服务器、数据库、表的关系:
1. mysql的服务只有一个,在服务上面创建数据库DB; 2. 一个服务可以创建多个数据库; 3. 一个数据库里面可以创建多个表; 4. 客户端通过使用mysql服务来访问数据库; 5. phpStudy的作用就是去搭建mySQL服务; 6. navicat只是使用mySQL服务的一个工具,而不是mySQL本身; 7. 真正使用mySQL的方式就是mysql语句;
-
- 使用mySQL要用到的2个软件:
- phpStudy:可以用来搭建一些服务、网站用于我们的学习和使用,是搭建在我们的物理机上面;
- navicate:具体使用mySQL的软件;
- 具体使用操作: -phpStudy要点击启动,让 Apache、MySQL这两个都显示绿色才可以正常使用;
- 创建数据库并连接: 刚创建的时候有4个默认数据库
- information_schema:存放数据库里面的一些表,例如table表;
- mysql:是核心数据库,主要存储mysql服务器的一些信息,比如用户的账号、权限;
- performance_schema:用来记录数据库运行的性能数据;
- test:用来测试和实验;
- 点击新建查询:在空白处输入sql语句(即对数据库执行的一些语句);(支持补全)
-
创建数据库命令:create database (数据库名)
-
查询数据库是否创建成功:show databases
下面来实践一下,注意语句要以分号结尾;语句写完点击运行,结果如下:
ok即表明运行成功;
也可以用show databases,查看所有数据库:
可以看到名为"practice20250107"的数据库创建成功;
也可以刷新后在左侧栏直接看到;
-
在创建数据库的时候指定字符集:create database (数据库名) character set utf8;
使用实例如下:
4.也可以改变数据库的字符集:alter database (数据库名) character set (字符集名);
使用实例如下:
5.删除数据库:drop database (数据库名);
使用实例如下:
- 数据库常用的数据类型介绍(创建表时常用):
-
数值:浮点型
1. float:占用4个字节,用于表示单精度浮点数; 2. double:占8个字节,用于表示双精度浮点数; 3. decimal:用于表示高精度的小数,其精度和计数方法可以指定,以适应特定的需求(续爱数段后的位数更多,一般银行使用); -
数值:整型
-
- 日期/时间:
- 字符串:
根据具体需要选择合适的数据类型;
-char和varchar用的最多,是数据库中最常见的数据类型;
- 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+表名;
- 创建表:用命令CREATE TALBE 表名(列名 数据类型,列名 数据类型,···);
从这里可以看到表的结构信息:
这里的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]
[2]
[3]
[4]
[5]
[6]
- 填充表的数据:
- 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用于查表的数据;)
- insert into 表名 (列名1,列名2,列名3,···) values(X1,X2,X3···)
[1]
[2]
[3]
[4]
[5]
- 对表的内容进行修改、删除:
- 更新修改表格数据: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]
- 更新修改表格数据:update 表名 set 被修改数据列名=修改后目标值 where 条件句;
[1]
[2]
[3]