mysql学习:单表的数据增删改查和内置函数

文章问题导向

mysql单表的数据增删改查如何操作?内置函数?

如果你都有了答案,可以忽略本文章,或去mysql学习导图寻找更多答案


学前数据准备

CREATE TABLE `student` (
  `sno` varchar(20) NOT NULL,
  `sname` varchar(20) NOT NULL,
  `ssex` varchar(10) NOT NULL,
  `class` varchar(20) DEFAULT NULL,
  `sbirthday` datetime DEFAULT NULL,
  `score` int DEFAULT NULL,
  PRIMARY KEY (`sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf;

INSERT INTO `student2` VALUES ('101', '小明', '男', '202001', '1988-08-08 00:00:00', '100');
INSERT INTO `student2` VALUES ('102', '李四', '男', '202002', '1988-08-09 00:00:00', '90');
INSERT INTO `student2` VALUES ('103', '王五', '女', '202001', '1988-06-08 00:00:00', '80');
INSERT INTO `student2` VALUES ('104', '秦明', '男', '202002', '1978-06-09 00:00:00', '70');
INSERT INTO `student2` VALUES ('105', '陈锋', '女', '202003', '1948-02-08 00:00:00', null);

select * from student;
+-----+-------+------+--------+---------------------+-------+
| sno | sname | ssex | class  | sbirthday           | score |
+-----+-------+------+--------+---------------------+-------+
| 101 |	小明  || 202001 | 1988-08-08 00:00:00 |   100 |
| 102 | 李四  || 202002 | 1988-08-09 00:00:00 |    90 |
| 103 | 王五  || 202001 | 1988-06-08 00:00:00 |    80 |
| 104 | 秦明  || 202002 | 1978-06-09 00:00:00 |    70 |
| 105 | 陈锋  || 202003 | 1948-02-08 00:00:00 |  NULL |
+-----+-------+------+--------+---------------------+-------+

常用内置函数

语法:fn(字段/*)

max() 计算某一列的最大值
min() 计算某一列的最小值
select max(score) count from student;
+-------+
| count |
+-------+
|   100 |
+-------+


count()  获取总数
select count(*) count from student;
+-------+
| count |
+-------+
|   5   |
+-------+


sum()    计算某一列的合计值,该列必须为数值类型
select sum(score) count from student;
+-------+
| count |
+-------+
|   340 |
+-------+


avg()    计算某一列的平均值,该列必须为数值类型,以不为null的数据平均分
select avg(score) count from student;
等于 
select avg(score) count from student where score is not null;
+---------+
| count   |
+---------+
| 85.0000 |
+---------+


coalesce(a,b,c)  合计行,配合group by(分组) 和 with rollup(合计,多出一行合计)使用。
参数:如果a == null,则选择b;如果b == null,则选择c;如果a != null,则选择a;如果a b c 都为null ,则返回为null。
select class, count(*) as 人数 from student2 group by class with rollup;
+--------+------+
| class  | 人数 |
+--------+------+
| 202001 |    2 |
| 202002 |    2 |
| 202003 |    1 |
| NULL   |    5 |
+--------+------+

按例子翻译:如果classnull,则使用总数替代,在这个例子中,实际上只有最后一行才会为null,因为用了with rollup多出来一行,一般用来当做合计行。
select coalesce(class, '总数') as 班级, count(*) as 人数 from student group by class with rollup;
+--------+------+
| 班级   | 人数  |
+--------+------+
| 202001 |    2 |
| 202002 |    2 |
| 202003 |    1 |
| 总数    |    5 |
+--------+------+

增删改查

增(插入)insert

语法一:声明插入的是什么字段
insert into tb_name (field1, field2) values(value1, value2)

语法二:按字段顺序插入
insert into tb_name values(value1, value2)

语法三:插入多条
insert into tb_name (field1, field2) values(value1, value2), (value1, value2);

insert into student (sno,sname,ssex) values(106, '阿牛', '男');

+-----+-------+------+--------+---------------------+-------+
| sno | sname | ssex | class  | sbirthday           | score |
+-----+-------+------+--------+---------------------+-------+
| 101 |	小明  || 202001 | 1988-08-08 00:00:00 |   100 |
| 102 | 李四  || 202002 | 1988-08-09 00:00:00 |    90 |
| 103 | 王五  || 202001 | 1988-06-08 00:00:00 |    80 |
| 104 | 秦明  || 202002 | 1978-06-09 00:00:00 |    70 |
| 105 | 陈锋  || 202003 | 1948-02-08 00:00:00 |  NULL |
| 106 | 阿牛   || NULL   | NULL                |  NULL |
+-----+-------+------+--------+---------------------+-------+

删delete

修改一般需要添加条件
语法:delete from tb_name where id = 1;

删除sno = 106的同学
delete from student where sno = 106;
Query OK, 1 row affected (0.47 sec)

删除student表的全部数据
delete from student;

改update

修改需要添加条件
语法:update tb_name set field = value where id = 1;

 将sno = 101的同学的sname 改为 ‘大神’
 
 update student set sname = '大神' where sno = 101;
 Rows matched: 1  Changed: 1  Warnings: 0

查select

查询一般需要添加条件
语法:select * from tb_name where id = 1;

select语法顺序

inner join > where > group by > having > order by > limit

字段

查询全部字段,不要条件
select * from user;
+-----+-------+------+--------+--
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于 PHP 后台管理系统的增删改查功能,通常会涉及到与数据库的交互。下面是一个简单的示例来说明如何实现这些功能: 1. 增加数据: 首先,你需要连接到数据库。可以使用 PHP 的内置函数 `mysqli_connect` 连接到 MySQL 数据库。然后,使用 SQL 语句 `INSERT INTO` 将数据插入到相应的数据库表中。 示例代码: ```php <?php $servername = "localhost"; $username = "your_username"; $password = "your_password"; $dbname = "your_database"; // 创建数据库连接 $conn = mysqli_connect($servername, $username, $password, $dbname); // 检查连接是否成功 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } // 获取用户输入的数据 $name = $_POST['name']; $email = $_POST['email']; // 构建 SQL 插入语句 $sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')"; // 执行 SQL 插入语句 if (mysqli_query($conn, $sql)) { echo "数据插入成功"; } else { echo "插入数据时出错: " . mysqli_error($conn); } // 关闭数据库连接 mysqli_close($conn); ?> ``` 2. 删除数据: 同样,你需要首先连接到数据库。然后,使用 SQL 语句 `DELETE FROM` 来删除相应的数据行。 示例代码: ```php <?php $servername = "localhost"; $username = "your_username"; $password = "your_password"; $dbname = "your_database"; // 创建数据库连接 $conn = mysqli_connect($servername, $username, $password, $dbname); // 检查连接是否成功 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } // 获取要删除的数据行的唯一标识符 $id = $_GET['id']; // 构建 SQL 删除语句 $sql = "DELETE FROM users WHERE id='$id'"; // 执行 SQL 删除语句 if (mysqli_query($conn, $sql)) { echo "数据删除成功"; } else { echo "删除数据时出错: " . mysqli_error($conn); } // 关闭数据库连接 mysqli_close($conn); ?> ``` 3. 修改数据: 连接到数据库后,可以使用 SQL 语句 `UPDATE` 来修改相应的数据行。 示例代码: ```php <?php $servername = "localhost"; $username = "your_username"; $password = "your_password"; $dbname = "your_database"; // 创建数据库连接 $conn = mysqli_connect($servername, $username, $password, $dbname); // 检查连接是否成功 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } // 获取要修改的数据行的唯一标识符和新的数据 $id = $_POST['id']; $newName = $_POST['new_name']; $newEmail = $_POST['new_email']; // 构建 SQL 更新语句 $sql = "UPDATE users SET name='$newName', email='$newEmail' WHERE id='$id'"; // 执行 SQL 更新语句 if (mysqli_query($conn, $sql)) { echo "数据更新成功"; } else { echo "更新数据时出错: " . mysqli_error($conn); } // 关闭数据库连接 mysqli_close($conn); ?> ``` 4. 查询数据: 同样地,首先连接到数据库。然后,使用 SQL 语句 `SELECT` 来获取查询结果。 示例代码: ```php <?php $servername = "localhost"; $username = "your_username"; $password = "your_password"; $dbname = "your_database"; // 创建数据库连接 $conn = mysqli_connect($servername, $username, $password, $dbname); // 检查连接是否成功 if (!$conn) { die("连接失败: " . mysqli_connect_error()); } // 构建 SQL 查询语句 $sql = "SELECT * FROM users"; // 执行 SQL 查询语句 $result = mysqli_query($conn, $sql); // 检查查询结果是否为空 if (mysqli_num_rows($result) > 0) { // 输出数据 while($row = mysqli_fetch_assoc($result)) { echo "ID: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>"; } } else { echo "没有找到匹配的数据"; } // 关闭数据库连接 mysqli_close($conn); ?> ``` 请注意,上述示例代码仅为演示目的,实际应用中需要考虑安全性和数据验证等问题,并根据项目需求进行适当调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值