目录
一.数据模型
二.SQL通用语法
三.SQL的分类
1.DDL
DDL---操作数据库
DDL---操作表
2.DML
DML---操作数据
3.DQL(重点)
基础查询
条件查询
排序查询
分组查询
分页查询
扩展: 聚合函数
一.数据模型
数据库在内存中是以文件夹的方式存在
数据表和数据是以文件的形式存在
二.SQL通用语法
1.SQL 语句可以单行或多行书写,以分号结尾
2.MySQL 数据库的 SQL 语不区分大小写,关键字建议使用大写
3.注释
单行注释:-- 注释内容(--后的空格不能省略)或#注释内容(#后没有空格)(MySQL 特有)多行注释:/* 注释*/
示范:
三.SQL的分类
DDL(Data Definition Language) 数据定义语言,用来定义数据库对象: 数据库,表,列等DML(Data Manipulation Language) 数据操作语言,用来对数据库中表的数据进行增删改
DQL(Data Query Language)数据查询语言,用来查询数据库中表的记录(数据)
DCL(Data Control Language) 数据控制语言,用来定义数据库的访问权限和安全级别,及创建用户1.DDL
DDL---操作数据库
1.查询 SHOW DATABASES;
2.创建----->创建数据库 CREATE DATABASE 数据库名称;
创建数据库(判断,如果不存在则创建) CREATE DATABASE IF NOT EXISTS 数据库名称;
3.删除----->删除数据库 DROP DATABASE 数据库名称;
删除数据库(判断,如果存在则删除) DROP DATABASE IF EXISTS 数据库名称;
4.使用数据库----->查看当前使用的数据库 SELECT DATABASE();
使用数据库----->USE 数据库名称;DDL---操作表
1.创建表(Create)
Create Table 表名(
字段名1 数据类型1,
字段名2 数据类型2,
...
字段名n 数据类型n
)
注意: 是字段名在前,数据类型在后, 最后一个末尾不需要逗号
2.查询表(Retrieve)
查询当前数据库下所有表的名称 Show Tables;
查询表结构 Desc 表名称;
3.修改表(Update)
1修改表名 ALTER TABLE 表名 RENAME TO 新的表名;
2.添加一列 ALTER TABLE 表名 ADD 列名 数据类型;
3.修改数据类型 ALTER TABLE 表名 MODIFY 列名 新数据类型;
4.修改列名和数据类型 ALTER TABLE 表名 CHANGE 列名 新列名新数据类型;
5.删除列 ALTER TABLE 表名 DROP 列名;4.删除表(Delete)
Drop Table 表名;
判断是否存在再删除表 Drop Table if exites 表名;
2.DML
DML---操作数据
1.添加数据
(1)给指定列添加数据
INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...);
(2)给全部列添加数据
INSERT INTO 表名 VALUES(值1,值2,...);
(3)批量添加数据
INSERT INTO 表名(列名1,列名2,...) VALUES(值1,值2,...),(值1,值2,...),(值1,值2,.....);INSERT INTO 表名 VALUES(值1,值2,...),(值1,值2,..),(值,值2,.....);
2.修改数据
修改表数据
UPDATE 表名 SET 列名1=值1,列名2=值2,... WHERE 条件;
注意:修改语句中如果不加条件则将所有数据都修改修改前:
修改后:
3.删除数据
DELETE FROM 表名 WHERE 条件 ;
注意:删除语句中如果不加条件,则将所有数据都删除3.DQL(重点)
查询语法
SELECT
字段列表
FROM
表名列表WHERE
条件列表GROUP BY
分组字段HAVING
分组后条件ORDER BY
排序字段
LIMIT
分页限定基础查询
条件查询(WHERE)
分组查询(GROUP BY)
排序查询(ORDER BY)
分页查询(LIMIT)基础查询
1.查询多个字段
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名;-- 查询所有数据2.去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
3.起别名
AS: AS 也可以省略条件查询
1.条件查询语法
SELECT 字段列表 FROM 表名 WHERE 条件列表;
2.条件符号 功能
> 大于
< 小于
>= 大于等于
<= 小于等于
= 等于
<>或 != 不等于
BETWEEN ... AND ... 在某个范围之内(都包含)
IN(...) 多选一
LIKE 占位符 模糊查询, _单个任意字符 %多个任意字符
IS NULL 是NULL
IS NOT NULL 不是NULL
AND 或 && 并且
OR或Il 或者
NOT 或! 非,不是排序查询
1.排序查询语法
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1[排序方式1],排序字段名2[排序方式2] ...;
排序方式
ASC:升序排列(默认值)
DESC:降序排列
注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序中分组查询
1.分组查询语法
SELECT 字段列表 FROM 表名[WHERE 分组前条件限定] GROUP BY 分组字段名[HAVING 分组后条件过滤];
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
where和 having 区别:
执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过滤.
可判断的条件不一样: where 不能对聚合函数进行判断,having 可以。
执行顺序: where > 聚合函数 >having分页查询
1.分页查询语法
SELECT 字段列表 FROM 表名 LIMIT起始索引,查询条目数;
起始索引:从0开始
计算公式: 起始索引 =(当前页码-1) 每页显示的条数
tips:
分页查询limit是MysQL数据库的方言
Oracle分页查询使用rownumber
SQL Server分页查询使用 top
扩展: 聚合函数
1.概念: 将一列数据作为一个整体, 进行纵向计算
2.聚合函数的分类:
函数名 功能
count(列名) 统计数量(一般选用不为null的列)
max(列名) 最大值
min(列名) 最小值
sum(列名) 求和
avg(列名) 平均值
3.语法:select 聚合函数名(列名) from 表;
注意: null不会参与聚合函数的运算