文章目录
- 一、SQL通用语法
- 二、SQL分类
- 三、DDL语句
- 四、DML语句
- 1.案例代码
- 2.读出结果
- 五、DQL语句
- 1.DQL-基本查询
- 2.DQL-条件查询
- 3.DQL-聚合函数
- 4.DQL-分组查询
- 5.DQL-排序查询
- 6.DQL-分页查询
- 7.DQL语句-执行顺序
- 1.案例代码
- 2.读出结果
- 六、DCL语句
- 1.DCL-管理用户
- 2.DCL-权限控制
- 1.案例代码
在当今数据库驱动的世界里,SQL(结构化查询语言)作为一门管理数据的语言,对开发者而言极为关键。不论你是在做后端开发、数据科学,或者是设计和维护数据库,一个深入的SQL基础知识对你都大有裨益。
在这篇博客中,我将为你提供一个全套的SQL教程,涵盖了从最基础的SQL通用语法,到更复杂的DDL(数据定义语言),DML(数据操作语言)以及DQL(数据查询语言)等。每一部分都包含了相应的图解以及示例代码,以便于你更好地理解和掌握SQL语句的使用。
不论你是初学者还是有一些SQL使用经验的开发者,我希望这篇博客都能对你有所帮助。让我们一起深入到SQL的世界里,掌握这门强大的数据管理语言。
一、SQL通用语法
二、SQL分类
三、DDL语句
四、DML语句
1.案例代码
代码如下(示例):
INSERT 表_name VALUES (1,'小明',19,92,85,95),(2,'小红',18,82,75,95),(3,'小王',21,66,88,55),(4,'小聪',20,92,84,95),(5,'小东',20,98,95,65);
UPDATE 表_name SET name = '张三',age = 25 where ID=1;
UPDATE 表_name SET name = '王五',age = 35 where ID=3;
UPDATE 表_name SET name = '李四',age = 28 where ID=5;
2.读出结果
五、DQL语句
1.DQL-基本查询
2.DQL-条件查询
3.DQL-聚合函数
注意:null值不参与所有聚合函数运算。
4.DQL-分组查询
5.DQL-排序查询
6.DQL-分页查询
7.DQL语句-执行顺序
1.案例代码
代码如下(示例):
create table emp
(id int comment '编号',workno varchar(10) comment '工号',name varchar(10) comment '姓名',gender char(1) comment '性别',age tinyint unsigned comment '年龄',idcard char(18) comment '身份证号',workaddress varchar(50) comment '工作地址',entrydate date comment '入职时间'
) comment '员工表';insert into emp(id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (1, '1', '柳岩', '女', 20, '123456789012345678', '北京', '2000-01-01'),(2, '2', '张无忌', '男', 18, '123456789012345670', '北京', '2005-09-01'),(3, '3', '韦一笑', '女', 38, '123456789012345670', '上海', '2005-08-01'),(4, '4', '赵敏', '女', 18, '123456789012345670', '北京', '2009-12-01'),(5, '5', '小昭', '女', 16, '123456789012345678', '上海', '2007-07-01'),(6, '6', '杨逍', '男', 28, '12345678901234567X', '北京', '2006-01-01'),(7, '7', '范瑶', '男', 40, '123456789012345670', '北京', '2005-05-01'),(8, '8', '黛绮丝', '女', 38, '123456789012345670', '天津', '2015-05-01'),(9, '9', '范凉凉', '女', 45, '123456789012345678', '北京', '2010-04-01'),(10, '10', '陈友谅', '男', 53, '123456789012345670', '上海', '2011-01-01'),(11, '11', '张士诚', '男', 55, '123456789012345670', '江苏', '2015-05-01'),(12, '12', '常遇春', '男', 32, '123456789012345670', '北京', '2004-02-01'),(13, '13', '张三丰', '男', 88, '123456789012345678', '江苏', '2020-11-01'),(14, '14', '灭绝', '女', 65, '123456789012345670', '西安', '2019-05-01'),(15, '15', '胡青牛', '男', 70, '12345678901234567X', '西安', '2018-04-01'),(16, '16', '周芷若', '女', 18, null, '北京', '2012-06-01');
- ------------------------------------ -> 查询需求 <- ------------------------------------------------ 基本查询-- 1,查询指定字段 name ,woekno , age 返回select name,workno,age from emp;-- 2,查询指定所有字段 返回select id, workno, name, gender, age, idcard, workaddress, entrydate from emp;select * from emp;-- 查询所有员工的工作地址,起别名select workaddress as '工作地址' from emp;-- 查询所有员工的工作地址(不要重复)select distinct workaddress as '工作地址' from emp;-- 条件查询-- 1,查询年龄等于 88 的员工select * from emp where age = 88;-- 2,查询没有身份证的员工信息select * from emp where idcard is null;-- 3,查询年龄在 15 到 20 岁之间的员工select * from emp where age >=15 && age <=20 ;-- 4,查询性别为女年龄小于 25 岁的员工select * from emp where gender = '女' && age < 25;-- 5,查询年龄等于20或40或18岁的员工select * from emp where age iN(18,20,40);-- 6,查询性别为两个字员工select * from emp where name like '__';-- 7.查询身份证号码最后一位为X的员工信息select * from emp where idcard like '%X';-- 聚合函数-- 1,统计该企业员工数量select count(*) from emp;
select count(idcard) from emp;-- 2,统计该企业员工的平均年龄select avg(age) from emp;-- 3,统计该企业西安地区员工的年龄之和select sum(age) from emp where workaddress = '西安';-- 分组查询-- 1,根据性别分组,统计男员工与女员工的数据select gender, count(*) from emp group by gender;-- 2,根据性别分组,统计男员工与女员工的平均成绩select gender, avg(age) from emp group by gender;-- 3,调查年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址select workaddress, count(*) from emp where age<=45 group by workaddress;-- 排序查询-- 1,根据性别分组,统计男员工与女员工的数据select * from emp order by age asc ;-- 2,根据入职时间对公司的员工,进行降序排序select * from emp order by entrydate desc ;-- 3,根据年龄对公司的员工进行升序排序,如果年龄相同,再根据入职时间进行降序排序select * from emp order by age asc , entrydate desc ;-- 分页查询-- 1,查询第一页的员工数据,每页展示10条记录select * from emp limit 0,10;-- 2,查询第二页的员工数据,每页展示10条记录select * from emp limit 10,10;
2.读出结果
– 1,查询指定字段 name ,woekno , age 返回
– 2,查询指定所有字段 返回
– 查询所有员工的工作地址,起别名
– 查询所有员工的工作地址(不要重复)
– 1,查询年龄等于 88 的员工
– 2,查询没有身份证的员工信息
– 3,查询年龄在 15 到 20 岁之间的员工
– 4,查询性别为女年龄小于 25 岁的员工
– 4,查询年龄等于20或40或18岁的员工
– 6,查询性别为两个字员工
– 7.查询身份证号码最后一位为X的员工信息
– 聚合函数
– 1,统计该企业员工数量
– 2,统计该企业员工的平均年龄
– 3,统计该企业西安地区员工的年龄之和
– 分组查询
– 1,根据性别分组,统计男员工与女员工的数据
– 2,根据性别分组,统计男员工与女员工的平均成绩
– 3,调查年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
– 分组查询
– 1,根据年龄对公司的员工进行升序排序
– 2,根据入职时间对公司的员工,进行降序排序
– 3,根据年龄对公司的员工进行升序排序,如果年龄相同,再根据入职时间进行降序排序
– 分页查询
– 1,查询第一页的员工数据,每页展示10条记录
– 2,查询第二页的员工数据,每页展示10条记录
六、DCL语句
1.DCL-管理用户
2.DCL-权限控制
1.案例代码
代码如下(示例):
-- 创建用户 itcast ,只能够在当前主机localhost访问,密码123456;create user 'itcast'@'localhost' identified by '123456';-- 创建用户 heima ,可以在任意主机访问数据库,密码123456;create user 'heima'@'%' identified by '123456';-- 修改用户 heima 密码,为 1234 ;alter user 'heima'@'%' identified with mysql_native_password by '1234';-- 删除用户 'itcast'@'localhost'用户drop user 'itcast'@'localhost';-- 查询权限show grants for 'heima'@'%';-- 授予权限grant all on itcast.* to 'heima'@'%';-- 撤销权限revoke all on itcast.*from 'heima'@'%';