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)
blank

相关推荐

  • Java多线程学习(吐血超详细总结)

    Java多线程学习(吐血超详细总结)本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。

  • 100个Python练手小程序[通俗易懂]

    100个Python练手小程序[通俗易懂]100个Python练手小程序,学习python的很好的资料,覆盖了python中的每一部分,可以边学习边练习,更容易掌握python。【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去      掉不满足条件的排列。2.程序源代码:foriinrange(…

  • docker部署web项目_docker到底怎么用

    docker部署web项目_docker到底怎么用前言前面我们运行的容器并没有一些什么特别的用处。接下来让我们尝试使用docker构建一个web应用程序。我们将在docker容器中运行一个PythonFlask应用来运行一个web

  • vector insert用法 C++「建议收藏」

    vector insert用法 C++「建议收藏」#include#includeusingnamespacestd;intmain(){vectorv(3);v[0]=2;//v[0]是第0个元素v[1]=7;v[2]=9;v.insert(v.begin(),8);//在最前面插入新元素。v.insert(v.begin()+

  • java 字符串中的每个单词的倒序输出「建议收藏」

    java 字符串中的每个单词的倒序输出「建议收藏」 面试题之–java 字符串中的每个单词的倒序输出1、输入一句英文,将句子倒序输出,忽略最后的标点。package shenjin;import java.util.Scanner;/** * 输入一句英文,将英文句子反转 * * @author LENOVO * */public class ReverseEnglish { public static vo…

  • 如何使用等价类划分法编写测试用例的结果_划分等价类设计测试用例

    如何使用等价类划分法编写测试用例的结果_划分等价类设计测试用例案例:如下图所示的一个两位整数加法器,需求分析中要求:①第一个数和第二个数都是只能输入-99到99之间的整数②对于输入的小于-99的数据或者大于99的数据,程序应给出明确提示③对于输入的小数、字符等非法数据,程序应给出明确提示基于上述需求,使用等价类划分法编写测试用例的步骤如下:1.根据需求分析,建立等价类表(1)有效等价类表编号数据要求1-99——0之间的整…

    2022年10月17日

发表回复

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

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