SQL基础语句大全

SQL基础语句大全SQL基础语句大全此文章基本涵盖SQL的基础应用语句你好!这是本人在大学自学Java时记录的SQL基础语句,希望可以对自学的小白们给与一定帮助,有错误也欢迎大家可以帮助纠正。数据类型1.整数:int和bigintbigint等效Java中的long2.浮点数:double(m,d)m总长度d小数长度eg:double(5,3)26.789decimal是一个超高…

大家好,又见面了,我是你们的朋友全栈君。

SQL基础语句大全

此文章基本涵盖SQL的基础应用语句

你好! 这是本人在大学自学Java时记录的SQL基础语句,希望可以对自学的小白们给与一定帮助,有错误也欢迎大家可以帮助纠正。

数据类型

1.整数: int和bigint bigint等效Java中的long
2.浮点数:double(m,d) m总长度 d小数长度 eg:double(5,3) 26.789
decimal是一个超高精度的浮点数,精度远高于double,只有涉及到超高精度运算时才会使用到
3.字符串:varchar(m) 可变长度(节省空间)最大字符长度65535但是超过255建议用text可变长度
字符串类型 长度65535.
char(m)不可变长度 char(5) “abc” 占5 最大字符长度255
4.日期类型
-date:只能保存年月日
-time:只能保存时分秒
-datetime:默认值null 最大值9999-12-31
-timestamp:时间戳 默认值当前系统时间 2038-1-19

数据库相关

1.查询所有数据库
-格式:show databases;(分号不要忘)
2.创建数据库
-格式:create database 数据库名;
-指定字符集格式:create database 数据库名 character set utf8/gbk;
3.查看数据库详情
-格式:show create database 数据库名;
4.删除数据库
-格式:drop database 数据库名;
5.使用数据库
-格式:use 数据库名;

表相关

-切记操作表和数据库时一定要保证已经使用了数据库,如下操作:

create database db1;
use db1;

1.创建表
-格式:create table 表名(字段1 字段1类型,字段2 字段2类型…)

create table person(name varchar(10),age int)

2.查询所有表
-格式:show tables;
3.查询表详情
-格式:show create table 表名;
4.创建表时指定字符集
-格式:create table 表名(字段1 字段1类型,字段2 字段2类型…) charset=utf8/gbk

create table t1(name varchar(10)) charset=gbk;

5.查询表字段信息
-格式:desc 表名;
6.删除表
-格式:drop table 表名;
7.添加表字段
-最后添加格式:alter table 表名 add 字段名 类型;
-最前添加格式:alter table 表名 add 字段名 类型 first;
-最xxx后面添加格式:alter table 表名 add 字段名 类型 after xxx;
8.删除表字段
-格式:alter table 表名 drop 字段名;
9.修改表字段
-格式:alter table 表名 change 原名 新名 新类型;

DML DataManiputlation Language数据操作语言 (增删改查)

1.插入数据
-全表格式:insert into 表名 values(值1,值2,值3);
-指定字段插入格式:insert into表名(字段1名,字段2名) values(值1,值2);
-批量插入:insert into 表名 values(值1,值2,值3),(值1,值2,值3)…
中文问题:insert into person values(3,‘Liang’,22),(4,‘刘德华’,26);
如果执行上面代码出错则使用下面代码后执行

set names gbk;

mysql处理数据有两个地方需要进行编码和解码,每隔地方的编解码要保证字符集
一致,网络数据传输有一对编解码,往磁盘中保存和读取数据有一对编解码,创建
数据库和表时指定的字符集时服务于后者的,set names gbk是服务于前者的。

2.修改数据
-格式:update 表名 set 字段名=xxx,字段名=xxx where 条件;

update person set age=30 where name='Tom';
update person set age=80 where id=4;

3.删除数据
-格式:delete from 表名 where 条件;

delete from person where id=5;
delete from person where age=80;
delete from person;

DQL Data Query Language 数据查询语言 (查)

-格式:select 字段信息 from 表名 where 条件;

select name from person;//查询表中所有的名字
select name from person where id<5;//查询表中所有id<5的名字
select * from person where id>=5;//查询表中所有id>=5的名字

主键约束

-约束:创建表时给表字段添加的限制条件(相当于字段的身份证)
-主键:表示数据唯一性的字段称为主键
-主键约束:唯一且非空

create table t1(id int primary key,name varchar(10));
insert into t1 values(1,'aaa');
insert into t1 values(2,'aaa');
insert into t1 values(3,'bbb');
insert into t1 values(4,'ccc');

主键约束+自增 auto_increment

-从历史最大值+1 只增不减

    create table t2(id int primary key auto_increment,name varchar(10));
	insert into t2 values(null,'aaa');  //1
	insert into t2 values(null,'aaa');	  //2
	insert into t2 values(10,'bbb');   //10
	insert into t2 values(null,'ccc');   //11
	delete from t2 where id>=10;
	insert into t2 values(null,'ddd');   //12

注释 comment

-创建表时给字段添加的介绍

create table t3(id int comment '这是主键',name varchar(10) comment '这是名字');

导入*.sql文件

-Linux系统:把文件放到桌面
source /home/soft01/桌面/emp.sql;
-Windows系统:把文件放到d盘根目录
source d:/emp.sql;
-检查是否成功
1.show databases;查看是不是出现了一个newdb3数据库
2.use newdb3; 使用导入的这个数据库;
3.show tables; 查看是否有emp和dept的表
4.select * from emp; 查看emp表中的数据是否存在

SQL基础语句大全

is null和is not null

1.查询没有上级领导的员工信息

select * from emp where mgr is null;

2.查询有上级领导的员工信息

select * from emp where mgr is not null;

去重 distinct

1.查询员工所从事的职业

select distinct job from emp;

比较运算符 > < >= <= = !=和<>都表示不等于

1.查询工作不是程序员的员工姓名和工作

select ename,job from emp where job!='程序员';
	select ename,job from emp where job<>'程序员';

and和or

-and类似Java中的 &&
-or类似Java中的 ||
1.查询1号部门工资低于1500的员工信息

select * from emp where deptno=1 and sal<1500;

2.查询2号部门员工或工资高于2000的员工姓名,工资,部门编号

select ename,sal,deptno from emp where deptno=2 or sal>2000;

between x and y 包含x和y

1.查询工资在2000到3000之间的员工姓名和工资

select ename,sal from emp where sal between 2000 and 3000;

in(值1,值2,…) 条件等于多个值

1.查询工资等于800,3000,1500的员工信息

select * from emp where sal in(800,3000,1500);

模糊查询like

  • %:代表0或多个未知字符
  • _ :代表一个未知字符
  1. 以x开头 x%
  2. 以y结尾 %y
  3. a开头b结尾 a%b
  4. 第二个字符是x _x%
  5. 包含x %x%
  6. 第三个字符是x倒数第二个字符是 _ _x%y _

排序

-格式:order by 字段名(默认升序 desc降序)

分页查询

-格式:limit 跳过的条数,请求的条数

各种关键字的顺序

-select … from 表名 where … order by … limit…;

别名

-给查询的字段起一个别的名字

select ename as '名字' from emp;

聚合查询:对查询的多条数据进行统计查询

1.平均值 avg(字段)
-查询一号部门的平均工资

select avg(sal) from emp where deptno=1;

2.最大值(字段)
-查询一号部门的最高工资

select max(sal) from emp where deptno=1;

3.最小值(字段)
-查询员工表中的最低工资

select min(sal) from emp;

4.求和 sum(字段)
-查询2号部门的工资总和

select sum(sal) from emp where deptno=2;

5.计数 count(字段)不为null计数
-查询一共有多少个员工一般场景使用*即可

select count(*) from emp;

分组查询: group by 字段;

-如果需求中出现每个或每种这样的关键字,则使用分组查询
-查询每个部门的平均工资

select deptno,avg(sal) from emp group by deptno;

-查询每个部门的最高工资

select deptno,max(sal) from emp group by deptno;

-查询每种职位的工资总和

select job,sum(sal) from emp group by job;

-查询每种职位的员工总数

select job,count(*) from emp group by job;

-查询每个部门工资大于1500的员工人数

select deptno,count(*) from emp where sal>1500 group by deptno;

-查询1号和3号部门的最低工资

select deptno,min(sal) from emp where deptno in(1,3) group by deptno;

having 如果条件是聚合函数的条件 则必须使用having,并且having要和group by结合使用

-查询每个部门的平均工资 要求平均工资大于2000;

select deptno,avg(sal) from emp group by deptno having avg(sal)>2000;

-查询每个部门的平均工资,值查询工资在1000-3000之间的员工,并且过滤掉平均工资低于2000的部门

select deptno,avg(sal) from emp where sal between 1000 and 3000 group by deptno having avg(sal)>=2000;

子查询(嵌套查询)

-查询工资高于员工平均工资的员工信息

select * from emp where sal>(select avg(sal) from emp);

-查询工资最高的员工信息

select * from emp where sal=(select max(sal) from emp);

-查询工资高于2号部门的平均工资的员工信息

select * from emp where sal>(select avg(sal) from emp where deptno=2);

-查询和孙悟空相同工作的其他员工信息

select * from emp where job=(select job from emp where ename='孙悟空') and ename!='孙悟空';
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/133612.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • linux安装mysql5.7 tar包(centos7搭建mysql)

    之前用的rpm安装的每次安装都是最新的,,,导致每次版本不统一。。。现在用tar包安装5.7.22和5.7.20一样的5.7.20之后的和之前的版本还是有点不一样的官网地址https://dev.mysql.com/downloads/mysql/https://dev.mysql.com/doc/refman/5.7/en/environment-variables.html…

  • python 优雅退出_Python学习教程:Python 使用 backoff 更优雅的实现轮询

    python 优雅退出_Python学习教程:Python 使用 backoff 更优雅的实现轮询我们经常在开发中会遇到这样一种场景,即轮循操作。今天介绍一个Python库,用于更方便的达到轮循的效果——backoff。Python学习教程:Python使用backoff更优雅的实现轮询backoff模块简介及安装这个模块主要提供了是一个装饰器,用于装饰函数,使得它在遇到某些条件时会重试(即反复执行被装饰的函数)。通常适用于我们在获取一些不可靠资源,比如会间歇性故障的资源等。此外,装饰…

  • 脚本是什么?[通俗易懂]

    脚本是什么?[通俗易懂]初次接触“脚本”一词并不知道这一听似非常高大上的东西是什么,尔后逐渐接触,虽有了解,但也没有仔细地总结和思考过,今日百度了一下,在此小小总结。“脚本”其实就是一段代码,一个程序。这与我们学习C语言时,写的第一个“helloworld”显示程序没有太大的区别,那为什么这个向程序之神打招呼的“helloworld”程序我们不称其为脚本呢?因为“脚本”有这些特别之处:1、脚本语法比较简单…

    2022年10月25日
  • PMF Model[通俗易懂]

    PMF Model[通俗易懂]转载自:http://blog.csdn.net/shenxiaolu1984/article/details/50372909Mnih,Andriy,andRuslanSalakhutdinov.“Probabilisticmatrixfactorization.”Advancesinneuralinformationprocessingsystems.2

  • vue项目解决跨域问题_跨域的解决方案

    vue项目解决跨域问题_跨域的解决方案在项目根目录下新建vue.config.js文件,里面内容如下module.exports={devServer:{proxy:{‘/api’:{target:’http://localhost:8080/’,//跨域请求地址changeOrigin:true,//开启代理,是否实现跨域pathRewrite:{.

  • CSS样式表优先级

    CSS样式表优先级前端入门学习笔记(持续更新中)以下结论仅基于浏览器的表现,不涉及深层原理,有待深入。 行内样式VS内部样式、链接样式、导入样式 *结论:行内样式优先级最高 内部样式VS链接样式 …

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号