SQL基础知识(持续更新中)

## SQL通用语法

1.单行多行书写,分号结尾;

2.可用空格、缩进来增强语句可读性

3.不区分大小写、建议关键字大写

4.注释是–或者# 多行/* */

分类

  • DDL 数据定义语言,定义数据库对象

  • DML 数据操作语言,用来对表中数据进行增删改

  • DQL 数据查询语言,用来查询数据库中表的记录

  • DCL 数据控制语言,用来创建数据库用户、控制数据库的访问权限

DDL

主要用来操作数据库的定义

DDL-数据库操作

查询所有数据库

SHOW DATABAESS

查询当前数据库

SELECT DATABASE()

创建数据库

CREATE DATABASE[IF NOT EXISTS] 数据库名[DEFAULT CHARSET 字符集][COLLATE 排序规则]
字符集用utf8md4

删除数据库

DROP DATABASE[IF EXISTS] 数据库名

使用

USER 数据库名

查询当前数据库中所有表

SHOW TABLES

查询表结构

DESC 表名

查询指定表的建表语句

SHOW CREATE TABLE 表名

表操作-创建表

CREATE TABLE 表名(
	字段1 字段1类型 COMMENT '字段1注释',
	字段2 字段2类型 COMMENT '字段2注释',
	字段3 字段3类型 COMMENT '字段3注释',
	……
	字段n 字段n类型 COMMENT '字段n注释'
)[COMMENT 表注释]

注意,如果是varchar要加上长度varchat(255)

数据类型

在这里插入图片描述

定义时候注意:

age TINYINT UNSINGED 定成无符号

score double(4,1)

字符串类型

在这里插入图片描述

char固定10位,varchar可变的,但是varchar的性能更好

性别 gender char(1)

时间类型

DDL-表操作-修改

添加字段(ADD)

ALTER TABLE 表明 ADD 字段 类型(长度) COMMENT '注释';

修改数据类型(MODIFY)

ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度)

修改字段名和类型 (CHANGE)

ALTER TABLE 表名 CHANGE 旧字段 新字段 类型(长度) COMMENT '注释';

删除字段 (DROP)

ALTER TABLE 表名 DROP 字段名

修改表名 (RENAME)

ALTER TABLE 表名 RENAME TO 新表名

删除表 (DROP)

DROP TABLE[IF EXISTS] 表名

删除指定表,并且重新创建该表 (TRUNCATE)

TRUNCATE TABLE 表名

总结

1.DDL对数据库的操作是定义数据库的;

2.DDL对于表的操作是定义表的;

DML

数据库操作语言 也就是

INSERT

UPDATE

DELETE

DML-添加数据

1.给指定字段添加数据

INSERT IN TO 表名(字段1,字段2...) VALUES(1,值2...)

2.给全部字段添加数据

INSET INTO 表名 VALUES(值1,值2,...)

这样添加是依次添加按照顺序添加到表的字段

3.批量添加数据

INSERT INTO 表名(字段1,字段2,...)VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);

INSERT INTO 表名VALUES(值1,值2,...),(值1,值2,...),(值1,值2,...);

注意:

  • 插入数据时,指定的字段顺序与值的顺序是一一对应的

  • 字符串和日期类型数据应该包含在引号中

  • 插入的数据大小,应该在字段的范围之内

DML-修改数据

UPDATE 表名 SET 字段名1=1,字段名2=2,...[WHERE 条件]

注意

  • 如果修改语句中的条件没有的话,则会修改整张表的所有数据

DML-删除数据

DELETE FROM 表名 [WHERE 条件]

注意

  • delete语句的条件也可以没有,如果没有条件的话则删除的是整张表的所有数据
  • delete没办法删除某一字段的值,他删除的是整条记录,如果想删除某一字段,只能用更新的方法

总结

DML主要处理的是表数据的操作,也就是添加数据,修改数据,删除数据

DQL

数据查询语言 关键词 SELECT

DQL相关语法

SELECT
	字段列表
FROM
	表名列表
WHERE
	条件列表
GROUP BY
	分组字段列表
HAVING
	分组后条件列表
ORDER BY
	排序字段列表
LIMIT
	分页参数
  • 基本查询(SELECT)
  • 条件查询(WHERE)
  • 聚合函数(COUNT MAX MIN AVG SUM)
  • 分组查询(GROUP BY)
  • 排序查询(ORDER BY)
  • 分页查询(LIMIT)

**注意:**分组通常伴随着聚合查询

DQL-基本查询

1.查询多个字段

SELECT 字段1,字段2,…… FROM 表名;

2.设置别名

SELECT 字段1 AS 别名1,字段2 AS 别名2,…… FROM 表名;

3.去除重复记录

SELECT DISTINCT 字段列表 FROM 表名

DQL-条件查询

基础知识

1.语法

SELECT 字段列表 FROM 表名 WHERE 条件列表
条件查询

![在这里插入图片描述](https://img-blog.csdnimg.cn/23e74e29bb6f43bdac82ca4638f8c2bf.png在这里插入图片描述

当查询年龄为18或19或20时候,可以用in,这样就代表满足其中一个就可以了
SELECT * FROM PEOPLE WHERE AGE IN (18,19,20)
聚合函数

介绍

​ 聚合函数实际上就是将一列数据作为整体,进行纵向的计算

常见的聚合函数

在这里插入图片描述

语法

聚合函数直接作用于字段就可以

SELECT 聚合函数(字段列表) FROM 表名

null是不参与所有的聚合函数运算的

分组查询

语法

SELECT 字段列表 FROM 表名 WHERE 条件 GROUP BY 分组字段名 HAVING 分组过滤后的条件

WHER和HAVING的区别

  • 执行时机不同,where是分组之前进行过滤,不满足where条件不参与分组,having是分组后对结果进行过滤
  • 判断条件不同,where不能对聚合函数进行判断,但是having可以

举例:查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址

SELECT 
WORKADDRESS,COUNT(*) AS NUM 
FROM WORKER 
WHERE AGE > 45 
GROUP BY WORKADDRESS 
HAVING NUM > 3

注意

  • 执行顺序:where > 聚合函数 > having
  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段没有任何意义(切记)
排序查询

1.语法

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排列方式1,字段2 排列方式2……;

可以指定多字段排序

2.排序方式

  • ASC:升序(默认)
  • DESC:降序

注意:如果是多字段排序,当第一个字段相同时候,才会根据第二个字段排序

举例:根据年龄对公司员工员工年龄进行升序排序,年龄相同,再按照入职时间进行降序排序

SELECT * FROM WORKER ORDER BY AGE ASC, ENTERDATE DESC;
分页查询

1.语法

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数量;

注意

  • 起始索引从0开始,起始索引=(查询页码-1)*每页显示的记录数;
  • 分月查询在不同的数据库中有不同的实现方式,MySQL是LIMIT
  • 如果查询的是第一页的数据,那么起始索引可以省略,直接简写成LIMIT10(查询数量)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值