当前位置:网站首页 > 数据科学与大数据 > 正文

数据库增删改查代码(数据库增删改查代码怎么写)



  • 注释:在SQL中可以使用“--空格+描述”来表示注释说明
  • CRUD 即增加(Create)、查询(Retrieve)、更新(Update)、删除(Delete)四个单词的首字母缩写。
 
  

语法:

 
  

这里 into 可加可不加

column 是表中属性 这里后面会说

values_list 这里是 按照表属性的顺序来添加数据

1.1.1 单行添加

 
  

这里可以用中文 是因为 在创建数据表的时候用了 utf8;

这的 字符串 可以用 单引号 也可用双引号

1.1.2 指定列插入

 
  

这里的意思是 添加一个 id为 2的数据 其余为默认值 null

1.1.3 多行插入

 
  

这里有一个要注意的点

多行插入的效率比 单行插入要高

datatime 类型如何填入?

可以用一个固定的字符串来表示日期

 
  

表示现在的时间可以直接用 函数 now();

 
  

select 条件查询的执行顺序

  1. 遍历表中每个记录
  2. 把当前值带入条件,根据条件进行筛选
  3. 如果合格记录条件成立,就要保留,进行列上的表达式计算

1.2.1 全列查询

语法:select*from + 要查询的表

 
  

把表中所有的行和列 全部展示出来

*表示通配符 表示所有列

危险操作

  1. 读取硬盘,把硬盘的 IO 跑慢了, 此时程序的其他部分像访问就 非常慢
  2. 操作网络,也可能把网卡跑满,此时其他客户端想通过网络访问服务器 也非常慢

1.2.2 指定列查询

 
  

1.2.3 查询字段为表达式

 
  

注意 这个并不会改变我们的原始数据 只是在最终响应里做了计算

进行查询的时候,是把服务器这里的数据提取迟来,返回客户端,并且以 临时表的形式进行展示

所以 这里只是修改了 临时表

可以计算每个同学的总成绩

 
  

查询时可以进行简单的统计操作

1.2.4 查询的时候 指定别名(给表也可以) (as)

 
  

1.2.5 去重(distinct)

 
  

效率很低

1.2.6 排序(order by)

 
  

asc 为升序

desc 为降序

默认 asc

这里 前面的列名 是 返回临时表中展现的 后面的 列名 是 依靠这个列来排序的意思

  1. 没有 order by 字句的查询 ,返回的顺序是未定义,永远不要依赖这个数据
  2. null 数据排序 视为比任何值小,升序时出现在最上面
  3. null 跟 任何数 相加 还是 null

加入 上面的别名 (注意顺序)

 
  

对多个字段进行排序 这里的意思是这样的

优先数学降序 然后如果数学成绩相同 则看英语成绩升序排序

 
  

1.2.7 条件查询 where

比较运算符:

运算符 说明 >, >=, <, <= 大于,大于等于,小于,小于等于 = 等于,NULL 不安全,例如 NULL = NULL 的结果是 NULL <=> 等于,NULL 安全,例如 NULL <=> NULL 的结果是 TRUE(1) !=, <> 不等于 between a0 and a1 范围匹配,[a0, a1],如果 a0 <= value <= a1,返回 TRUE(1) in (option, ...) 如果是 option 中的任意一个,返回 TRUE(1) is null 是 NULL is not null 不是 NULL like 模糊匹配。 % 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字 符

逻辑运算符

运算符 说明 and 多个条件必须都为 TRUE(1),结果才是 TRUE(1) or 任意一个条件为 TRUE(1), 结果为 TRUE(1) not 条件为 TRUE(1),结果为 FALSE(0)

这里注意

  1. null 默认为 false
  2. where 条件可以使用表达式,但不能用别名
  3. and的优先级高于or 这边不建议记 如果需要优先进行可以直接用 ();
  • 基本查询
     
        

    这里 where 后面的 chinese+math+english 不可以写成总分

  • and 与 or
     
  • between ... and ...
     
  • in
     
  • 模糊查询like

    通配符 % 匹配多个字符 (包括0)

     
        

    孙% 查询开头为 孙的

    %孙 查询 结尾为孙的

    %孙% 查询包含孙的

    通配符 _ 匹配一个字符

     
  • Null 的查询 这里要注意
     
        

    我们使用 = 查询null 即使有 null 也会显示 没有

    因为 在 mySQL 中 null 默认为 false

    当他 查询到 null 会被认为是 空 然后 空又默认为 false 所以咧 无法查询到结果

    这里就要使用:

     

1.2.8 分页查询 limit

语法:

 
  

查询 开头三行数据

offset 的意思是 偏移量

语法

 
  

模拟面试题 掌握

如果不写条件 就全修改

 
  

Rows matched:参与改变的行数

Changed:被改变的行数

Warnings:错误 这里可以用这行代码看 错误点在哪里

 
  

语法

 
  

案例:

 
  

delete 跟 drop 不一样

delete 是 删除表内数据 但是不删除表

drop 整个表删除

数据库中的数据 是有一定约束的

有些数据认为是合法数据有些是非法数据

数据库,自动的对数据的合法性进行晓燕检查的一系列机制

目的 保证数据库中能够避免被插入/修改一些非法数据

MySQL 中提供了 以下约束:

  • not null :指示某列不能存储 Null 值
  • unique:保证某列的每行必须是唯一的值
  • default:规定没有给列赋值时的默认值
  • primary key:not null 和 unique 的结合
  • foreign key: 外键约束
 
  

创建表时 指定 列 不可以为空

指定列必须是唯一值 不可以重复的

每次使用这个约束都会先进行查询操作

 
  

给指定列 赋默认值

 
  

设置 主键 即为 不重复 以及不能为空

这里注意 一个表中 只有一个主键 ,但是 主键不一定是一个列 可以多个列 组成一个主键

 
  

数据库 有一个 自增 让数据库 自己去分配

对于整数类型的主键,常配搭自增长auto_increment来使用。 插入数据对应字段不给值时,使用最大值+1。

 
  

外键约束:

语法:

 
  

案例:

先建一个 class 表

 
  

再建一个 student 表 与其产生外键约束

 
  

这里 student 的 classId 与 class中的 id 产生了外键约束

class 为 父表

student 为 子表

特性:

  1. 父表约束子表

​ classId 只能 是 id中的其中一个 也就是 引用了 id 中的值

​ 如果 id 中没有这个值 就会报错

  1. 子表反向约束父表

    如果 classId中 已经引用了 id 中的某一个值

    那么这个值在父表中不可以被修改或者删除

    同样 如果 子表跟父表已经产生了 外键约束的关系

    即便 两个表都是空表 在 子表还在的情况下 无法直接删除父表

  2. 父表中必须有主键/unique 否则无法构成外键约束
  1. 一对一

    比如让你设计两个 一对一的表

    用户 以及 身份证

    一个用户对应一个身份证号

    如何设计

    我们可以设计一个 person 表 以及 identity 表

     

​ 让 他们之间 有一个属性互相关联 即可

  1. 一对多

    比如

    一个班级有多个学生

    一个学生只有一个班级

    class -----> student

     

    让 每个学生 去对应班级

    其实也可以 用另外一种 就是让

    班级中存放每个学生的 id

    但是 mySql 中没有 数组这种基础结构 所以 mySQL 不适用

  2. 多对多

    一个学生可以选多种课

    一个课程中有多个学生

     

    这里写了一个连接表 比如

    student 中 有 (1,张三)(2,李四)

    course 中 有 (1,语文) (2,数学)

    这里 的 连接表 student_course

    就可以这样存 (1,1)(1,2)

    代表 张三选了 语文课 张三选了数学课

插入 查询的结果

这里有一个必要的前提条件 就是你想要插入的 和查询的必须 列数一样 不然胡报错

 
  

5.1.1 聚合查询

一些 mySQL 提供的 聚合函数

函数 说明 count() 返回查询到的数据的 数量 sum() 返回查询到的数据的 总和,不是数字没有意义 avg() 返回查询到的数据的 平均值,不是数字没有意义 max() 返回查询到的数据的 最大值,不是数字没有意义 min() 返回查询到的数据的 最小值,不是数字没有意义
  • count()
     

    说明:

    这里的 通配符 * 是会将 null 也一起计算的

    但是 name 就不会

    同样的 这里的括号内也是可以 添加表达式 像上面一样

  • sum()
     

    说明:

    查看 chinese 的总和

    同样也是可以 加入表达式的

     

    这里会新建一个临时表计算 chinese+english+math 然后再进行输出

    注意

    字符串的运算 他不会报错 它会将 字符串 转换为 double 结构进行运算 如果无法转换则会变成0 并且产生一个 错误

     
     
  • avg()
  • max()
  • min()

5.1.2 group by语句

分组 按照字段进行分组

语法:

 
  

可以衔接 where 语句

  1. 查询每个岗位的平均工资 但是排除张三的

    先排除 后计算

    直接使用 where where 语句一般在 group by 前面

 
  
  1. 查询每个岗位的平均工资 但是排除平均工资大于2w的结果

    算计算后排除

    使用 having 语句,having语句一般在 group by 后面

 
  
  1. 同时完成以上的两种 查询

    查询每个岗位的平均薪资 不算张三 平且排除 大于2w 的结果

 
  

可以用 ,克制使用 ,不能非常广泛的使用

多个表进行同时查询

关键思路:

理解 ”笛卡尔积“ 工作过程

  1. 进行笛卡尔积
     
  2. 筛选条件
     
  3. 精简列
     
  4. 聚合
     

嵌套查询 两个 sql 用 一个sql 完成

  • 单行 子查询

    我想 查询不想毕业同学的 同班同学

     

    子查询 就是 将上面 合二为一 进行嵌套

     

使用合并查询 前后查询的结果之中 必须保证字段一致

  • union

    查询id小于3 或者名字为英文的

    取两个结果集的 并集

     
        

    or 跟 union 的区别

    union 的逻辑是 将两个临时表进行合并 然后去重

    or 则是 进行遍历

    而且 union 可以进行 不同表之间的 合并查询

    or 只能 针对单个表

  • union all

    合并后不进行去重操作 取得两个结果的并集

到此这篇数据库增删改查代码(数据库增删改查代码怎么写)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • mysql主键和索引(mysql主键索引的数据结构)2025-08-26 16:09:10
  • iotdb数据库审计日志(ibm数据库审计)2025-08-26 16:09:10
  • 服务器部署springboot项目怎么导入数据库(springboot服务之间数据传输)2025-08-26 16:09:10
  • junit mockmvc(junit mockmvc 设定post数据)2025-08-26 16:09:10
  • 数据库课程号怎么表示(数据库课程号怎么表示出来)2025-08-26 16:09:10
  • 数据库怎么创建dblink(数据库怎么创建数据表)2025-08-26 16:09:10
  • w25q256fv中文手册(w25q256数据手册)2025-08-26 16:09:10
  • sqlldr导入数据错位(sql导入数据报错)2025-08-26 16:09:10
  • springboot 数据库连接密码加密(spring数据库密码加密解密)2025-08-26 16:09:10
  • druid数据库连接池(druid数据库连接池配置)2025-08-26 16:09:10
  • 全屏图片