My sql的深度剖析

news2024/11/19 3:23:33

一.数据库的创建、删除、使用

数据库的创建:create database  +数据库名

数据库的删除:drop database +数据库名;

数据库的使用:use+数据名;

所有数据库的查看:show databases;

建立数据时如何指定字符集: create database +数据库名+charset utf8;

二.数据库中常用的数据类型:

int  类型

date time表示时间的数据类型如:2011-11-12-15:42:09;

varchar(20)  用来表示字符串,括号里表示的是字符个数

decimal(m,n)精确的表示浮点数的,常用来表示价格,m表示有效数据位,n表示小数点后的位数。

三.表的使用

表的任何一个操作都要指定使用那一个数据库:

如 use java108;

表的建立:

create table +表名(变量/列名+数据类型,变量/列名+数据类型,变量/列名+数据类型............);

表结构的查看:

desc+表名:

查看所有表:

show tables;

表的插入:

1.全列插入:

insert +into +表名+values(数据,数据,数据);

2.指定列的插入:

insert+into +表名(列名,列名,列名)+values(数据,数据,数据);

3.多行数据的插入:insert into 表名 values(数据,数据,数据),(数据,数据,数据),(数据,数据,数据)

 

表中数据的查看:

1.全部列的查看

建议不要轻易查看如果数据量比较多,会把硬盘IO吃满,或者把网络带宽吃满。

select*from 表名

  

2.指定列的查看:

select  列名,列名,列名 .....from 表名

表的分页查看:

select*from +表名   limit +数字  offset+数字;(limit表示查看几行,offset表示从第几行开始)

select 列名,列名,列名......limit+数字 offset+数字

 select 列名 ,表达式如(列名+列名+列名)as +别名+from +表名

 

针对列名的去重查询:

select +distinct+列名 +from +表名

 对所有行的数学成绩的数据进行去重查询

针对查询的结果进行排序

select*/列名、列名、列名/from +表名+order by+列名/表达式/别名    根据列名升序排序

 

select*/列名、列名、列名/from+表名+order by+列名/表达式/别名+desc  根据列名降序排序

 where  条件查询:

 

between  .....   and ......表示数据范围

in(数据,数据,数据)

 is null/is not null/

 

=  和<=>

使用=来比较某个值和null的相等关系,结果仍然是null,null又会被当成false,但是如果使用<=>例如

null<=>null其结果返回true 

 

 Like

模糊匹配:%表示任意多个包括0个字符,_表示任意一个字符,__表示任意两个字符

像第一个 where 语句则表示只要姓名的第一个字符 是孙,后面的是任意值都可以,而第二个where语句则表示只要名字里有一个孙字就可以。

‘孙_’ 则表示姓名里第一个是孙,第二个是任意字符。‘孙__’表示第一个字符时‘孙’,第二个和第三个字符是任意字符,第三个则表示姓名的第一个和第二个字符是任意字符,第三个字符是孙。

 

表的修改

update +表名+set +列名=   ,列名=, where条件/order by/limit

表的某一行的删除:

delete from +表名+where 语句/order by/limit;

 

表的删除:drop +table+表名 

 

drop+table+表名;

四.数据库约束

1.not null  指定列不能存储为空的数据

 

2.unique 表示同一列不能插入相同的数据

3.default  当不插入数据时的默认值

 

4.primary key 主健 相当于 not null 和 unique

在实际中,大部分的表一般会自带有一个主键往往是一个整数表示的id,一个表里只能有一个主键。

自增主键

primary key auto_increment

 

 自增主键

可以手动指定,这样比较麻烦,也可以让mysql帮我们生成,写null,注意这里并不是给id赋值给null,而是交给数据库使用自增主键。

 我们可以看到每次id的值都自动加1。

这时我们再添加一行数据,我们自己指定id为109 ,然后我们再插入一行数据,使用null,这时数据库会使用自动主键,自动加1,这时是在109的基础上加1,而不是在3的基础上加1.

5.foreign key

使表中的数据保证在另一个表中。

 

像我们再创建第二个表cat 时,在id 后面时我们增加了   foreign key(id) references animal(id),这句的意思是指  cat表里的id 值必须是animal 里面的id值,

因此我们往cat 表里增加id 的值是1,是2都可以但是不能为3.

五.聚合函数

1.count

   count(  )返回查询到的数据的数量

 

计算全列时,列为空值也算一行

 

 

 

计算某一具体列时,null则不算 

 

 

因为name 和math 这一列分别有一个null,所以为3.

sum() 返回查询到的数据的和

 null的值不加上。

avg() 返回查询到的数据的平均值

 

max() min()返回查询到的数据的最大值、最小值

六.group by 子句,先分组然后 进行聚合函数运算

where+条件   表示的时候先将不符合条件的数据剔除,然后再分组进行聚合运算

例如 我们求一个性别为男的每个车间的薪资总额

像这个我们就需要先用where语句将女性剔除,然后分部门求每个部门的薪资总额

 

having +条件 先分组进行聚合运算,然后再将不符合条件的组去除 

 例如:我们求一下部门的薪资总额大于37600的部门,这样的话我们先分组求每个部门的薪资总额然后将薪资总额低于37600的部门去除

七.联合查询

将多个表合在一起:

例如:我们查一下许仙同学的成绩,那我们需要将学生表合成绩表合在一起

 

将这两个表组合在一起,相当于全排列,一共有8*9=72条数据。这是部分截图

 

 但我们知道这样存在很多无效的数据,我们需要加条件,将有小效数据筛选出来。

 

例如我们求一下每个同学的成绩

 

第二种写法和第一种写法相同。

以上的连接属于内连接。

外连接:

1.左外连接--- select 字段+表名+left+join+表名+ on+连接条件

1.右外连接----select 字段+表名+right+join+表名+on+连接条件 

而如果数据之间不存在一 一对应的关系 ,如

像这两张表中,学生表中id=3的学生在分数表中不存在,而分数表中student_id=4的学生在学生表中不存在,两张表并不是一一对应的关系。将两张表里联合找有效数据只会展现一一对应的数据。

但是如果我们想在这张表中将student中的信息全部展现出来,这时我们可以用左外连接的方式,

 

如果我们想将score表中的信息全部展现出来,我们用右外连接的方式

 

六.自连接

自己和自己进行笛卡尔积,自连接的效果是把行转成列。

例如我们查询一下java成绩比计算机原理成绩高的学生信息,行与行之间没法进行比较。

 

 我们需要进行自连接

注意在进行自连接时我们需要对 表名起个别名,否则会报错。

 

java为course_id=3,计算机原理为course_id为1,因此我们再加上条件进行筛选就可以了。

 

七.子查询

子查询本质就是套娃

单行子查询  :返回一条记录  用=

例如:查询与"不想毕业''同学的同班同学;

多行子查询:返回多行记录的子查询  用  in

例如查询'语文'或英文的课程的成绩信息

八. 合并查询:将两个查询的结果集合并成一个,要求这两结果集的列相同。可以是两个相同的表,也可以是两个不同的表

两个表用union 或union连接

union 会对结果去重(重复的只保留一行)

union all 不去重

例题:查询i课程d 小于3,或者名字为‘java’或者‘math’的课程。

 

 

 

 

 

 

 

 

 

 

 

 


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

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

相关文章

在Java中计算Levenshtein莱文斯坦(相似度)编辑距离

在本教程中&#xff0c;我们将研究 Levenshtein 距离算法&#xff0c;该算法也称为编辑距离算法&#xff0c;用于比较单词的相似性。 什么是列文施泰因距离 Levenshtein距离算法由俄罗斯科学家Vladimir Levenshtein创建。 Levenshtein 距离算法通过计算将一个字符串转换为另…

基于单片机的贪吃蛇设计

1 绪论 1.1 设计目的 在21世纪的今天&#xff0c;人们的生活开始变得更加丰富多彩。在繁忙的工作之余&#xff0c;娱乐成为人们生活不可或缺的一份子&#xff0c;而游戏作为近年来逐渐兴起的一种娱乐方式&#xff0c;已经越来越受到人们的青睐。在工作学习之余&#…

dreamweaver网页设计作业制作 学生NBA篮球网页 WEB静态网页作业模板 大学生校园篮球网页代码 dw个人网页作业成品

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

第五章:双指针与离散化的映射

第五章&#xff1a;双指针、离散化、二进制运算与区间合并一、双指针1、什么是双指针&#xff1f;2、双指针的模板3、双指针例题&#xff08;1&#xff09;思路&#xff1a;&#xff08;2&#xff09;解答&#xff1a;C版&#xff1a;C版&#xff1a;二、离散化1、什么是离散化…

java面试强基(3)

重载和重写的区别? 重载 发生在同一个类中&#xff0c;方法名必须相同&#xff0c;参数类型不同、个数不同、顺序不同&#xff0c;方法返回值和访问修饰符可以不同。 重载就是同一个类中多个同名方法根据不同的传参来执行不同的逻辑处理。 重写 重写发生在运行期&#xff0c;…

go语言基本环境搭建

下载地址 Go官网下载地址&#xff1a;https://studygolang.com/dl 一、下载对应电脑得安装包 二、下载完成点击安装下一步&#xff08;选择目录尽量简单&#xff09; 三、是否安装成功 四、环境变量 GOROOT和GOPATH都是环境变量&#xff0c;其中GOROOT是我们安装go开发包的路…

【计算机毕业设计】Springboot医疗管理系统源码

一、系统截图&#xff08;需要演示视频可以私聊&#xff09; 摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 医疗服务系统&#xff0c;主要的模块包括查看管理员&#xff1b;首页、个人中心…

tomcat官网下载配置全部详细步骤(包含各种报错解决办法)

前言&#xff1a; 名字由来&#xff1a;翻译是野猫&#xff0c;tomcat的作者初衷是希望这个软件可以自力更生&#xff0c;自给自足。不依赖其他插件&#xff0c;独立达到提供web服务的效果 1.tocat和java的关系&#xff1f; tomcat是用Java语言编写的&#xff0c;需要运行在…

大三,请问现在自学Java还来得及吗?

前言 如果还在为入门Java晚而发愁时间够不够&#xff0c;首先你是准备自学&#xff0c;那么我们可以看看现在网络上一些比较热门的Java全体系的学习需要化多长时间&#xff0c;先拿B站上做的比较好的黑马教程和尚硅谷举例&#xff1a; 2022黑马程序员Java学习路线图​www.bili…

耗时半月,终于把牛客网软件测试面试八股文,整理成了文档资料.....

一、面试基础题 简述测试流程: 1、阅读相关技术文档&#xff08;如产品PRD、UI设计、产品流程图等&#xff09;。 2、参加需求评审会议。 3、根据最终确定的需求文档编写测试计划。 4、编写测试用例&#xff08;等价类划分法、边界值分析法等&#xff09;。 5、用例评审(…

飞象星球落地重庆云阳86所学校,县乡4万学生迎来素质课堂

猜生字笔画顺序、学习硬笔书法&#xff1b;跟随老师认识情绪、写下心里话……自从重庆云阳县86所中小学引入飞象星球双师素质课堂&#xff0c;4万多名县城和乡村孩子的课后素质课堂一下子变得丰富多彩起来。 图&#xff1a;洞鹿小学双河村校上双师素质书法课 云阳县地处三峡库…

代码随想录算法训练营第三十六天| LeetCode435. 无重叠区间、LeetCode763. 划分字母区间、LeetCode56. 合并区间

一、LeetCode435. 无重叠区间 1&#xff1a;题目描述&#xff08;435. 无重叠区间&#xff09; 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 。 2&#xff1a;解题思路 class …

MySQL面试问题汇总(2022)

一、MySQL架构 锁 什么是锁&#xff1f; 当多个连接并发地存取MySQL数据时&#xff0c;在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据&#xff0c;破坏数据库的一致性。 加锁是实现数据库并发控制的一个非常重要的…

BFV同态加密方案初步学习

BFV是把Bra12的LWE版本推到了RLWE版本&#xff0c;Bra12也可以叫做BFV。 经典的RLWE的公钥加密算法回顾 对比以前的Regev的LWE公钥加密方案&#xff0c;其实几乎只是把明文空间换了&#xff0c;也就是在最大比特编码的时候把2换成t&#xff0c;即&#xff0c;Δ⌊q/t⌋\Delta…

web网页设计期末课程大作业——香格里拉旅游网页设计 5页 HTML+CSS+JavaScript

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

一起来看看AMD最新显卡驱动22.11.1!

AMD最新推出了显卡驱动22.11.1&#xff0c;可以支持新上线的使命召唤&#xff1a;战区2&#xff0c;并且还修复了一系列的问题&#xff0c;AMD忠实用户们期待了嘛~ 更新内容 支持 使命召唤&#xff1a;战区 2.0 漫威蜘蛛侠&#xff1a;迈尔斯莫拉莱斯™ 固定问题 Radeon™ RX 6…

【mycat】mycat水平分表

mycat完成水平拆分 简介 相对于垂直拆分&#xff0c;水平拆分不是将表做分类&#xff0c;而是按照某个字段的某种规则来分散到多个库之中&#xff0c;每个表中包含一部分数据。简单来说&#xff0c;我们可以将数据的水平切分理解为是按照数据行的切分&#xff0c;就是将表中的…

【Try Hack Me】内网专项---Wreath

THM 学习笔记 【Try Hack Me】内网专项—Wreath &#x1f525;系列专栏&#xff1a;Try Hack Me &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x1f36d;作…

编程基础都要懂的计算机组成

学习目标: 1. 能够说出计算机有那两部分组成 2. 能够说出操作系统的作用 1.1计算机组成 计算机是可以进行数值计算和逻辑运算, 并且具有存储功能的电子机器. 计算机由硬系统件和软件系统组成. 1.1.1 硬件系统 主要分为主机和外设两部分, 是指那些构成计算机系统的物理实体,…

123456

hostname web1 bash 113.219.215.44 ctyun/Ctyun2022 cd /data/html/ tar -cvf /home/ctyun/html_zy.tar ./ mysqldump -uctyun -p --skip-lock-tables -R ultrax>ultrax_zhouyue.sql cd /etc/httpd tar -cvf /home/ctyun/httpd_zhouyue.tar ./ 关机改云主机私有网卡…