概述:
英文: Structured Query Language 简称SQL 中文: 结构化查询语言
是专门用来操作关系型数据库(由各个二维表联系在一起的数据组织)的编程语言
在不同的数据中,会存在一些特定形式的语言书写方式,我们称为"方言"
SQL的分类:
根据使用的方向不同,分为了4大类:
DDL(Data Definition Language ) : 数据定义语言(不常用,只会在创建数据库和表的时候用),
用来定义(创建)数据库 , 表 , 列等. 就是对数据库, 表, 列,进行增删改查, (不操作数据)
DML(Data Manipulation Language ): 数据操作语言(在工作中使用频率较高)
对数据库中的数据进行增删改查, 也就是操作表中的数据
DQL(Data Query Language ) 数据查询语言(在工作中使用频率非常高)
用来查询数据库中的数据,根据我们的要求查询相应的数据
DCL(Data Control Language) 数据控制语言(这涉及到数据库的权限安全,不会常用到)
用来定义数据库的访问权限和安全级别,及创建用户
DDL 操作数据库:
数据库:
SHOW DATABASES; 查询所有数据库
CREATE DATABASE 数据库名称 ; 创建指定名字的数据库
CREATE DATABASE IF NOT EXISTS 数据库名称 ; 先判断该名称的数据库是否存在,若存在,不创建,若不存在,创建,
DROP DATABASE 数据库名称 ; 删除指定名称的数据库
DROP DATABASE IF EXISTS 数据库名称; 先判断该名称的数据库是否存在,若存在,删除,若不存在,不报错,
USE 数据库名称; 使用该名称的数据库
SELECT DATABASE( ); 查看当前使用的数据库
-- ---DDL操作数据库---- -- 创建一个名为aaa的数据库 CREATE DATABASE aaa; -- 插入判断 CREATE DATABASE IF EXISTS aaa; -- 查询所有的数据库 SHOW DATABASES; -- 删除指定的aaa数据库 DROP DATABASE aaa; -- 插入判断 DROP DATABASE IF EXISTS aaa;
表:
查询当前数据库下所有的表 SHOW TABLES;
查询表的结构 DESC 表名称;
创建指定名称的表 CREATE TABLE 表名称( 字段名1 数据类型1,
字段名2 数据类型2,
字段名3 数据类型3,)
删除指定名称的表 DROP TABLE 表名;
删除表时判断表是否存在 DROP TABLE IF EXISTS 表名;
-- ---DDL操作表---- -- 创建一个名为tb_uesr4的表 CREATE TABLE tb_uesr4(stuName VARCHAR(10), stuAge INT, stuGender ARCHAR(10) ); -- 查询当前数据库下所有的表 SHOW TABLES; -- 查询指定tb_uesr4的表的结构 DESC tb_uesr4; -- 删除指定的tb_uesr4表 DROP DATABASE tb_uesr4; -- 插入判断 DROP DATABASE IF EXISTS tb_uesr4;
修改表名 ALTER TABLE 表名 RENAME TO 新的表名:
添加列 ALTER TABLE 表名 ADD 列名 数据类型;
修改数据类型 ALTER TABLE 表名 MODIFY 列名 新数据类型;
修改列名和数据类型 ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
删除列 ALTER TABLE 表名 DROP 列名;
-- DDL对表的增删改 -- 修改表的名称 将tb_user改成tb_user222 ALTER TABLE tb_user RENAME TO tb_user222; -- 添加一列 名为ID 数据类型为int ALTER TABLE tb_user ADD ID INT; -- 修改数据类型 ID列的数据类型改为varchar ALTER TABLE tb_user MODIFY ID VARCHAR; -- 修改列名和数据类型 ALTER TABLE tb_user CHANGE ID newID INT;
DML的增删改:
添加数据:
insert into 表名 values (值1,值2.....); 给全部字段添加数据
insert into 表名 (字段1,字段2....) values (值1,值2.....); 给指定的某些字段添加数据
insert into 表名 values(值1,值2....),(值1,值2....),(值1,值2....), 批量添加数据
删除数据:
delete from 表名 where 删除条件; 删除满足指定条件的数据
delete from 表名; 删除表中的所有数据
修改数据:
update 表名 set 列名1 = 值1 where 修改条件; 修改指定条件中的一列数据
update 表名 set 列名1 = 值1 ,列名2 = 值2 where 修改条件; 修改多条数据
update 表名 set 列名1 = 值1 ; 修改所有数据中的一列
DQL的查询:
基础查询:
select 字段名称1 ,字段名称2.... from 表名; 查询表中某个字段或多个字段的数据
select distinct 字段列表 from 表名; 查询的同时对数据进行去重
条件查询:
select 字段列表 from 表名 where 条件列表; 根据指定条件进行查询
模糊查询: (关键字: " _" " % ")
select 字段列表 from 表名 wher 字段 like " _元素a "; 查询第二个数值时元素a的数据
select 字段列表 from 表名 wher 字段 like " 元素a % "; 查询以元素a开头的数据
select 字段列表 from 表名 wher 字段 like " % 元素a %"; 查询包含元素a的数据
排序查询: 关键字: ASC(升序) DESC(降序)
select 字段列表 from 表名 orde by 排序规则; 按照指定排序规则进行查询排序
select 字段列表 from 表名 orde by 排序规则1, 排序规则2 指定备用排序
聚合函数:
-对一列数据进行纵向运算-
count(列名) //统计数量(不包含null)
max(列名) //获取最大值
min(列名) //获取最小值
sum(列名) //获取数据总和
avg(列名) //获取平均数select 聚合函数名(列名) from 表名;
分组查询: 关键字: group by( ) having ( )
select 字段列表 from 表名 [ where 分组前条件过滤 ] group by (字段名) [having 分组后条件过滤] 根据指定的字段名进行排序
分页查询: 关键字 limit (MySQL数据库的方法)
select 字段列表 from 表名 limit 起始索引,查询条目数;
起始索引 = (当前要查询第几页 -1 ) * 条目数