当前位置: 首页 > article >正文

mysql -DQL语句和DCL语句

DQL

数据查询语言(Data Query Language,DQL)是数据库操作语言的重要组成部分,主要用于从数据库中检索数据,核心关键字为SELECT。以下从语法结构、常见操作及示例等方面详细介绍:

语法结构

DQL 的标准语法为:SELECT select_list INTO new_table FROM table_source WHERE search_condition GROUP BY group_by_expression HAVING search_condition ORDER BY order_expression 。各个部分的含义如下:

  • SELECT:用于指定要查询的列,select_list可以是具体的列名、表达式、函数等。如果要查询所有列,可用*表示。例如SELECT column1, column2 FROM table_name; 表示从table_name表中选择column1column2这两列的数据;SELECT * FROM table_name; 则返回table_name表中的所有列数据。
  • INTO:可选子句,用于将查询结果存储到一个新表new_table中。比如SELECT column1, column2 INTO new_table FROM old_table; 会将old_table中的column1column2列数据查询出来并存储到新表new_table中。
  • FROM:指定查询数据的来源表,可以是单个表或多个表(用于联表查询)。如FROM employees表示从employees表中获取数据。
  • WHERE:筛选条件子句,用于限制返回的行,只有满足search_condition条件的行才会被查询出来。例如SELECT * FROM products WHERE price > 100; 会从products表中筛选出价格大于 100 的产品记录。
  • GROUP BY:用于对查询结果进行分组,group_by_expression是分组的依据列。比如SELECT department, COUNT(*) FROM employees GROUP BY department; 会按照department列对employees表中的记录进行分组,并统计每个组的记录数量。
  • HAVING:用于对分组后的结果进行过滤,search_condition是过滤条件。它与WHERE的区别在于,WHERE是对原始数据行进行筛选,而HAVING是对分组后的结果进行筛选。例如SELECT department, AVG(salary) AS average_salary FROM employees GROUP BY department HAVING AVG(salary) > 5000; 先按department分组并计算每个组的平均工资,然后筛选出平均工资大于 5000 的组。
  • ORDER BY:对查询结果进行排序,order_expression是排序的依据列,可使用ASC(升序,默认)或DESC(降序)指定排序方式。如SELECT * FROM students ORDER BY age DESC; 会将students表中的记录按年龄降序排列。

 MySQL 中,SELECT ,FROM,WHERE,GROUP BY,HAVING,ORDER BY,LIMIT

插入值

eg表:

基本查询-:


SELECT 字段1,字段2........ FROM 表名

SELECT * FROM 表名

查询指定字段:

SELECT name,workno,age from emp

查询所有字段:
select * form emp //比起原来的更慢会

设置别名

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

这里的AS可以省略

select workaddress ‘工作地址’ from emp

去除重复记录:
SELECT DISINCT  xxx FROM 表名

select distinct workaddress from emp

条件查询:

SELECT 字段列表 FROM 表名 WHERE 条件列表

select * from emp where age ==88

select * form emp where idcard is null

select * form emp where idcard is not null

select * form emp where age >=15&&age<=20

select * form emp where age  between 15 and 20

select * form emp where gender =’女’ and age <25

select * form emp where age in (18,20,40)

select * from emp where like ‘__’//_模糊匹配单个字符,%任意多个字符

select *from emp where idcard like ‘%X’        //查询身份证以X结尾的人

聚合函数:


count,max,min,avg,sum

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

select count(*) form emp

select count(idcard) form emp      //因为有一个null

select avg(age) from emp

select max(age) from emp

select sum(age) from emp where workaddress = ‘西安’

 

分组查询

SELECT 字段列表 FROM 表名 [where 条件] GROUP BY 分组字段名 [分组后的过滤条件]

where不能使用聚合函数  而having 可以

select gender, count(gender) from emp group by gender

select gender, avg(age) from emp group by gender

select workaddress ,count(*) as cnt from emp where age<45 group by workaddress having cnt >=3

排序查询:

asc 升序 desc 降序
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 ,字段2 排序方式2.....

select * from emp order by age asc

select * from emp order by entrydate desc

select * from emp order by age asc, entrydate desc

分页查询:

SELECT 字段列表 FROM 表名 LIMIT 起始索引,查询记录数

如果查询第一页,起始索引可以省略

select * from emp limit 10       //查询第一页10个数据

select * from emp limit 1,10       //查询第二页,10个数据

一整个的顺序是

select +intot+ from + where + group by + having + order by + limit

DCL:

数据控制语言(Data Control Language,DCL)是 SQL 语言的一个重要组成部分,主要用于管理数据库中的用户权限和事务处理,确保数据库系统的安全性和数据的完整性。

管理用户:


查询用户:
USE mysql

SELECT * from user

创建用户:

创建用户,只能在当前主机localhost下访问 密码123456
CREATE USER ‘用户名’ @ ‘主机名’ INDENTIFIED BY ‘密码’

创建用户 heima,可以在任意主机访问,密码123456

修改用户密码:
ALTER USER ‘用户名’ @ ‘主机名’ IDENTIFIED WITH mysql_native_password BY ‘新密码’

删除用户

DROP USER’用户名’@’主机名’

权限控制:

查询权限:
SHOW GRANT FOR ‘用户名’@’主机名’

show grants for ‘heima’@’%’

(表示只能链接进入数据库)

授予权限:
GRANT 权限列表 ON 数据库名.表名 TO  ‘用户名’@’主机名’

grant all on itcast.* to ‘heima’@’%’

之前:

使用命令之后:

撤销权限

REMOVE 权限列表 ON 数据库名.表名 FROM  ‘用户名’@’主机名’

remove all on itcast.* from ‘heima’@’%’


http://www.kler.cn/a/558709.html

相关文章:

  • 蓝桥杯刷题25.2.22|打卡
  • Redis面试宝典【刷题系列】
  • pWnOS v2.0
  • SQL ①-数据库 || MySQL
  • 马士兵java面试八股文及答案
  • 欢乐力扣:单词规律
  • 再聊OceanBase多副本和高可用
  • 垂类大模型微调(二):使用LLaMA-Factory
  • Uniapp 开发中遇到的坑与注意事项:全面指南
  • 细说STM32F407单片机2个ADC使用DMA同步采集各自的1个输入通道的方法
  • Linux-Ansible模块进阶
  • debian 12 系统容器更换阿里源和用户权限
  • Java常用设计模式-代码实例详解
  • 25工程管理研究生复试面试问题汇总 工程管理专业知识问题很全! 工程管理复试全流程攻略 工程管理考研复试真题汇总
  • 【Redis数据结构】ziplist 压缩列表
  • 基于deepseek的AI知识库系统搭建
  • QT串口通信之二,实现单个温湿度传感器数据的采集(采用Qt-modbus实现)
  • QEMU 的详细介绍、安装指南、配置说明
  • *PyCharm 安装教程
  • 0x06 倍增