MySql基础-SQL

时间:2024-04-15 07:02:08

简介

英文:Structured Query Language,简称SQL
结构化查询语言,是一门操作关系型数据库的编程语言
定义操作所有非关系型数据库的统一标准
对于同一个需求,每一种数据库操作的方式可能会存在一些不一样的地方,我们称为"方言"

通用语法

  1. SQL语句可以单行写或多行书写,以分号结尾
  2. MySQL数据库的SQL语句不区分大小写,关键字建议用大写
  3. 注释
    1. 单行注释:–注释内容 或 #注释内容(MySQL特有)
    2. 多行注释: /* 注释内容 */

分类

  • DDL(definition) 数据定义语言,用来定义数据库对象:数据库,数据表等
  • DML(manipulation)数据操作语言,用来对数据库中表的数据进行增删改
  • DQL(query)数据库查询语言,用来查询数据库中表的数据
  • DCL(control)数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户

Snipaste_2024-04-10_16-54-24.png

DDL

–操作数据库

  1. 查询

SHOW DATABASES;

  1. 创建

CREATE DATABASE 数据库名称;
CREATE DATABASE IF NOT EXISTS 数据库名称;(不存在则创建)

  1. 删除

DROP DATABASE 数据库名称;
DROP DATABASE IF EXISTS 数据库名称;(存在则删除)

  1. 使用数据库

SELECT DATABASE(); 查看当前使用的数据库名称
USE 数据库名称; 使用数据库

–操作表

  1. 查询表

SHOW TABLES; 查询当前数据库下所有表名称
DESC 表名称; 查询表结构

  1. 创建表

CREATE TABLE 表名(
字段名1 数据类型1,
字段名2 数据类型2,

字段名n 数据类型n
);
MySQL支持多种类型,分为三类
数值,日期,字符串

类型 描述
int 整型
double 浮点型
varchar 字符串型(可变长度)
date 日期类型,yyyy-MM-dd
datetime yyyy-MM-dd HH-ss-mm
char 固定长度的字符串(缺少自动补空格)
  1. 修改表

ALTER TABLE 表名 RENAME TO 新的表名; 修改表名
ALTER TABLE 表名 ADD 列名 数据类型; 添加一列
ALTER TABLE 表名 MODIFY 列名 新数据类型; 修改数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型; 修改列名和数据类型
ALTER TABLE 表名 DROP 列名; 删除列

  1. 删除表

DROP TABLE 表名;
DROP TABLE IF EXISTS 表名;

DML --操作表

  1. 添加

INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…); 给指定列添加数据
INSERT INTO 表名(全部列名) VALUES(全部值和列名对好); 给全部列添加数据
INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)…; 批量添加数据
给字符串,日期类型添加值时建议使用英文单引号

  1. 修改

UPDATE 表名 SET 列名1=值1,列名2=值2,…[WHERE 条件];
不加where条件就是修改所有语句

  1. 删除

DELETE FROM 表名 [WHERE 条件];
DELETR FROM 表名 WHERE id in (2,3); 删除多行记录
不加条件就是删除所有数据
在开发中通常用下面那条语句来进行删除所有数据
TRUNCATE TABLE 表名; (属于DDL,删除表记录)


delete和truncate的区别
delete是一行一行数据删除
truncate是先删除表,在创建一张相同结构的表(先drop table 表,然后再create table 表)

DQL --查询表

基础查询

  1. 查询多个字段

SELECT 字段列表 FROM 表名;
SELECT * FROM 表名; 查询所有数据

  1. 去除重复记录

SELECT DISTINCT 字段名,字段名,…FROM 表名;
当有多个字段一起去重,字段值全部一样才会被去重

  1. 别名

SELECT 字段名1 AS 别名,字段名2 AS 别名… FROM 表名AS 表别名; 其中AS可以省略 用双引号

条件查询

SELECT 字段列表 FROM 表名 WHERE 条件列表;
Snipaste_2024-04-10_21-08-30.png

排序查询

SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
排序方式:ASC:升序(默认) DESC: 降序
注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序

分组查询

聚合函数
概念:
将一列数据作为一个整体,进行纵向计算
分类:
Snipaste_2024-04-10_21-28-11.png
语法:
SELECT 聚合函数名(列名) FROM 表;
注意:null值不参与所有聚合函数运算
如果字段值有null,mysql中null值和任何值相加为null,在聚合函数中不做统计,这时要用到mysql自带的函数ifnull函数
Snipaste_2024-04-10_21-37-45.png
分组定义
就是按照某一列或者某几列,把相同的数据进行合并输出
查询语法
SELECT 字段列表 FROM 表名 [WHERE 分组前条件限定] GROUP BY 分组字段名 [HAVING 分组后条件过滤];
Snipaste_2024-04-10_21-49-55.png
注意
在进行分组查询时,书写在select关键字后面的列名,要么出现在group by后面,要么使用聚合函数包含

分页查询

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询条目数;
Snipaste_2024-04-10_21-53-39.png

SQL语句的执行顺序

from,where,group by,having,select,order by,limit