数据库预科与增删查改(CURD)

这篇具有很好参考价值的文章主要介绍了数据库预科与增删查改(CURD)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、预科

1.分类

分为关系型数据库和非关系型数据库

关系型数据库对于数据库中数据的格式,要求比较严格(使用硬盘来存储数据)

非关系型数据库则相对不太严格,因此其功能相对于关系型数据库少一些,但是性能更高,因此更适应当前大数据分布式时代

关系型数据库的代表软件有Oracle(甲骨文),这是最牛好的数据库软件;然后就是MySQL,这时使用最广泛的数据库软件;然后就是SQL Sever以及SQLite........

非关系型数据库的软件代表有redis,MongDB,Hbase......

 2.作用

数据库用来组织/保存/管理数据的,然后为了下一步进行增删改查.

如果没有数据库,那么当一个程序跑起来后,才可以向其中增加内容,但是关闭程序以后,其中储存的一些信息也会消失,那么其程序是毫无意义的,因此我们需要使用到数据库,但是在对数据库的操作过程中,一定要小心,如果删库删表,那么造成的损失有可能是不可估量的.

3.定义 

数据库是一个客户端与服务器结构的程序,数据库的本体是服务器,数据是在服务器这里组织和存储的.客户端是程序员们所操作的,是主动的;服务器则是机器本身的,是被动的.当程序员发出请求命令时,客户端给服务器发送数据;然后,通过一系列的操作,服务器返回客户端数据.

客户端和服务器通过网络进行通信,因此客户端和服务器可以在同一个主机上,也可以在不同的主机上

数据库是使用硬盘来存储数据的.

4.关系型数据库的结构

服务器按照数据逻辑,分出了很多数据集合,称为数据库

数据库中,又有很多表来存储数据

每个表里又有很多行

每行又有很多列(每列称作一个字段)

列(字段) -> 行 -> 表 -> 数据库

数据库是大小写不敏感的

二、库操作

以student为数据库名建库,下列所有操作都在student库中

1.查看当前数据库 

show databases ;

 show databases ;

2.创建数据库

create database 自定义库名 charset utf8 ;

create database student ;

建数据库时,最好手动指定字符集,防止出现错误.

对于字符集来说,一个是gbk,这是windows的默认字符集;还有一种就是utf8,这是更通用的字符集,utf8mb4是相对于ut8更完整字符集操作如下所示:

-- 以student为库建立
create database student charset utf8 ;

3. 选中数据库(如果要操作数据库中的表等,就要先选中数据库)

use 库名 ;

use student ;

4.删除数据库(删库操作是非常危险的,包括接下来的表操作等等)

drop database 库名 ;

drop database student ;

三、表操作 (以score为表名建表)

在进行表操作以前,一定要选定数据库,否则无法进行对表的操作.

1.查看数据库中的表

show tables ;

show tables ;

2.创建表(以成绩表举例,表中有名字和语数英三门成绩)

create table 表名(列名 数据类型,列名 数据类型......) ;

create table score(name varchar(20) , 
                   chinese decimal(3,1) , 
                   math decimal(3,1) , 
                   english decimal(3,1) ) ;

创建表的过程中,需要指定列,以及列的类型 :数值类型、字符串类型以及日期类型.

最常见的几种数据类型:

  • int:整数类型,占四个字节
  • varchar( ):可变长度字符串,括号中的是最大长度
  • double(  ,  ):双精度浮点数,括号中第一参数是整体长度,第二参数是小数点后长度
  • decimal(  ,  ):双精度浮点数,括号中第一参数是整体长度,第二参数是小数点后长度
  • datetime:日期类型,举例('2023_04_21 20:35:00'),还有一个函数now()可以插入当前时间

3.删除表(此时得以score表来查询)

drop table 表名 ;

drop table score ;

4. 查看表结构(此时得以score表来查询)

desc 表名 ;

desc score ;

四、表内操作 (建立一个学生基本信息表然后操作)

use student ;
create table information (id int , 
                          name varchar(20) , 
                          gender varchar(5) ,
                          class_id int , 
                          phone varchar(20) ) ;

1.插入数据(两表都有进行操作,为了后续做铺垫)

insert into 表名 value (数据1),(数据2),(数据3);

insert into 表名(指定列插入) value (数据1),(数据2) ;

//单条数据插入
insert into information value(1,'刘一','男',1,'13191039999') ;

//多条数据插入
insert into information value(2,'陈二','男',2,'13233556666'),
                             (1,'张三','女',2,'18835598888'),
                             (3,'李四','男',1,'18603557777') ;

//指定列插入(只是讲述,并没有在数据库进行操作)
insert into information(name,id) value('王五',6) ;



//上述是对学生信息表的插入,下述是对成绩表的插入
insert into score value('刘一',98.9,88,79),
                       ('赵四',77,80.9,99),
                       ('王五',56,76,89) ;

2.查询表数据

<1>全表查找(此时得以information表来查询)

select * from 表名 ;

select * from information ;

操作比较危险,自制的表比较小,但是如果当在一个公司时,其表的内容可能是很大的.

如果数据量很大,那么会瞬间吃满硬盘带宽和网络带宽,导致其他程序无法使用网络和硬盘

<2> 指定列名查询 - > 无论在表中数据如何排列,但是查询时并没有前后之分(此时得以score表来查询)

select 列名1,列名2 from 表名 ;

select id ,name from information ;

<3>表达式查询(此时得以score表来查询) 

select 列名1+列名2,列名3 from 表名 ;

select name,chinese+math+english from score ;

<4>指定别名查询 - > as也可以省略不写,不过一般不建议这样做(此时得以score表来查询)

select 列名1+列名2 as 自定义列名 ,列名3 from 表名 ;

select name,chinese+math+english as total from score ;

<5>排序后查询 - > 利用order by 子句,指定某些列进行排序(此时得以score表来查询)

select * from 表名 order by 列名 排序关键词 ;  

//以其中的数学成绩降序排列(desc就是降序的意思)
select * from score order by math desc ;

//以其中的数学成绩程序排列(不写降序就是升序,不过也有其关键字asc)
select * from score order by math asc ;

/*也可以指定两个关键字,当前一个相同时,使用第二个进行排序
  以其中数学成绩为第一关键字,语文成绩为第二关键字
  如果数学成绩相同时,用语文成绩来比较*/
select * from score order by math desc , chinese ;

<6>去重查询 - > 利用distinct(此时以score表来查询)

select distinct 列名 from 表名 ;

select distinct math from score ;

也可以有多列进行查询,但是多列都相同时才判定为重复

如果重复,那么只保留一个

<7>条件查询 - > 利用where子句

select * from 表名 where  查询条件 ;

where之后是条件,符合条件的数据留下,不符合的直接pass 

判断条件时,有一系列的运算符:比较运算符和逻辑运算 - > 其实和语言中的差不多

这里就不过多阐述,写SQL语句时都会给大家介绍到(此时得以score表来查询举例)

//判断数学成绩是否大于80,如果大于,留下
//这里利用了>来比较(同时还有< <= >= != )
//不过判断相等不使用 == ,而是使用 =
select * from score where math > 80 ;

//这里利用的是between...and...,判断成绩是否在此区间中 
//判断数学成绩是否在此区间
select * from score where math between 40 and 80 ;

//判断数学成绩有没有60分或这100分
//利用的是in(......),判断成绩是否有想要看见的成绩
select * from score where math in (60,100) ;

//模糊匹配,也就是类似于正则表达式的东西,但是比其简单
//利用的是like
//%表示的是不确定字符数;_表示的是一个字符
//如果有人姓王,就将其表示出来,否则pass
//%和_可以写在前面或者后面
select * from score where name like '王%' ;
select * from score where name like '王_' ;

<8>分页查询(此处利用的是score表)

一个关键字是limit,表示一页最多有几个

select * from 表名 limit 自定义数字 ;

另一个关键字是offset,表示从哪一条开始查询

select * from 表名 limit 自定义数字 offset 自定义数字 ;

//限制有每页最多两个
select * from score limit 2 ;

//下列的也可以写成limit 2,2
//前者表示从哪一行开始,后者表示最多几个
//SQL中,也是从第0个开始
select * from score limit 2 offset 2 ;

<9>将查询到的表插入另一个表

在此操作中,必须满足的条件就是两表插入的所有列数的所有信息都匹配

insert into 表名 select * from 表名 ;

//这个操作不在所建立的表中进行
//因为这是一个比较偏的操作,利用的机会很少
//在另一个库中建立一个student表和另一个student2表
//将student表中的内容插入到student2表中
//注意,我们上述所有的操作基本上都是可以对列操作的
//由于我无法列举所有的情况,大家自行理解
insert into student2 select * from student ;

<10>聚合查询 (此处利用的是score表)

select 聚合函数(列名) from 表名 ;

聚合查询依赖的是聚合函数 - > 这是SQL所提供的库函数

聚合查询的作用就是将列进行一定的计算,比如说语文成绩的总和,平均值等

//count函数,求的是行数
//下述的*也可以换成某一列的列名
//不过如果当此列为null时,则不会被计算
select count(*) from score ;

//sum函数,求的是某列的总和
select sum(math) from score ;

//avg函数,求的是某列的平均值
select avg(chinese) from score ;

//将多列的平均值求出(还利用了一下as)
select avg(chinese+math) as avg_total from score ;

//求最大值
select max(math) from score ;

//求最小值
select min(math) from score ;

<11>分组查询 - > group by子句进行查询 (使用student表)

select 列名,聚合函数(列名) from 表名 group by 列名 ;

select 列名,聚合函数(列名) from 表名 where 自定义条件 group by 列名 ;

select 列名,聚合函数(列名) from 表名 group by 列名 having 自定义条件;

指定一个列,把列里的值,相同的分到同一个组

//在学生信息表中,利用group by语句,计算每个班的人数
select class_id,count(class_id) from information group by class_id;

//在分组查询中,也可以指定条件

//第一个是在分组前筛选
select class_id,count(class_id) from information where name != '张三' group by class_id ;

//第二个是分组后查询
select class_id,count(class_id) from information group by class_id having class_id != 1 ;

//也可以同时使用

在分组查询的过程中,要么是带有聚合函数的列,要么是所要进行分组的列.如果使用其他列,都是毫无意义的.

<12>联合查询(也就是多表查询)    (以information表和score表举例)

select * from 表1,表2;

select * from 表1 join 表2 ; 

联合查询也就是多表查询,基于笛卡尔积进行查询

笛卡尔积:我认为就是排列组合,比如第一张的第一行和第二张的每一行都组合,然后第一张的第二行和第二张表的每一行都结合.......最后形成的表的行数是两表行数之积,列数是两表列数之和

//笛卡尔积如下
select * from score , information ;
//但是一般不使用这种全表查询的方式,学习时还可以使用进行查看
//但是当工作时一张表便是成千上万行.两张表更是可怕
//如果全表查询,那么会导致一些情况发生,不建议如此做

//这两张表,建立联系的地方就是名字,因此以此为条件查询
select information.name,score.math+score.chinese from score,information 
where information.name = score.name ;

//不仅由上述方式进行两表联合,还可以使用join进行两张表的联合
select * from information join score ;
//如果使用on,后续条件就必须使用on
select information.name , score.math from score join information 
on score.name = information.name ;

上述都是内连接,内连接的意思也就是在第一表中的每个记录,在第二个表中也必须体现,也就是不能为null,而外连接则是如果第一张表中有体现,查询结果就会体现;或者第二章表有体现,第一张表五体现,查询结果也会体现,称为左连接或右连接.

//先插入数据,插入刘三的信息,但是六三没有参加考试,因此无分数
insert into information value (3,'刘三','男',2,'14345450000');
insert into score(name) value ('刘三');

//进行查询,左外连接
select information.name,score.math from information left join score 
on information.name = score.name ;

//右外连接和此相同,只不过是将left转换为right

//上述只是两表查询,也可以进行多表查询,不过一般不会用到,给大家写个模板
select * from 表1 join 表2 on 条件1 join 表3 on 条件2......

//除了不同的表进行连接查询,也可以自连接进行查询
//比如说想要查看某位同学的数学成绩比自己的语文成绩高
select s1.name from score as s1,score as s2 where s1.math > s2.chinese ;
//在子连接中,必须要给表使用别名,不然就会报错

<12>合并查询 - > 使用关键字union,会自动去重;union all则不会去重

//合并查询,也可以使用or ,但是针对的是一个表
//如果使用union,则可以在不同的表中进行查询
select name from score where name like '刘%' union 
select name from information where name like '王%' ;

3.修改表数据(此处使用score表进行修改)

update 表名 set 列名 ;

//上述说过的查询等各种子语句都可以使用
//自己一定要贯通,而不是一成不变
update score set math = 89.5 where name = '刘三' ;

4.删除表数据

delete from 表名 ;

//删除表数据,是一条一条删,因此结果绝对没有一起删快
//但是一般删除的时候,都是有条件的,而不是全表删除
delete from score where name like '刘%' ;

到这里就结束了,接下来就是约束,索引,事务,以及JDBC了. 文章来源地址https://www.toymoban.com/news/detail-431282.html

到了这里,关于数据库预科与增删查改(CURD)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java一般用于postgis空间数据库通用的增删查改sql命令

    目录 1 增加 2 删除 3 查询 4 更新 \\\"public\\\".\\\"JGSQGW_Geo\\\"为某模式下得表  一般postgrel有这样的设计模式

    2024年02月13日
    浏览(46)
  • 【数据库】通过实例讲清楚,Mongodb的增删查改,分组查询,聚合查询aggregate

    目录 一.基础概念 二.数据库的管理 1.创建数据库 2.删除数据库 二.集合的管理 1.显示所有集合 2.创建集合 3.删除当前集合 4.向集合中插入元素 三.文档的管理 1.文档插入 2.文档的更新 3.文档的删除 4.文档查询 (1)查询基本语法: (2)查询table2集合下的所有文档 (3)查询t

    2024年02月10日
    浏览(42)
  • 通过Studio 3T对Mongodb进行 创建数据库/集合 增删查改集合文档操作

    首先 你需要安装Studio 3T 以及启动 Mongodb服务 具体可以参考我的文章 Studio 3T客户端连接Mongodb数据库服务 我们之前 通过 随便输切换是可以的 但除了这里能看到的 它们都仅存在于内存 我们右键顶部菜单 选择 添加数据库/创建数据库 这里 我们输入数据库名称 然后 点击OK 这样

    2024年02月01日
    浏览(61)
  • SSMP整合案例(3) 创建数据层并在测试类中运行数据库增删查改操作

    上文 SSMP整合案例(2) Spring Boot整合Lombok简化实体类开发我们已经开发完了实体类 我们就可以做数据层了 目前来讲 数据层技术 使用了最大的自然是 MyBatis 但其实MyBatis-Plus在国内很多中小企业还是使用的挺多的 这次 我们主要是通过MyBatis-Plus和Druid来做这件事情 这两个工具的坐

    2024年02月09日
    浏览(42)
  • 什么是数据库?数据库分为哪几种?

    一、什么是数据库?   数据库(Database)是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。(简而言之,用来存储大量数据的) 二、数据库分为那几种? 常用数据库有mysql、oracle、sqlse

    2024年02月07日
    浏览(39)
  • 【MySQL】数据表的增删查改

    C:Create增加 R:Retrieve查询 U:Update更新 D:Deleta删除 添加数据是对表进行添加数据的,表在数据库中,所以还是得先选中数据库,选中数据库还在进行一些表得操作 现在我们有一张 student 表,里面有两个属性分别为:id和name 接下来我们就给student这个表进行添加数据 选中数

    2024年02月04日
    浏览(61)
  • 【数据结构入门】顺序表详解(增删查改)

    目录 顺序表的基本概念 动态顺序表的实现 初始化 插入 尾插法 头插法 指定位置之前插入 删除 尾删法 头删法 指定位置删除 查找 销毁 什么是顺序表? 顺序表是用一段 物理地址连续的存储单元 依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的

    2024年04月17日
    浏览(35)
  • 数据结构之顺序表的增删查改

    自今日起,我们正式 越过C语言的大山 ,走向了 数据结构的深山 ,现如今摆在我们面前的第一个坎就是 顺序表 ,我们需要了解顺序表的 定义 ,并且知道,如何对其进行 增删查改 ,之后我们需要在此处基础上写出一份 通讯录代码 ,ok,顺序表,启动! 线性表( linear lis

    2024年01月23日
    浏览(71)
  • 【数据结构】单链表的增删查改(C实现)

    优势 : 可通过 下标i (数据连续(物理空间连续)) 便捷查询查找顺序表中的信息,也会在后面的 排序算法 和 堆算法 中尽显身手 问题 : 在头部/中间的插入与删除需要 挪动数据 ,时间复杂度为O(N),效率低; 增容需要申请新空间, 可能会拷贝数据 ,释放旧空间,会有

    2024年02月05日
    浏览(59)
  • [MySQL]MySQL表中数据的增删查改(CRUD)

    CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除),也就是增删查改。 语法: column为属性列。 values为数据。 1.1 单列插入 方式1: 省略属性列 insert [into] table_name values (data1, data2 …); 由于省略了属性列,因此需要包含每个属性列的对应数据。 方式2: 不省略属性列

    2024年02月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包