MySQL总复习

news2025/1/21 2:51:01

目录

登录

显示数据库 

创建数据库 

删除数据库

使用数据库

创建表

添加数据表数据

查询表

添加数据表多条数据

查询表中某数据

增insert 删delete 改update 查select

where 

like 

​编辑 

范围查找

 order by

聚合函数 

count

 max

min    sum    avg

group by

having

limit

 空判断

视图

存储


登录

mysql -u root -p

显示数据库 

show databases; 

 

创建数据库 

craate database <数据库名> ;

删除数据库

 drop database <数据库名> ;

 

使用数据库

 use  <数据库名>

创建表

primary key   主键

not null 非空

unique 惟一

default 默认值

auto_increment 自增长

int unsigned 无符号整数

DROP TABLE IF EXISTS staffer;
CREATE TABLE staffer (
  id int NOT NULL AUTO_INCREMENT COMMENT '员工编号',
  dept_id int NOT NULL COMMENT '部门编号',
  staff_name varchar(10) NOT NULL COMMENT '员工名字',
  sex enum('F','M') DEFAULT 'F' COMMENT '性别',
  birthday date COMMENT '生日',
  phone char(11) COMMENT '电话',
  salary decimal(11,2) UNSIGNED DEFAULT 1.00 COMMENT '工资',
  staff_memo varchar(100) COMMENT '备注',
  PRIMARY KEY (id),
  FOREIGN KEY (dept_id) REFERENCES department (id),
  CHECK ((salary > 0) and (salary < 100000))
) AUTO_INCREMENT=10512;
DROP TABLE IF EXISTS  item ;
CREATE TABLE  item(
   item_id  int AUTO_INCREMENT,
   order_id  int,
   goods_id  int,
   quantity  int,
   total_price  decimal(11, 2),
  PRIMARY KEY ( item_id ),
  FOREIGN KEY ( goods_id ) REFERENCES  goods  ( goods_id ),
  FOREIGN KEY ( order_id ) REFERENCES  orders  ( order_id )  
);

添加数据表数据


INSERT INTO staffer VALUES (10501, 1, '燕南飞', 'M', '1995-09-18', '13011231890', '5000.10', '职员');
INSERT INTO staffer VALUES (10502, 2, '陈一南', 'M', '1990-09-12', '13011233333', '6000.10', '职员');
INSERT INTO staffer VALUES (10503, 4, '李思思', 'F', '1979-11-01', null, '9900.00', '总经理');
INSERT INTO staffer VALUES (10504, 1, '张燕红', 'F', '1985-06-01', '13566567456', '8000.00', '部门经理');
INSERT INTO staffer VALUES (10505, 3, '南海峰', 'M', '1986-04-01', null, '7000.00', '职员');
INSERT INTO staffer VALUES (10506, 3, '张红燕', 'F', '1982-09-21', '13823671111', '9000.00', '部门经理');
INSERT INTO staffer VALUES (10507, 2, '王南峰', 'M', '1986-04-01', '13668992222', '7000.00', '职员');
INSERT INTO staffer VALUES (10508, 5, '刘燕玲', 'F', '1981-07-01', '13823679988', '6000.00', '职员');
INSERT INTO staffer VALUES (10509, 5, '李玉燕', 'F', '1984-02-08', '13823677889', '9000.00', '部门经理');
INSERT INTO staffer VALUES (10510, 4, '王树思', 'M', '1996-04-01', '13668998888', '7000.00', '职员');
INSERT INTO staffer VALUES (10511, 1, '思灵玉', 'F', '1992-03-01', '13823679999', '6000.00', '职员');
INSERT INTO  item  VALUES (1, 1, 1, 20, NULL);
INSERT INTO  item  VALUES (2, 1, 2, 2, NULL);
INSERT INTO  item  VALUES (3, 1, 3, 3, NULL);
INSERT INTO  item  VALUES (4, 2, 1, 7, NULL);
INSERT INTO  item  VALUES (5, 2, 2, 5, NULL);
INSERT INTO  item  VALUES (6, 2, 3, 6, NULL);
INSERT INTO  item  VALUES (7, 3, 1, 10, NULL);
INSERT INTO  item  VALUES (8, 3, 4, 10, NULL);
INSERT INTO  item  VALUES (9, 4, 1, 6, NULL);
INSERT INTO  item  VALUES (10, 4, 2, 3, NULL);

SET FOREIGN_KEY_CHECKS = 1;

查询表

select * from staffer;

添加数据表多条数据

一次性在department表中添加2条记录,分别为:(部门名称:市场部;电话:020-87993093)、

(部门名称:宣传部;电话:020-87993065)

select * from department;
insert into department (dept_name,dept_phone) values ('市场部','020-87993093'),('宣传部','020-87993065');
select * from department;

查询表中某数据

在goods表中查询各商品的3件费用

-- 3件费用是商品单价*3的价格,可使用表达式计算

select goods_name,unit_price,unit_price*3 as '3件费用' from goods_; 

查询goods_表第一行开始的2条记录

select * from goods_ limit 1,2;

查询staffer表中姓张的员工,并显示其staff_id,staff_name,deptartment_id,sex

select staff_id,staff_name,deptartment_id,sex from staffer where staff_name like '张%';

 item 表,按商品和供应商分组,查询各商品的各供应商提供的销售数量和总数量

-- 分析:当汇总有2个以上字段是需要用with rollup 子句才能达到按从左到右分类的目的

select * from item;
select goods_id,order_id,sum(quantity) from item group by goods_id,order_id with rollup;

增insert 删delete 改update 查select

 

 

 

where 

select 后面的"或者字段名,决定了返回什么样的字段(列):
select 中 where 子句,决定了返回什么样的记录(行);

 

like 

范围查找

 order by

当一条select语句出现了where和order by

select * from 表名 where 条件 order by 字段1,字段2;

一定要把where写在order by前面

asc 从小到大 可以省略
desc 从大到小
默认从小到大 (asc)

 

聚合函数 

count

 max

min    sum    avg

group by

select 聚合函数 from 表名 where 条件 group by 字段
select 聚合函数 from 表名 group by 字段
group by就是配合聚合函数使用的

where和group by 和order by的顺序:
select * from 表名 where 条件 group by 字段 order by 字段 

having

having子句
总是出现在group by之后
select * from 表名 group by 字段 having 条件

对比 where 与 having:
where 是对 from 后面指定的表进行数据筛选属于对原始数据的筛选having 是对 group by 的结果进行筛选;
having 后面的条件中可以用聚合函数,where 后面的条件不可以使用聚合函数。

having语法:
select 字段1,字段2,聚合...from 表名group by 字段1,字段2,字段3...
having 字段1,...聚合...

limit

 空判断

 null不是0,也不是",null在SQL里面代表空,什么也没有
null不能用比较运算符的判断
is null ---是否为null
is not null ---是否不为null
(不能用字段名 = null 字段名 != null这些都是错误的)

视图

建立部门员工视图,显示部门名称和员工对外查阅资料  | staffer 表和 department 表

select * from staffer;
select * from department;
drop view if exists v_staffer;
create view v_staffer 
as select dept_name,staff_name,sex,phone from staffer 
inner join department on staffer.deptartment_id=department.dept_id;
select * from v_staffer;

存储

创建带入in 参数和输出 out 参数的存储过程

-若需要从存储过程中返回一个或多个检索或统计的值,则可以使用代out关键字定义的输出参数,将返回值传回调用环境

在数据库db_shop中建立一个存储过程,能够通过部门编号统计该部门员工的人数,返回统计值,并调佣该存储过程

--  分析:部门编号是输入参数,统计的员工人数是输出参数

drop procedure if exists p_count;
delimiter //
create procedure p_count(in id int,out n int)
BEGIN
select count(*) into n from staffer where deptartment_id=id;
end //
delimiter ;
call p_count(1,@a);
select @a as '1号部门员工数';

编写一个函数,可按职员编号查询员工姓名。

use db_shop;
-- 创建函数时,mysql 默认开启了bin-log,因含有sql语句会出错,则需参加
drop function if exists staffer_search;
set global log_bin_trust_function_creators = 1;

delimiter //
create FUNCTION staffer_search(sid int)
returns  varchar(10)
begin 
declare sname varchar (10);
select staff_name into sname from staffer where deptartment_id=sid;
if isnull(sname) then 
return '无人';
else 
return sname;
end if;
END //
delimiter ;
set @sname = staffer_search(6);
select @sname,staffer_search(7);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/966671.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创建2个线程并执行(STL/Windows/Linux)

C并发编程入门 目录 STL 写法 #include <thread> #include <iostream> using namespace std;void thread_fun1(void) {cout << "one STL thread 1!" << endl; }void thread_fun2(void) {cout << "one STL thread 2!" <…

ip地址、LINUX、与虚拟机

子网掩码&#xff0c;是用来固定网络号的&#xff0c;例如255&#xff0c;255,255,0&#xff0c;表明前面三段必须为网络号&#xff0c;后面必须是主机号&#xff0c;那么怎么实现网络复用呢&#xff0c;例如使用c类地址&#xff0c;但是正常子网掩码是255&#xff0c;255,255,…

抽象轻松的C语言

#include <stdio.h> /* 预处理指令*/ /* 函数 */ int main() {int log 3.14;printf("hello word * %d\n easy", log);getchar();/* 获取键盘输入的字母&#xff0c;在这个程序中的作用是防止程序瞬间关闭 */return 0; } 上一篇说过&#xff0c;C程序是C语言的…

linux系统中串口驱动框架基本分析(经典)

第一&#xff1a;区分不同的终端类型 串行端口终端&#xff08;/dev/ttySn&#xff09; 串行端口终端&#xff08;Serial Port Terminal&#xff09;是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。 有段时间这些串行端口设备通常被称为终…

CXL寄存器介绍(2)- CXL DVSEC

&#x1f525;点击查看精选 CXL 系列文章&#x1f525; &#x1f525;点击进入【芯片设计验证】社区&#xff0c;查看更多精彩内容&#x1f525; &#x1f4e2; 声明&#xff1a; &#x1f96d; 作者主页&#xff1a;【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

4.0 Spring与Dubbo整合原理与源码分析

#Dubbo# 文章介绍 Dubbo中propertie文件解析以及处理原理Dubbo中@Service注解解析以及处理原理Dubbo中@Reference注解解析以及处理原理1.0 整体架构和流程 应用启动类与配置 public class Application {public static void main(String[] args) throws Exception {Annotation…

Idea中 css 、js 压缩插件会自动生成xxx.min.css、xxx.min.js文件

第一步&#xff1a;下载yuicompressor-2.4.8.jar 下载路径&#xff1a;打开搜索 YUI compressor Maven Repository: Search/Browse/Explore (mvnrepository.com)https://mvnrepository.com/ 找到点击下载即用&#xff08;如下图&#xff09; 创建文件夹&#xff0c;放入idea文…

进制转换(二进制、八进制、十六进制、十进制)

一、进制表示 二进制&#xff1a;每一位只有两种符号表示 -> 0,1 例如 (101011)₂&#xff0c;也可写作101011B&#xff0c;其中B是Binary英文的缩写。八进制&#xff1a; 每一位有8种符号表示(0~7)&#xff0c;例如(1652)₈&#xff0c;也可写作1652O&#xff0c;其中O是O…

如何查看Windows下软件使用的端口号和PID

文章目录 解决方法 解决方法 打开资源管理器&#xff1a;按下Win R&#xff0c;输入"resmon"&#xff0c;然后按Enter键 在资源监视器窗口中&#xff0c;切换到"网络"选项卡。 在"侦听端口"部分&#xff0c;你可以看到正在使用的端口号和PID…

Android——基本控件(下)(二十一)

1. 数据存储 1.1 知识点 &#xff08;1&#xff09;掌握Android数据存储的分类&#xff1b; &#xff08;2&#xff09;可以使用SharedPreferences存储数据。 1.2 具体内容 对于我们数据的存储而言&#xff0c;Android一共提供了5个数据存储的方式&#xff1a;SharedPrefe…

JS算法与树(二)

前言 二叉搜索树&#xff08;BST&#xff09;存在一个问题&#xff1a;当你添加的节点数够多的时候&#xff0c;树的一边可能会非常的深。而其他的分支却只有几层。 AVL树 为了解决上面的问题&#xff0c;我们提出一种自平衡二叉搜索树。意思是任何一个节点左右两侧子树的高度之…

NTT功能与实现

NTT的基础功用与拓展功能: 1.evaluate和interpolate evaluate的本质是选择n个点(假设f(x)的度为n)&#xff0c;计算得到其值&#xff0c;因此根据定义可以直接进行代入计算。为了加快计算的过程选取 w n w_n wn​的幂次(DFT问题即离散傅里叶变换)&#xff0c;使用FFT算法来加…

CXL.cachemem 简介(背景通道)

&#x1f525;点击查看精选 CXL 系列文章&#x1f525; &#x1f525;点击进入【芯片设计验证】社区&#xff0c;查看更多精彩内容&#x1f525; &#x1f4e2; 声明&#xff1a; &#x1f96d; 作者主页&#xff1a;【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…

无涯教程-JavaScript - TDIST函数

The TDIST function replaces the T.DIST.2T & T.DIST.RT functions in Excel 2010. 描述 该函数返回学生t分布的百分点(概率)​​,其中数值(x)是t的计算值,将为其计算百分点。 t分布用于小样本数据集的假设检验。使用此函数代替t分布的临界值表。 语法 TDIST(x,deg_fr…

iOS 设置下载部分文件,如何获取完整文件的大小

在视频的需求中&#xff0c;遇到这样一个需求&#xff0c;播放一视频的时候&#xff0c;要预下载 后面10条视频&#xff0c;但是只下载后面十条视频的前面1M 实现方法 1 创建请求时设置cacheLength resource [[IdiotResource alloc] init];resource.requestURL task.request…

屋大人少,凶多吉少

在这个世界上&#xff0c;包括人在内的万事万物&#xff0c;都是有自己的气场存在的。 那么&#xff0c;人所产生的气场&#xff0c;我们称之为人气。 道法自然&#xff0c;阴阳二象&#xff0c;同样&#xff0c;人的身上也是有阴阳二气&#xff0c; 二气平衡充盈&#xff0c;会…

【Python】批量下载页面资源

【背景】 有一些非常不错的资源网站,比如一些MP3资源网站。资源很丰富,但是每一个资源都不大,一个一个下载费时费力,想用Python快速实现可复用的批量下载程序。 【思路】 获得包含资源链接的静态页面,用beautifulsoup分析页面,获得所有MP3资源的实际地址,然后下载。…

将 Spring Boot 应用程序与 Amazon DocumentDB 集成

Amazon DocumentDB&#xff08;与 MongoDB 兼容&#xff09;是一种可扩展、高度持久和完全托管的数据库服务&#xff0c;用于操作任务关键型 MongoDB 工作负载。在 Amazon DocumentDB 上&#xff0c;您可以使用相同的 MongoDB 应用程序代码、驱动程序和工具来运行、管理和扩展工…

bazel介绍以及其发展历史

简介 Bazel Google开源的&#xff0c;是一款与 Make、Maven 和 Gradle 类似的开源构建和测试工具。 它使用人类可读的高级构建语言。Bazel 支持多种语言的项目&#xff0c;可为多个平台构建输出。Bazel支持任意大小的构建目标&#xff0c;并支持跨多个代码库和大量用户的大型代…

JavaSE基础(1)

1 初识Java 知识导图 1.1 Java简介及发展史 1.1.1 Java是什么 Java是一种优秀的程序设计语言&#xff0c;它具有令人赏心悦目的语法和易于理解的语义。 不仅如此&#xff0c;Java还是一个有一系列计算机软件和规范形成的技术体系&#xff0c;这个技术体系提供了完整的用于软…