SQL语句的类型

简介: SQL语句的类型

DDL(Data Definition Language)数据定义语言

DML(Data Manipulation Language)数据操作语言

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

DCL(Data Control Language)数据控制语言

DDL

DDL是数据定义语言,主要是对数据库和数据表的操作


(1)操作数据库

--创建库

create database 库名;

--创建库时判断库是否存在,不存在则创建

create database if not exists 库名;

--查看所有数据库

show databases;

--使用指定数据库

use 库名;

--查看当前指定数据库包含的数据表

show tables;

--查看数据库的结构定义信息

show create database 库名;

--删除数据库

drop database 库名;

--修改数据库的字符集为utf8

alter database 库名 character set utf8;


(2)操作数据表

--创建表

create table 表名(

字段1 类型1,

字段2 类型2,

字段3 类型3,

...........

);

--查看表结构

desc 表名;

--查看创建表的SQL语句

show create table 表名;

--修改表名

alter table 表名 rename to 新的表名;

--添加一个新的字段

alter table 表名 add 字段; 字段类型;

--修改字段名

alter table 表名 rename column 字段名 to 新的字段名;

--修改字段类型(注意类型修改前后数据是否兼容)

alter table 表名 modify column 字段名 新的字段类型;

--删除一个字段

alter table 表名 drop 字段名;

--删除表

drop table 表名;

--删除表时判断表是否存在,若存在则删除

drop table if exists 表名;


DML

DML是数据操作语言,主要是对数据表的操作


(1)插入数据(insert into)

数据表插入数据分为全字段插入数据和部分字段插入数据


①全字段插入数据(有两种方法,推荐第一种方法)


--有多少个字段,就要写多少个值,且是一一对应的

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

--此方法要写出所有字段,并一一对应插入值

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

②部分字段插入数据


--部分字段插入数据,只写需要插入数据的字段名

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

(2)删除数据(delete / truncate)

--删除表中所有数据

delete from 表名;

--删除表中指定的数据

delete from 表名 where 字段 = 值;

--删除表中所有数据(先删除整张表,然后创建一张一样的空表,此方法更高效)

truncate table 表名;

(3)修改数据(update)

--无限制条件的修改,会修改整张表

update 表名 set 字段 = 值;

--有限制条件的修改,只修改特定记录

update 表名 set 字段 = 值 where 条件(字段 = 值);

DQL

DQL是数据查询语言,主要就是select配合其他限制条件的关键字进行查询


(1)无条件查询

--查询表中所有数据

select *from 表名;

(2)查询在...到...之间(between and / && / and)

--查询users表中年龄在18~25岁之间的记录

--方式1 between..and..

select *from users where age between 18 and 25;

--方式2 &&

select *from users where age>=18 && age<=25;

--方式3 and

select *from users where age>=18 and age<=25;

(3)指定条件查询

①单个条件(or / in)


--查询users表中年龄为18,20,25岁的记录

--方式1 or

select *from users where age=18 or age=20 or age=25;

--方式2 in

select *from users where age in(18,20,25);

②多个条件(and)


--查询users表中年龄为23,性别为女,名字为小楠的记录

select *from users where age=23 and gender='女' and name='小楠';

(4)查询不为NULL值(is not null),为NULL值(is null)

--查询users表中序号不为空的记录

select *from users where id is not null;

--查询user表中序号为空的记录

select *from users where id is null;

(5)模糊查询(like)

_:单个任意字符

%:多个任意个字符

--查询users表中姓名第一个字为李的记录

select *from users where name like '李%';

--查询users表中姓名第二个字为李的记录

select *from users where name like '_李%';

--查询users表中姓名含有李字的记录

select *from users where name like '%李%';

--查询users表中姓名是两个字的记录

select *from users where name like '__';

(6)去除重复记录查询(distinct)

--查询users表中所在城市不相同的记录

--select distinct 字段 from 表名;

select distinct city from users;

(7)排序查询(order by)

①单个条件


--查询users表中记录,并以年龄升序排序

select *from users order by age; --默认升序

--查询users表中记录,并以年龄降序排序

select *from users order by age desc;--desc降序

②多个条件


注意:多个排序条件时,只有当第一个排序条件值一样,才会执行第二个排序条件,以此类推


--查询users表中记录,并体育成绩降序,年龄降序

select *from users order by PE desc,age desc;

(8)聚合函数

①计算和(sum)


select sum(字段) (as sumvalue) from 表名;

②计算最大值(max)


select max(字段) (as maxvalue) from 表名;

③计算最小值(min)


select min(字段) (as minvalue) from 表名;

④计算平均值(avg)


select avg(字段) (as avgvalue) from 表名;

⑤计算个数(count)


select count(字段) (as totalcount) from 表名;

(9)分组查询(group by)

--查询users表中的记录,按照性别分组,查询男,女的体育成绩平均分

select gender,avg(PE) from users group by gender;

--查询users表中的记录,按照性别分组,分别查询男、女的体育成绩平均分,人数

select gender, avg(PE),count(id) from users group by gender;

--查询users表中的记录, 按照性别分组,分别查询男、女的体育成绩平均分,人数 要求:分数低于60分的人,不参与分组

select gender, avg(PE),count(id) from users where PE > 60 group by gender;

--查询users表中的记录,按照性别分组,分别查询男、女的体育成绩平均分,人数 要求:分数低于60分的人,不参与分组,分组之后,人数要大于2个人

select gender,avg(PE),count(id) from users where PE > 60 group by gender having count(id)>2;


相关文章
|
3月前
|
SQL Java 分布式数据库
Flink CDC HBase字段类型与Flink SQL类型之间的转换
【1月更文挑战第4天】【1月更文挑战第19篇】Flink CDC HBase字段类型与Flink SQL类型之间的转换
103 1
|
2月前
【干货】sql-labs、请求方式、注入类型、拼接方式
【干货】sql-labs、请求方式、注入类型、拼接方式
18 0
|
3月前
|
SQL 关系型数据库 数据库
实时计算 Flink版操作报错之使用SQL 将 PostgreSQL 的 date 类型字段转换为 TIMESTAMP 类型时遇到报错,该如何处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
23天前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之相同的SQL语句在不同时间执行EXPLAIN计划显示出不同的索引类型,是什么原因
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
PolarDB产品使用问题之相同的SQL语句在不同时间执行EXPLAIN计划显示出不同的索引类型,是什么原因
|
25天前
|
JSON 数据格式 SQL
SQL开发问题之直接使用join方法在处理字符串类型属性时可能会遇到性能问题如何解决
SQL开发问题之直接使用join方法在处理字符串类型属性时可能会遇到性能问题如何解决
|
20天前
|
SQL 存储 API
ES 实战复杂sql查询、修改字段类型
ES 实战复杂sql查询、修改字段类型
29 1
|
28天前
|
SQL 存储 数据库
MySQL设计规约问题之如何处理日志类型的表
MySQL设计规约问题之如何处理日志类型的表
|
3月前
|
SQL 关系型数据库 数据库
实时计算 Flink版产品使用合集之将数据写入Elasticsearch时,若Elasticsearch中的字段类型为date,对应的SQL类型应该是什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
3月前
|
SQL 安全 API
|
3月前
|
SQL 监控 Java
Flink报错问题之Flink sql tinyint类型使用in报错如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。