SQL
SQL通用语法
-
SQL语句可以单行或多行书写,以分号结尾。
-
SQL语句可以使用空格/缩进来增强语句可读性。
-
MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
-
注释
-
单行注释:--注释内容或者#注释内容(MySQL特有)
-
多行注释:/* 注释内容 */
-
DDL-数据库操作
查询
-
查询所有数据库
show databases;
-
查询当前数据库
select database();
创建
create database [if not exists]数据库名 [default charset 字符集] [collate 排序规则];
删除
drop database[if exists] 数据库名;
使用
use 数据库名;
DDL表操作
DDL-表操作-修改
-
修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
-
修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度)[COMMENT 注释][约束];
-
删除字段
ALTER TABLE 表名 DROP 字段名
案例:将emp表的字段username删除
ALTER TABLE emp DROP username;
DDL-表操作-删除
删除表
DROP TABLE[IF EXISTS] 表名
删除指定表,并重新创建该表
TRUNCATE TABLE 表名
DML
DML-添加数据
给指定字段添加数据
INSERT INTO 表名(字段名1, 字段名2,...) VALUES (值1, 值2,..);
给全部字段添加数据2
INSERT INTO 表名 VALUES (值1,值2,...);
批量添加数据3
INSERTINTO 表名(字段名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 条件];
删除数据
DELETE FROM 表[WHERE 条件];
DQL语法
SELECT
字段列表
FROM
表名列表
WHERE
条件列表
GROUP BY
分组字段列表
HAVING
分组后条件列表
ORDER BY
排序字段列表
LIMIT
分页参数
案例:
查询年龄不等于 88 的员工信息
select * from emp where age != 88;
select * from emp where age> 88;
查询年龄在15岁(包含) 到 20岁(包含)之间的员工信息
select * from emp where age >= 15 && age <= 20;
select * from emp where age >= 15 and age <= 20;
select * from emp where age between 15 and 20;
查询年龄等于18 或 20 或 40 的员工信息
select * from emp where age = 18 or age = 20 or age =40;
seLect * from emp where age in(18,20,40);
查询姓名为两个字的员工信息
select * from emp where name Like '__'
查询身份证号最后一位是X的员工信息
select * from emp where idcard like'%X';
select * from emp where idcard like'_ _ _ _ _ _ _ _ _ _ _ _ _X';
DQL聚合函数
DQL-聚合函数
-
介绍
将一列数据作为一个整体,进行纵向计算。
-
常见聚合函数
-
语法
SELECT 聚合函数(字段列表) FROM 表名;
注意: null值不参与所有聚合函数运算
案例:
统计该企业员工的平均年龄
seLect avg(age) from emp;
统计该企业员工的最大年龄
select max(age) from emp;
统计该企业员工的最小年龄
select min(age) from emp;
统计西安地区员工的年龄之和
seLect sum(age) from emp where workaddress = 西安';
DQL分组查询
-
语法
SELECT 字段列表 FROM 表名 [WHERE 条件] GROUP BY 分组字段名[HAVING 分组后过滤条件];
-
where与having区别执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。判断条件不同:where不能对聚合函数进行判断,而having可以。 注意: 执行顺序: where > 聚合函数>having 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义.
案例:
-
根据性别分组 ,统计男性员工 和 女性员工的数量
select gender, count(*) from emp group by gender ;
-
根据性别分组 ,统计男性员工 和 女性员工的平均年龄
select gender, avg(age) from emp group by gender ;
-
查询年龄小于45的员工 , 并根据工作地址分组 ,获取员工数量大于等于3的工作地址
select workaddress, count(*) address_count from emp where age < 45 group by workaddress having address_count >= 3;
-
根据年龄对公司的员工进行升序排序
-
seLect * from emp order by age ascseLect * from emp order by age desc; select * from emp order by age;
-
根据入职时间,对员工进行降序排序
select * from emp order by entrydate desc;
-
根据年龄对公司的员工进行升序排序 ,年龄相同 ,再按照入职时间进行降序排序
select * from emp order by ageasoentrydate desc; select * from emp order by age asc , entrydate asc;
-
DQL-分页查询
-
语法
select 字段列表 from 表名 limit 起始索引,查询记录数;
-
注意:
-
起始索引从0开始,起始索引= (查询页码-1) * 每页显示记录数
-
分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
-
如果查询的是第一页数据,起始索引可以省略,直接简写为 imit 10。
-
案例
-
查询第1页员工数据, 每页展示10条记录
select * from emp limit 0,10; select * from emp limit 10;
-
查询第2页员工数据,每页展示10条记录 -------->(页码-1)*页展示记录数
select * from emp limit 10,10;
DQL-执行顺序
标签:age,MySQL,查询,emp,表名,where,select From: https://www.cnblogs.com/liandaozhanshi/p/17564380.html