MySQL的增删改查;MySQL中使用中文-修改成UTF-8字符集

增删改查的前提,是已经把数据库创建好,并且选中了,表也创建就绪了~

1.新增元素

 在上图这个表里新增

  • insert into 表名 values(值,值,值...);  此处的值的个数要和表的列数相匹配.值的类型也要和列的类型匹配~   如果不匹配就报错捏~(字符串要加单引号)

 

 在SQL中可以使用双引号也可以用单引号,SQL里没有"字符类型"

其他的没有字符类型的编程语言,Python,JS,也是单双引号都能表示的字符串~

  • 不一定把这一行的所有列都插入数据.

  • 也可以一次插入三个数据(多次 插入 多条 记录会慢很多)

 指定name这一列进行插入;   其他未被指定的列(id),填入的值就是这一列的默认值,也就是null.

2.查询

查询操作比较复杂,先介绍一些比较简单的查询~

1.select语句全列查询.直接把整个表里面的数据都查出来

  • select*from 表名;   (*是通配符,表示匹配任意列)

select*表名;在数据量大的情况下任意把磁盘IO,或网络宽带吃满,出现卡顿,影响外面用户体验.

我们可以按Ctrl+c 来中断.

  • 指定列查询select 列名,列名,列名......form 表名;
  • 当我们省略一些不必要的列就节省大量磁盘IO和网络带宽了~

 

3) 查询的时候带有表达式,让查询结果进行一些计算~

我们重新写一个表来举例子(如下):

//注:decimal(3,1)是数据有三位有效数字,小数点后一位数.

对这个表的查询结果 做一些 计算操作如下: 

我们试着加了20,结果是超出前面定义的3位有效数字也不会报错. 

4)查询的时候起别名

 5)去重查询 

select distinct 列名 from 表名;会把查询结果相同的行,合并成一个;

这个表里面第一行的 [唐三藏] [98.0]这个数据和最后一行的[唐三藏] [98.0]这些数据一样,所以用去重查询,两个记录变成一个记录了.

 

 6)排序order by(默认升序)

select*from exam order by chinese;

 asc为升序(从小到大)

 desc为降序(从大到小)(descending order)

应用:

 select name,chinese+english+math as total from exam order by total desc;

 也可以指定多个列排序,先以第一个列为优先标准进行比较.如果第一列不分胜负,再按照第二列比较~


运算符

 SQL里没有==,=就是等于不是赋值

 下面对运算符的运用

1.查询英语不及格的同学,及英语成绩(<60)

select*from 表名 where 列名<60;

下面这个是原表,null是false所以没有被选出来.

 

取别名:查询语文数学英语加起来小于200,取别名叫total,的同学和total.

select 列名,列名+列名+列名 as total from 表名 where 列名+列名+列名<200;

但是注意不能这样,直接用别名进行运算符的使用.

select 列名,列名+列名+列名 as total from 表名 where total<200;

 2.and运算符(&&),两个条件都要满足

 select*from 表名 where 列名>80 and 列名>80;

查询语文成绩大于80分,且英语成绩大于80分的同学

 3.or运算符(||),两者任意一个成立就可以

select*from 表名 where 列名>80 or 列名>80;

 注意:如果一个条件中同时有and 和or,优先计算and.

但是加上括号就是先算括号里的

4.between a0 and a1

查询语文成绩在[80,90]分的同学及语文成绩(下面这两种方法都可以)

select*from 表名 where 列名 >=80 and chinese <=90;

select*from 表名 where 列名 between 80 and 90;这种between and 更加高效.

 

5. in(....)如果是括号里的任意一个则返回括号里的

select*from 表名 where 列名 in(58,59,98,99);

 

6.like    通过like来完成模糊查找

需要用到通配符.可以用 百分号 来代替任意个字符;用 _ 来代替一个任意字符

匹配以孙开头的数据

select*from 表名 where 列名 like '孙%' ;                     

 %孙      匹配以 孙 结尾的数据

%孙%    匹配包含 孙 的数据

%         匹配任意数据

匹配两个任意字符

匹配一两个任意字符

 虽然数据库支持模糊匹配,但是慎重使用,因为效率很低

7.null  和  <=>

不能直接用=来进行匹配,运行之后说空.

 要用到<=>

select* from 表名 where 列名 <=> null ;(sql不区分大小写)

也可以用is null 也可以和null进行比较

 

 8.分页查询

使用limit关键字来进行限制返回的结果条数~用offset来确定从第几条开始进行返回~

select 列名 from 表名 limit N offset M;(此处offer也可以省略,如果省略表示从第0条记录开始返回)

select 列名 from 表名 limit M,N

从第M条开始查询,最多返回N条记录~

limit可以和order by,where 等子句搭配使用

查询总成绩前三名的同学信息~

注:加上where条件筛选和limit,用select*才不会把数据库弄挂了.

 注释:

-- (两个横线一个空格)


 修改Update

此处的修改是针对服务器进行~这里的修改是持续有效的~

update 表名 set 列名 = 值,列名 = 值....where 子句;

把孙悟空的数学成绩改成80 ;

update exam_result set math = 80 where name = '孙悟空';

我们查看一下

 

 总成绩倒数前三的三位同学的数学成绩加上30分.

update exam_result set math = math+30 order by chinese+math+english limit 3;

 超出范围了(数学超出一百分了).就报错了.

 给他们都-30,就不会超出范围了.

 

 update操作也是比较危险的操作,只能靠备份的副本.


delete操作 只是把表的内容清空了表还在

总结

insert into 不能插入中文,我们要修改配置文件使用UTF-8字符集

步骤1.查看自己的 字符集  输入 show variables like 'character%'; 

下图中database 和server都要是utf8

步骤2.找到配置文件

 

步骤3.右击选择属性

步骤4.复制目标里的

步骤5.复制到记事本上,再单独复制这段蓝色框起来的部分

步骤6.把这段路径复制到文档的搜索框

 

步骤7.点开my.ini  有的电脑可能叫  my没有扩展名

 

步骤8.修改下面红色框框的位置,改成图上的内容;然后保存即可

 

 步骤9.重启MySQL服务器;开始菜单里搜索服务打开服务,找到MySQL右击,点[重新启动]

 步骤10.删除掉之前的库.结束.

最后:所有查询结果 都是临时表~

       不会对数据库服务器上的数据造成影响~

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
响应的例子。 好的,以下是一个简单的增删改查的实例,用AJAX、PHP、MySQL实现: 前端代码: ``` <!DOCTYPE html> <html> <head> <title>AJAX实现增删改查</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script> </head> <body> <h1>AJAX实现增删改查</h1> <table border="1"> <tr> <th>ID</th> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>操作</th> </tr> <tbody id="data"></tbody> </table> <form id="form"> <input type="text" name="id" placeholder="ID" style="display: none;"><br> <input type="text" name="name" placeholder="姓名"><br> <input type="text" name="age" placeholder="年龄"><br> <input type="text" name="gender" placeholder="性别"><br> <button type="button" id="add">添加</button> <button type="button" id="update" style="display: none;">修改</button> </form> <script type="text/javascript"> $(document).ready(function(){ // 页面加载时获取数据 $.ajax({ url: 'back.php', // 后端处理页面的URL type: 'GET', // 使用GET方法请求后端页面 data: {'type': 'select'}, // type参数用于指定操作类型 dataType: 'json', // 希望返回JSON格式的数据 success: function(data){ // 遍历数据并添加到表格 $.each(data, function(i, item){ $('#data').append( "<tr>" + "<td>" + item.id + "</td>" + "<td>" + item.name + "</td>" + "<td>" + item.age + "</td>" + "<td>" + item.gender + "</td>" + "<td>" + "<button type='button' class='edit' data-id='"+ item.id +"' data-name='"+ item.name +"' data-age='"+ item.age +"' data-gender='"+ item.gender +"'>编辑</button> " + "<button type='button' class='delete' data-id='"+ item.id +"'>删除</button>" + "</td>" + "</tr>" ); }); }, error: function(){ alert('获取数据失败!'); } }); // 点击添加按钮时的操作 $('#add').click(function(){ // 获取表单的数据 var name = $('input[name=name]').val(); var age = $('input[name=age]').val(); var gender = $('input[name=gender]').val(); // 向后端发送POST请求并传递数据 $.ajax({ url: 'back.php', type: 'POST', data: {'type': 'add', 'name': name, 'age': age, 'gender': gender}, success: function(){ // 刷新页面 window.location.reload(); }, error: function(){ alert('添加数据失败!'); } }); }); // 点击编辑按钮时的操作 $('#data').on('click', '.edit', function(){ // 获取需要编辑的数据并填充到表单 $('input[name=id]').val($(this).attr('data-id')); $('input[name=name]').val($(this).attr('data-name')); $('input[name=age]').val(parseInt($(this).attr('data-age'))); $('input[name=gender]').val($(this).attr('data-gender')); // 显示修改按钮,隐藏添加按钮 $('#add').hide(); $('#update').show(); }); // 点击修改按钮时的操作 $('#update').click(function(){ // 获取表单的数据 var id = $('input[name=id]').val(); var name = $('input[name=name]').val(); var age = $('input[name=age]').val(); var gender = $('input[name=gender]').val(); // 向后端发送POST请求并附带数据 $.ajax({ url: 'back.php', type: 'POST', data: {'type': 'update', 'id': id, 'name': name, 'age': age, 'gender': gender}, success: function(){ // 刷新页面 window.location.reload(); }, error: function(){ alert('修改数据失败!'); } }); }); // 点击删除按钮时的操作 $('#data').on('click', '.delete', function(){ if (!confirm('确认删除?')){ return; } // 获取需要删除的记录ID var id = $(this).attr('data-id'); // 向后端发送POST请求并附带数据 $.ajax({ url: 'back.php', type: 'POST', data: {'type': 'delete', 'id': id}, success: function(){ // 刷新页面 window.location.reload(); }, error: function(){ alert('删除数据失败!'); } }); }); }); </script> </body> </html> ``` 后端代码: ``` <?php // 数据库连接信息 $servername = "localhost"; $username = "root"; $password = "123456"; $dbname = "test"; // 建立连接 $conn = new mysqli($servername, $username, $password, $dbname); // 检查连接是否功 if ($conn->connect_error) { die("连接失败: " . $conn->connect_error); } // 设置字符集 $conn->set_charset('utf8'); // 根据不同的操作类型执行不同的SQL语句 switch ($_POST['type']) { case 'add': $sql = "INSERT INTO user (name, age, gender) VALUES ('".$_POST['name']."', ".$_POST['age'].", '".$_POST['gender']."')"; if ($conn->query($sql) === true) { echo "数据添加功"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } break; case 'update': $sql = "UPDATE user SET name='".$_POST['name']."', age=".$_POST['age'].", gender='".$_POST['gender']."' WHERE id=".$_POST['id']; if ($conn->query($sql) === true) { echo "数据修改功"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } break; case 'delete': $sql = "DELETE FROM user WHERE id=".$_POST['id']; if ($conn->query($sql) === true) { echo "数据删除功"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } break; case 'select': $sql = "SELECT * FROM user"; $result = $conn->query($sql); $result_array = array(); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $result_array[] = $row; } } echo json_encode($result_array); break; } // 断开连接 $conn->close(); ?> ``` 注意:在使用此代码时,请先创建一个名为“test”的MySQL数据库,再在其创建一个名为“user”的数据表,其包含四个字段:id(自增)、name、age、gender。你可以根据自己的需求修改代码数据库连接信息和表名。另外,此代码只为示例而写,可能存在不严谨之处,请不要直接复制粘贴运行。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值