SQL基础

news2025/1/18 10:40:23

目录

1.库操作

2.表操作

3.表操作--修改

4.表操作 --删表

5.添加数据

管理数据

 查询表中数据(重点)

判空条件

1.模糊条件查询

2.聚合查询(函数)

3.排序查询

4.分页查询

5.分组查询(配合聚合函数用于统计)

顺序:where  >  group by > order by >  limit

筛选

6.sql中完成if判断

if()

​编辑

字符串的集合操作  ELT()


1.库操作

  • 创建库  create database [if not exists] 库名 [default  charset 字符集][collate  排序规则];
  • 查询所有库 show databases;
  • 查询当前库 select database();          注意是个函数,有括号
  • 删除库    drop  database [if exists]  库名 ;
  • 切换到某个库  use 库名;

2.表操作

  • 查询当前数据库所有表     show tables ;
  • 查询表的结构   desc 表名;
  • 查询指定表的建表语句  show create table 表名;
  • 创建表  create  table 表名(
  • 字段1   字段1类型  [comment 注释] ,
  • 字段2   字段2类型  [comment 注释] ,
  • 字段3   字段3类型  [comment 注释] ,
  • 字段4   字段4类型  [comment 注释]
  • )[comment  表注释];       注意最后一个字段后面没有逗号

如果在创建表的时候,这样写: 字段1   字段1类型 defaule ‘ XXX ’ ,就表示字段1的默认值是XXX,如果没有赋值给字段1,那么它的值就是XXX

设置主键:字段1 字段1类型 not null  

3.表操作--修改

1.添加字段   ALTER  TABLE  表名 add  字段名  类型(长度)[comment 注释][约束]

2.修改数据类型     ALTER  table  表名  modify  字段名  新数据类型(长度);

3.修改字段名和字段类型   

ALTER  TABLE  表名 change  旧字段名  新字段名  类型(长度)[comment 注释][约束];

4.删除字段    ALTER  TABLE  表名 DROP  字段名;

5.修改表名     ALTER  TABLE  表名 RENAME  TO  新表名;

4.表操作 --删表

删表   DROP  table  [if  exists] 表名;

删表并且重新创建该表    truncate   table  表名  ;      //清除数据

  

5.添加数据

1.给指定字段添加数据

insert  into  表名(字段名1,字段名2,...)values(值1,值2,...);

2.给全部字段添加数据

insert into 表名 values (值1,值2,...);      //值必须与所有字段匹配

3.批量添加数据

insert  into  表名(字段名1,字段名2,...)values(值1 , 值2 ,...),(值1 , 值2 ,)...

insert  into 表名 values  (值1,值2, ...),(值1,值2,...),(值1,值2,...)...

//注意字符串和日期型数据应该包含在引号中

管理数据

1.查询表的所有数据

select  *  from 表名;

2.修改1到多个指定字段的所有行的值

update  表名  set  字段名  = 值 , 字段名  = 值 ,字段名  = 值;

3.按条件修改指定字段的值

update  表名  set  字段名  = 值where  字段名 = 值;

4.删除表 (都是按行删除)

按条件删除   delete  from  表名  where  字段名   = 值;


 查询表中数据(重点)

  1. 查询所有列  select  * from  表名;
  2. 查询指定的列  select  字段名 from  表名 ;
  3. 若想在表头上显示的不是字段名,可以为字段取别名,直接在字段名后面加上名字就好,字符串需要单引号,(为什么要取别名?因为查多张表时,很有可能有重名的字段,起别名利于区分)
  4. 合并列查询   select concat(字段,字段)[表头名字] from 表名;                                          
  5.  使用合并列查询:

  6. 查询常量
  7. 查询时去重,只显示不重复的 ,只要在查询某一列时, select  字段名 from  表名 ;在select后面加上distinct
  8.  条件查询,select *from 表名 where  条件

 

 

 

判空条件

 select  * from role  where  class<> '三班'

查询所有班级不是三班的数据

1.模糊条件查询

like:包含

not like  :不包含

查询表中name字段含三的数据

SELECT * FROM student where NAME like ' %三% ';

查询表中name字段以三结尾的数据

SELECT * FROM student where NAME like ' %三 ';

查询表中name字段以三开头的数据

SELECT * FROM student where NAME like ' 三% ';

%就是指代了选定字段中的0到多个字符

_就是指代了选定字段中的1个字符

演示:

一张student表



2.聚合查询(函数)

语法      SELECT 函数名(字段) from  表名 ;

3.排序查询

语句    select  *  from  表名  order  by  字段名

想以哪个字段排序就by哪个字段(默认正序排序)

如果想要逆序就在字段名后面加上 desc

如果想在以某个字段排好序的基础上,再以另一个字段排序,就在第一个by的字段后面加逗号,再加上第二个字段名

如:先以age排序,如果age相同就再以score排序,如果score相同就再以id排序

select * from student  order  by  age  ,score,id;

如果想加条件(where),那么order by要放在where的前面

select  *  from  student  where is not null order by  age;

4.分页查询

语句 :  limit  偏移量,步长;

如select * from  student  limit 1 , 3 ;

如果要加条件,limit放在where后面

如果既有条件又有排序还有分页,那么先where,再order by,最后limit

5.分组查询(配合聚合函数用于统计)

语法   :  group  by  字段  [筛选条件  having]

顺序:where  >  group by > order by >  limit

筛选

在group by 的 字段后面接having count (class)<5,即选出班级人数少于5的班级

作用示例

1.查询男女分别多少人   

2.查询每个班多少人

select  count(sex)  from  student  group  by  sex;

只显示2个数量,但不知道是谁的数量

如图:

所以:  group  by哪个字段,就可以查询到哪个字段,将其添加到select和 from之间 , 就会输出在控制台

可以这样:

select  sex count(sex)  from  student  group  by  sex;

还可以打备注

同时使用多个聚合函数:

select  class,count(class),max(score) from  student  where class  <>''  group by class,score;

select 和from 之间夹的语句顺序是什么,控制台输出时顺序就是什么

如果group by  的不止一个字段,count 会在分组后的基础上计数,就是已经分组好了的基础上。

6.sql中完成if判断

语法:  
SELECT  id, NAME,(case sex
when '男' then 1     //当sex是男,就输出1
when '女' then 2      //当sex是女,就输出2
ELSE  '未知'
END
 )'别名' FROM  student;

有2种格式

if()

if( 表达式1,表达式2,表达式3)                      表达式可以是常量或者字段名

1是判断条件,,如果1成立就输出表达式2,如果不成立就输出表达式3

ifnull(表达式1,表达式2)  如果为空就输出表达式1,如果不为空就输出表达式2

字符串的集合操作  ELT()

elt (  字段 ,'str1' , 'str2', ...)

字段的值为1时输出str1,为2时输出str2,为3时输出str3 ....

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

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

相关文章

C++模拟实现读写锁

文章目录一、读者写者问题二、读写锁1.读写锁的概念2.读写锁的设计(1)成员变量(2)构造函数和析构函数(3)readLock函数(4)readUnlock函数(5)writeLock函数(6)writeUnlock函数3.RWLock类代码三、测试读写锁一、读者写者问题 在编写多线程的时候&#xff0c;有一种情况是非常常见…

为什么黑客不黑/攻击赌博网站?如何入门黑客?

攻击了&#xff0c;只是你不知道而已&#xff01; 同样&#xff0c;对方也不会通知你&#xff0c;告诉你他黑了赌博网站。 攻击赌博网站的不一定是正义的黑客&#xff0c;也可能是因赌博输钱而误入歧途的法外狂徒。之前看过一个警方破获的真实案件&#xff1a;28岁小伙因赌博…

Linux 操作系统原理作业 - 行人与机动车问题

大三上学期操作系统原理这门课中&#xff0c;老师给了一道作业《行人与机动车问题》&#xff1b; 即Linux多线程下处理行人与机动车谁优先的问题&#xff0c;需要用到多线程和互斥量&#xff1b; 行人 - 机动 车问题 假设有一个路口&#xff0c;有很多行人和机动车需要通过&a…

1673_MIT 6.828 Homework xv6 lazy page allocation要求翻译

全部学习汇总&#xff1a; GreyZhang/g_unix: some basic learning about unix operating system. (github.com) 在计划表中看到了这样一份作业&#xff0c;做一个简单的翻译整理。原来的页面&#xff1a;Homework: xv6 lazy page allocation (mit.edu) 家庭作业&#xff1a;x…

代码版本M、RC、GA、Release等标识的区别

引言 最近听说spring framework有了重大版本调整&#xff0c;出了6.0的GA版本了 那GA是啥意思呢&#xff1f; 看了下spring 官网和代码仓库&#xff0c;除了GA&#xff0c;还有M、RC、Release等 Spring FrameworkLevel up your Java code and explore what Spring can do f…

[Java Web]element | 一个由饿了么公司开发的前端框架,让你快速构建现代化、美观的 Web 应用程序。

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;Java Web ⭐如果觉得文章写的不错&#xff0c;欢迎点个关注一键三连&#x1f609;有写的不好的地方也欢迎指正&a…

【mybatis】mybatis的工作原理

目录一、工作流程二、说明2.1 构建SqlSessionFactory2.2 SqlSession的获取2.3 SqlSession执行语句三、源码结构3.1 接口层3.2 核心处理3.3 核心处理层四、代码示例4.1 通过inputStream构建SqlSessionFactory4.2 通过configuration构建SqlSessionFactory4.3 mybatis-config.xml示…

groovy环境搭建

什么是DSL? 领域特定语言DSL&#xff08;全称&#xff1a;domain specific language&#xff09; 常见的DSL语言有&#xff1a;UML、HTML、SQL、XML、Groovy 作用&#xff1a;解决某一特定领域的问题 什么是groovy? groovy是一种基于JVM的敏捷开发语言。 结合了Python、Ruby和…

Vite4+Vuejs3项目初步搭建,并部署多个vue项目到nginx

前提条件 1、熟悉命令行 2、已安装 16.0 或更高版本的 Node.js 参照vuejs官网的步骤&#xff0c;创建一个vue前端项目 当前vuejs的版本&#xff1a;3.2.47 npm init vuelatestVue.js - The Progressive JavaScript Framework√ Project name: ... vuejs3-project√ Add Type…

BitDock桌面美化工具 一直在后台偷偷上传东西,具体上传什么东西不知,一天耗费我几十个G的流量

通过流量防火墙监控发现bitdock一直在上传东西&#xff0c;目前截止发现已上传了40G的流量 ――――――――――――――――――――――― 程序名称&#xff1a;SystemAudioDetection.exe 程序说明&#xff1a; 路径&#xff1a;D:\BitDock\AudioEngine\SystemAudioDetecti…

【C 字符串】02 字符串函数(命令行参数)

Navigator一、strlen()函数—统计长度二、strcat()函数—拼接三、strncat()函数—strcat()的升级四、strcmp()和strncmp()—比较五、strcpy()和strncpy()—拷贝六、sprintf()函数—合并多个字符串七、其他可能用到的字符串函数八、ctype.h中的字符函数九、把字符串转换为数字十…

在线文章生成工具-原创文章生成工具

在线文章生成器 在线文章生成器是指一种可以在线使用的自动化创造文章的工具。它可以使用自然语言处理&#xff08;NLP&#xff09;技术和人工智能算法提供需要的信息&#xff0c;基于标题、关键字&#xff0c;句子关联性等元素自动创造文章内容&#xff0c;涵盖各种类型&…

双端队列 码蹄集

题目来源&#xff1a;码蹄集 题目描述&#xff1a; 题意分析&#xff1a; 这道题目需要使用到双端队列的数据结构。我们可以借助 STL 中的 deque 来实现这个数据结构。具体来说&#xff0c;我们可以通过 deque 的 push_front 和 push_back 操作在队列的头部和尾部添加元素&am…

地球系统模式(CESM)实践技术应用

目前通用地球系统模式&#xff08;Community Earth System Model&#xff0c;CESM&#xff09;在研究地球的过去、现在和未来的气候状况中具有越来越普遍的应用。于2010年07月推出以来&#xff0c;一直受到气候学界的密切关注。近年升级的CESM2.0在大气、陆地、海洋、海冰、陆冰…

图形库EasyX的学习:)

最近学了一点做小游戏的基本知识&#xff0c;来总结一下&#xff0c;巩固一下记忆&#xff1a; 在这个基础上初学者要先明白vs的下载及基本使用还有图形库的下载及安装&#xff1b; 然后才是正题&#xff1a; 图形库里包含c语法&#xff0c;所以要用c文件&#xff0c;但是除…

Ubantu docker学习笔记(六)容器数据卷——补充实验

文章目录一、volume container二、 data-packed volume container三、利用数据卷驱动共享数据注意要在同一个网络配置下&#xff01;3.1服务端3.2客户端一、volume container 这里我觉得很好理解&#xff0c;volume container是专门为其他容器提供volume的容器。其实也就相当于…

深圳海运到墨西哥需要多长时间

目前&#xff0c;墨西哥的跨境电商商业正在高速发展&#xff0c;并且具有可观的红利。因此&#xff0c;从中国到墨西哥的运输需求很大&#xff0c;特别是海运&#xff0c;是很多跨境电商卖家主要选择的运输方式。 一般而言&#xff0c;中国到墨西哥的跨境卖家们普遍关注海运所需…

“终于我从字节离职了...“一个年薪40W的测试工程师的自白...

”我递上了我的辞职信&#xff0c;不是因为公司给的不多&#xff0c;也不是因为公司待我不好&#xff0c;但是我觉得&#xff0c;我每天看中我憔悴的面容&#xff0c;每天晚上拖着疲惫的身体躺在床上&#xff0c;我都不知道人生的意义&#xff0c;是赚钱吗&#xff1f;是为了更…

【云原生进阶之容器】第五章容器运行时5.8--容器热迁移

《云原生进阶之容器》专题索引: 第一章Docker核心技术1.1节——Docker综述第一章Docker核心技术1.2节——Linux容器LXC第一章Docker核心技术1.3节——命名空间Namespace第一章Docker核心技术1.4节——chroot技术第一章Docker核心技术1.5.1节——cgroup综述

MySQL-存储过程

什么是存储过程我们前面所学习的MySQL语句都是针对一个表或几个表的单条 SQL 语句&#xff0c;但是在数据库的实际操作中&#xff0c;并非所有操作都那么简单&#xff0c;经常会有一个完整的操作需要多条SQL语句处理多个表才能完成。例如&#xff0c;为了确认学生能否毕业&…