数据库-单表

news/2024/11/9 10:15:47/


一行:一条记录
一列:一个字段

编号姓名年龄
01张三20
02李四22
03王五21

一张表相当于java的一个类

public class Student{
一个字段相当于一个属性String 编号;String 姓名;int 年龄:
}一条记录相当于创建一个对象
Person p=new Person("01","张三",20)

先来个总结

1.DDL:操作数据库中的对象,数据库,表,列
2,DML:操作数据库表中数据,对数据进行增删改
3.DQL:操作数据库表中数据,对数据进行查询

两个约束

1.主键约束.PRIMARY KEY,确保是唯一的,且不能为空
2.自动增长约束:auto_increment,被这个约束的列,值可以不用管,每次自动+1,这个可以用在编号的字段(列)中

删除表内所有数据

delete from 表名,删除表中所有的数据,自动增长约束不会重置,如果删之前是2,删除后再添加就从3开始
truncate table 表名,删除表中所有的数据,自动增长约束自动重置,原理先删除这个表,再重建表

乱码问题

dos命令是gbk的编码…set names gbk









1.DDL数据库

主要用这个 增:创建数据库

CREATE DATABASE 数据库名;
CREATE DATABASE 数据库名 charset 编码;
//如果不加编码,默认就是安装时设置的编码

删:删除数据库

DROP DATABASE 数据库名;

改:切换正在使用的数据库

USE 数据库名;

查:

查询正在使用的数据库

SELECT DATABASE();

查询所有的数据库

SHOW DATABASES;

查询某一个数据的详细信息

SHOW CREATE DATABASE nihao;






2.DDL数据库表

增:创建一个数据库表

CREATE TABLE Student(
#创建一个学生数据库表
#标准格式:字段 类型 约束,()用逗号分隔
sid INT PRIMARY KEY,
sname VARCHAR(10),
sage INT
)

删:删除一个数据表

DROP TABLE 数据库表名;

改:修改表的名字

RENAME TABLE 老的 TO 新的;

查:

查看一个表

DESC 数据库表名;

查看一个数据库下所有的表

SHOW TABLES;









3.DDL操作表中的列

增:增加一个列

alter table 数据库表名 add 列名 类型(长度) [约束];

删:删除一个列

alter table 数据库表名 drop 列名

查:查看表的数据

DESC 数据库表名;

改:可以修改列名,类型,约束

修改列名

alter table 数据库表名 change 老的列名 新的列名 类型(长度) [约束];

修改类型,约束

alter table 数据库表名 modify 列名 新的类型(长度) [新的约束];






DML数据库操作语言,操作表里面的数据

增:增加一条记录

如果要增加的数据所有字段都有,那么(列名1,列名2…)可以省略
insert into 表名 (列名1,列名2…) values (‘值1’,‘值2’…);

删:删除一条记录

删除所有记录:delete from 表名;
删除其中一条记录:delete from 表名 where sid=3;(删除了sid=3的那条记录)

where后面跟上字段名(列名),例子where=sid…where=name…where=age…

改:修改表中的记录

修改整个字段(列)的值:update 表名 set 字段名 = 值;
↓↓↓修改一条记录中的多个字段(列)↓↓↓↓
修改其中一个字段(列)的值:update 表名 set 字段名(列名),字段名(列名) = 值 where sid=3(把sid=3那条记录的字段名(列名)的值改掉);









DQL查询数据库中的数据

基本格式

select * from 表名;查询表中所有的数据
select 列名1,列名2 from 表名;查询表中所有的数据

select distinct 列名1 from 表名;查询表中所有的数据
distinct=去重

带有条件的查询

在这里插入图片描述






小练习

#创建一个数据库
CREATE DATABASE product;
#创建一个表
CREATE TABLE shangpin(sid INT AUTO_INCREMENT PRIMARY KEY ,sname VARCHAR(20),sprice INT,fenlei VARCHAR(100));
#网表中添加数据
INSERT INTO shangpin (sname,sprice,fenlei) VALUES ('小米电视机','999','电视');
INSERT INTO shangpin(sname,sprice,fenlei) VALUES ('小米冰箱','999','冰箱');
INSERT INTO shangpin(sname,sprice,fenlei) VALUES('小米手机','1299','手机');
INSERT INTO shangpin (sname,sprice,fenlei) VALUES('美的空调','2299','空调');
INSERT INTO shangpin(sname,sprice,fenlei) VALUES('小米手机','1299','手机');
INSERT INTO shangpin(sname,sprice,fenlei) VALUES ('小米冰箱','1999','冰箱');
INSERT INTO shangpin(sname,sprice) VALUES ('格力冰箱','1999');
#修改sid编号是6的价格,修改为1599
UPDATE shangpin	SET sprice=1599 WHERE sid=6;
#查询表中所有商品
SELECT *FROM shangpin;

----在这里插入图片描述

#查询表名称和价格的两列
SELECT sname,sprice FROM shangpin;
#去掉重复的值
SELECT DISTINCT sname,sprice FROM shangpin; #所有商品价格-100
SELECT sprice-100 FROM shangpin;
#上面的操作字段(列)的名称被自动改成了sprice-100,怎么改过来?
SELECT sprice-100 AS 促销价 FROM shangpin;
SELECT sprice-100 促销价 FROM shangpin;#AS不加也可以

但是这个操作并不影响原始的字段(列)的名称
在这里插入图片描述
在这里插入图片描述

#查询名称为小米手机的信息
SELECT *FROM shangpin WHERE sname='小米手机';
#查询价格等于1999的商品信息
SELECT * FROM shangpin WHERE sprice='1999';
#查询价格不等于1999的商品信息
SELECT *FROM shangpin WHERE sprice<>'1999';
#查询价格大于2000的商品信息
SELECT * FROM shangpin WHERE sprice >'2000';
#查询价格大于1000,小于2000的商品信息
SELECT * FROM shangpin WHERE sprice BETWEEN '1000' AND '2000';	
SELECT * FROM shangpin WHERE sprice >= 200 AND sprice <=1000;
#查询价格999或者1999的商品信息
SELECT *FROM shangpin WHERE sprice=999 OR sprice=1999;
SELECT * FROM shangpin WHERE sprice IN (999,1999);
#查询名称中带有"电"的商品信息
SELECT *FROM shangpin WHERE sname LIKE '%电%';
#查询名称中以"美"开头的商品信息
SELECT *FROM shangpin WHERE sname LIKE '美%';
#查询名称中第3个字为"冰"的商品信息(前面加2个_)
SELECT *FROM shangpin WHERE sname LIKE '__冰%';
#查询没有分类的商品信息
SELECT *FROM shangpin WHERE fenlei IS NULL;
#查询有分类的商品信息
SELECT *FROM shangpin WHERE fenlei IS NOT NULL;
#查询所有价格大于1000的冰箱或者价格小于1000的电视机
SELECT *FROM shangpin WHERE sprice>'1000' AND fenlei='冰箱' OR sprice <'1000' AND fenlei ='电视' ;





排序查询

SELECT 字段(列)名1,字段(列)名2… FROM 表名 ORDER BY 字段(列)名 ASC(升序)或DESC(降序);
默认是ASC升序

#查询表中所有商品,以价格进行降序,并以sid进行降序
如果同时有2个排序,前面不一样就只比较前面大小,如果前面一样,才会比较后面大小.
SELECT sid,sname,sprice FROM shangpin ORDER BY sprice DESC, sid DESC;

在这里插入图片描述

#先去重,再降序
SELECT DISTINCT sprice FROM shangpin ORDER BY sprice DESC;

聚合查询(where后面不能加聚合函数,可以用having)

求一列的个数:SELECT COUNT(*) FROM 表名;
注意,空值(null)不加
求某一字段(列)的总数:SELECT COUNT(字段(列)名) FROM 表名;

求最大值:SELECT MAX(列名) FROM 表名;
求最小值:SELECT MIN(列名) FROM 表名;
求平均值:SELECT AVG(列名) FROM 表名;
求和:SELECT SUM(列名) FROM 表名;
也可以放在一起写:
SELECT SUM(列名), MAX(列名), MIN(列名), AVG(列名) FROM 表名;

分组查询

#查询fenlei列分组后的价格总和
#顺序:1.先group by(null也算一类)  2.分别求每一个组的和
SELECT SUM(sprice) FROM shangpin GROUP BY fenlei;

在这里插入图片描述
在这里插入图片描述
分组查询小练习(分组查询不用where,用having)

#统计所有商品的个数
SELECT COUNT(*) FROM shangpin;
#统计各分类商品的个数
SELECT COUNT(*) FROM shangpin GROUP BY fenlei;
#统计各分类商品的个数,只显示大于1的,这里不用where,分组查询用having
SELECT COUNT(*) FROM shangpin GROUP BY fenlei HAVING COUNT(*)>1;
#上面这个改的好看一点
SELECT COUNT(*)个数 FROM shangpin GROUP BY fenlei HAVING 个数>1;

分页查询

SELECT * FROM 表名 LIMIT 起始下标,要找的个数;
查询公式:假设每一页要查询n条记录
第X页=limit (X-1) * n,n


http://www.ppmy.cn/news/240430.html

相关文章

数据库应用第四章:表数据操作

一.删除表“employ”中的“employdate”列所使用的语句是什么&#xff1f; ALTER TABLE employ( DROP employdate) 二.在SQL Server 2008中对数据使用SSMS图形化界面进行修改&#xff0c;与使用T-SQL修改数据&#xff0c;两种方法相比较&#xff0c;哪一种功能更强大、更为灵活…

在有序循环链表中插入新结点

2011年844真题 某电器商场仓库中一批电视机&#xff0c;按其价格从低到高的次序构成了一个循环链表&#xff0c;表中的每个元素指出了价格、数量和链指针三个域。现在新到m台价格为h元的电视机入库。试编写出仓库电视机链表增加电视机的算法 typedef struct LNode {int num;f…

定积分的计算(分部积分法)习题

前置知识&#xff1a;定积分的计算&#xff08;分部积分法&#xff09; 习题1 计算 ∫ 1 3 arctan ⁡ x d x \int_1^{\sqrt 3}\arctan xdx ∫13 ​​arctanxdx 解&#xff1a; \qquad 原式 x arctan ⁡ x ∣ 1 3 − ∫ 1 3 x d ( arctan ⁡ x ) arctan ⁡ 3 − arctan ⁡…

深入理解Java多线程编程

Java的多线程编程在现代应用程序中扮演着重要的角色。它可以提高应用程序的性能、并发处理能力和响应性。然而&#xff0c;多线程编程也带来了一些挑战&#xff0c;如线程安全、死锁和资源竞争等问题。本文将深入探讨Java多线程编程的基本概念和最佳实践。 1. 理解线程和进程&…

docker常见命令合集,速查手册

查看本地镜像&#xff1a;docker images 启动一个容器&#xff1a;docker run [OPTIONS] IMAGE [COMMAND] 示例&#xff1a;docker run -itd --name mycontainer ubuntu /bin/bash注释&#xff1a; -i&#xff1a;交互式操作。-t:&#xff1a;终端。-d&#xff1a;容器在后台运…

因果推断阶段系列20[阶段2-2]----处理效应的异质性

因果推断阶段系列20[阶段2-2]----处理效应的异质性 1. 从预测到因果推断2. 考虑异质性的原因3. 从ATE到CATE4. 预测弹性小结1. 从预测到因果推断 上一章,简要介绍了机器学习模型。机器学习模型用于估计条件期望函数 E [ Y ∣ X ] E[Y|X] E[

华为OD机试真题B卷 Java 实现【滑动窗口】,附详细解题思路

一、题目描述 有一个N个整数的数组&#xff0c;和一个长度为M的窗口&#xff0c;窗口从数组内的第一个数开始滑动直到窗口不能滑动为止&#xff0c;每次窗口滑动产生一个窗口和&#xff08;窗口内所有数和和&#xff09;&#xff0c;求窗口滑动产生的所有窗口和的最大值。 二…

xshell是什么软件,xshells7使用教程安装及连接linux的使用方法

Xshell是一款功能强大的终端模拟器&#xff0c;用户可以通过Xshell来查看编辑各种服务器上的文件和执行各类脚本&#xff0c;其基于SSH协议进行登录&#xff0c;安全性非常高&#xff0c;被广泛应用于企业的日常开发运维工作中。它支持SSH1, SSH2, 以及Microsoft Windows 平台的…