第二章:DML、DQL和DCL

一、DML介绍

DML(Data Manipulation Language)数据操作语言

(1)添加数据(insert)

注意:

1.插入数据时,指定的字段顺序需要与值是一一对应的。

2.字符串和日期数据应该包含在引号中。

3.插入的数据大小,应该在字段的规定范围内。

(2)修改数据(update)

注意:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。

(3)删除数据(delete)

注意:delete语句的条件可以有,也可以没有,如果没有条件,则会删除整张表的所有数据。

delete语句不能删除某一字段的值(可以使用update)。

二、DQL

1.介绍

DQL(Data Query Language)数据查询语言,用来查询数据库中表的记录。

查询关键字:select

2.DQL-语法

(1)基本查询

a.查询多个字段

select 字段1,字段2,字段3.... from 表名;

select * from 表名;

b.设置别名

select 字段1 [AS 别名1],字段2 [AS 别名2] ... from 表名;

c.去除重复记录

select distinct 字段列表 from 表名;

(2)条件查询(where)

1.语法

select 字段列表 from 表名 where 条件列表;

2.条件

案例代码

sql 复制代码
-- 条件查询
-- 1.查询年龄等于38的员工
select * from employee where age = 38;
-- 2.查询年龄小于20的员工信息
select * from  employee where age < 20;
-- 3.查询年龄小于等于20的员工信息
select * from employee where age <= 20;
-- 4.查询没有身份证号的员工信息
select * from employee where idcard is null;
-- 5.查询有身份证号的员工信息
select * from employee where idcard is not null;
-- 6.查询年龄不等于38的员工信息
select * from employee where age != 38;
select * from employee where age <> 38;
-- 7.查询年龄在15岁到20岁之间的员工信息
select * from employee where age >= 15 && age <= 20;
select * from employee where age >= 15 and age <= 20;
select * from employee where age between 15 and 20;
-- 8.查询性别为女且年龄小于25岁的员工信息
select * from employee where gender = '女' && age < 25;
-- 9.查询年龄等于18或20或38的员工信息
select * from employee where age = 18 or age = 20 or age = 38;
select * from employee where age in(18,20,38);
-- 10.查询姓名为两个字的员工信息 _ %
select * from employee where name like  '__';
-- 11.查询身份证号最后一位是X的员工信息
select * from employee where idcard like '%X';

(3)聚合函数(count、max、min、avg、sum)

1.介绍

将一列数据作为一个整体,进行纵向计算。

2.常见的聚合函数

3.语法

select 聚合函数(字段列表) from 表名;

注意:null值不参与所有聚合函数运算。

sql 复制代码
-- 聚合函数
-- 1.统计该企业员工数量
select count(*) from employee;
select count(id) from employee;
-- 2.统计该企业员工的平均年龄
select avg(age) from employee;
-- 3.统计该企业员工的最大年龄
select max(age) from employee;
-- 4.统计该企业员工的最小年龄
select min(age) from employee;
-- 5.统计该企业员工的年龄之和
select sum(age) from employee;

(4)分组查询(group by)

注意:

  • 执行顺序:where > 聚合函数 > having
  • 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
sql 复制代码
-- 分组查询
-- 1.根据性别分组,统计男性员工 和 女性员工 的数量
select gender,count(*) from employee group by gender;
-- 2.根据性别分组,统计男性员工 和 女性员工 的平均年龄
select gender,avg(age) from employee group by gender;
-- 3.查询年龄小于等于25岁的员工,并根据性别分组,获取员工数量大于等于三的性别组
select gender,count(*) num_count from employee where age <= 25 group by gender having num_count >=3;

(5)排序查询(order by)

sql 复制代码
-- 排序查询
-- 1.根据年龄对公司员工进行升序排序
select * from employee order by age asc;
-- 2.根据年龄对公司员工进行降序排序
select * from employee order by age desc ;
-- 3.根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序
select * from employee order by age,entrydate desc;

(6)分页查询(limit)

sql 复制代码
-- 分页查询
-- 1.查询第一页员工数据,每页展示10条记录
select * from employee limit 10;
select * from employee limit 0,10;
-- 2.查询第二页员工数据,每页展示10条记录
select * from employee limit 10,10;

小结

三、DCL

1.介绍

DCL(Date Control Language)数据控制语言,用来管理数据库用户、控制数据库的访问权限。

2.管理用户

sql 复制代码
-- 创建用户itcast,只能够在主机localhost访问,密码为123456;
create user 'itcast'@'localhost' identified by '123456';
-- 创建用户test,可以在任意主机访问该数据库,密码123456;
create user 'test'@'%' identified by '123456';
-- 修改用户test的访问密码为1234;
alter user 'test'@'%' identified with mysql_native_password by '1234';
-- 删除用户itcase@localhost用户
drop user 'itcast'@'localhost';

注意:主机名可以使用%通配;这类sql开发人员操作的比较少,主要是DBA(Database Administrator 数据库管理员)使用。

3.权限控制

sql 复制代码
-- 查询权限
show grants for 'test'@'%';
-- 授予权限
grant all on test.* to 'test'@'%';
-- 撤销权限
revoke all on test.* from 'test'@'%';

注意:多个权限之间,使用逗号分隔;授权时,数据库名和表名可以使用*进行通配,代表所有。

小结

相关推荐
2301_79509974几秒前
如何在MongoDB主从架构中利用Change Stream捕获数据变更_必须在副本集模式下工作
jvm·数据库·python
AC赳赳老秦1 分钟前
数据库操作自动化:用 OpenClaw 对接 Navicat/DBeaver,实现数据备份、脱敏、日常操作自动化
java·运维·数据库·python·oracle·自动化·openclaw
程序员小白条1 分钟前
AI 编程辅助,从入门到真香
java·开发语言·数据库·人工智能·面试·职场和发展
2401_880071402 分钟前
Django怎么优雅发送邮件_Python配置SMTP后端实现异步通知
jvm·数据库·python
m0_463672203 分钟前
如何快速检索SQL中的隐藏字符_使用转义与函数处理
jvm·数据库·python
u0110225123 分钟前
怎么优化MongoDB的软删除设计_布尔标记与删除时间戳
jvm·数据库·python
老纪4 分钟前
JavaScript中BigInt与Number类型混用的报错机制
jvm·数据库·python
档案宝档案管理5 分钟前
全文检索 vs 条件检索 vs 目录检索:适用场景对比
大数据·数据库·全文检索
庞轩px6 分钟前
第二篇:Redis的过期删除与内存淘汰——数据过期了怎么删?内存满了怎么办?
数据库·redis·缓存·内存·lru·内存淘汰·过期删除
m0_741481788 分钟前
HTML函数在低温环境下启动慢吗_温度对硬件启动影响【方法】
jvm·数据库·python