Mysql数据库-DQL语言的学习(上)

SQL的语言分类

  •     DQL(Data Query Language):数据查询语言:select 
  •     DML(Data Manipulate Language):数据操作语言:insert 、update、delete
  •     DDL(Data Define Languge):数据定义语言:create、drop、alter
  •     TCL(Transaction Control Language):事务控制语言:commit、rollback

DQL语言的学习

1.基础查询

use 表名

SELECT 要查询的东西 【FROM 表名】

特点:
    ①通过select查询完的结果 ,是一个虚拟的表格,不是真实存在
    ② 要查询的东西 可以是常量值、可以是表达式、可以是字段、可以是函数

示例:

      查询单个字段:select 字段名 from 表名;
      查询多个字段:select 字段名,字段名 ,字段名 from 表名;
      查询所有字段:select * from 表名
      查询常量:select 常量值;(注意:字符型和日期型的常量值必须用单引号引起来,数值型不需要)
      查询函数:select 函数名(实参列表);select VERSION();(查询版本号)
      查询表达式:select 100/1234;
      起别名①as    select 100%98  结果;②空格  select 100%98  结果;
      去重 :select distinct 字段名 from 表名;
      + 作用:做加法运算
select 数值+数值; 直接运算
select 字符+数值;先试图将字符转换成数值,如果转换成功,则继续运算;否则转换成0,再做运算
select null+值;结果都为null
 concat函数
功能:拼接字符
select concat(字符1,字符2,字符3,...);  select concat('a','b','c') as 结果;(abc)
 ifnull函数
功能:判断某字段或表达式是否为null,如果为null 返回指定的值,否则返回原本的值
select ifnull(commission_pct,0) from employees;
 isnull函数
功能:判断某字段或表达式是否为null,如果是,则返回1,否则返回0

 

2.条件查询

select 查询列表 from 表名 where 筛选条件;

二、筛选条件的分类
1、简单条件运算符
> < = <> != >= <=  <=>
2、逻辑运算符

  • &&和and:两个条件都为true,结果为true,反正为false
  •   ||和or   :只要有一个条件为true,结果为true,反之为false
  •  ! 和not  :如果连接的条件本身为false,结果为true,反之为false

3、模糊查询
like:一般搭配通配符使用,可以判断字符型或数值型

通配符:

  • %任意多个字符,包含0个字符
  •               _ 任意单个字符
  • 转义字符 escape 

       select name from user where name like '-$-%' escape '$';

  • between and

    select age from user where age between 18 and 20;

  • in

查询年龄是 18、19、20

    select age from user where age in(18、19、20);

is null /is not null:用于判断null值

3.排序查询

  • 特点
  • asc :升序,如果不写默认升序
  • desc:降序
  • 排序列表 支持 单个字段、多个字段、函数、表达式、别名
  • order by的位置一般放在查询语句的最后(除limit语句之外)
select 查询列表 from 表 where 筛选条件 order by 排序列表 【asc}desc】

查询员工信息,要求工资从高到低排序
select * from employees order by salary desc;

按年薪高低显示员工信息和年薪【按表达式排序】
select * ,salary*12*(1+ifnull(commission_pct,0)) 年薪 from employees order by salary*12*(1+ifnull(commission_pct,0)) desc;

按年薪高低显示员工信息和年薪【按别名排序】
select * ,salary*12*(1+ifnull(commission_pct,0)) 年薪 from employees order by 年薪 desc;

按姓名的长度显示员工的姓名和工资【按函数排序】
select length(name) 字节长度,name,salary from employees order by length(name) desc;

查询员工信息,要求先按工资排序,再按员工编号排序【按多个字段排序】
select * from employees order by salary asc,id desc;

4.常见函数

  1. 字符函数
length(获取参数值的字节个数)
select length('john');
concat(拼接字符串)
select concat(last_name,'_',first_name) from employees;
upper,lower(字符大小写变换)
select upper(‘john’);
select lower(‘JHON’);

substr,substring
注意:索引从1开始
#截取从指定索引处后面所有字符
select substr('李莫愁爱上了陆展元',7)  out_put;

#截取从指定索引处指定字符长度的字符
select substring('李莫愁爱上了陆展元',1,3) out_put;

姓名中首字符大写,其他字符小写然后用_拼接,显示出来
select CONCAT(UPPER(SUBSTR(last_name,1,1)),'_',LOWER(SUBSTR(last_name,2)))  out_put FROM employees;

instr (返回子串第一次出现的索引,如果找不到返回0)
select instr('杨不殷六侠悔爱上了殷六侠','殷六侠') AS out_put;

trim(去掉字符串中前后空格)
select LENGTH(TRIM('    张翠山    ')) AS out_put;

select TRIM('aa' FROM 'aaaaaaaaa张aaaaaaaaaaaa翠山aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')  AS out_put;

lpad (用指定的字符实现左填充指定长度)
select lpad ('殷素素',10,'*') AS out_put;

rpad (用指定的字符实现右填充指定长度)
select RPAD('殷素素',12,'ab') AS out_put;
replace(替换)

select REPLACE('周芷若周芷若周芷若周芷若张无忌爱上了周芷若','周芷若','赵敏') AS out_put;

2.数学函数

round (四舍五入)
SELECT ROUND(-1.55);

SELECT ROUND(1.567,2);

ceil (向上取整,返回>=该参数的最小整数)
SELECT CEIL(-1.02);

floor (向下取整,返回<=该参数的最大整数)
SELECT FLOOR(-9.99);

truncate (截断)
SELECT TRUNCATE(1.69999,1);

mod(取余)
SELECT MOD(10,-3);
SELECT 10%3;

3.日期函数

now(返回当前系统日期+时间)
select now();

curdate (返回当前系统日期,不包含时间)
select curdate ();

curtime (返回当前时间,不包含日期)
select curtime ();

可以获取指定的部分,年、月、日、小时、分钟、秒
select year(now()) 年;
select year('1998-1-1') 年;

select YEAR(hiredate) 年 FROM employees;

select MONTH(NOW()) 月;
select MONTHNAME(NOW()) 月;


str_to_date(将字符通过指定的格式转换成日期)

select str_to_date ('1998-3-2','%Y-%c-%d') AS out_put;

#查询入职日期为1992--4-3的员工信息
select * from employees where hiredate = '1992-4-3';

select * from employees where hiredate = str_to_date('4-3 1992','%c-%d %Y');
#date_format 将日期转换成字符

select date_format (now(),'%y年%m月%d日') as out_put;

#查询有奖金的员工名和入职日期(xx月/xx日 xx年)
select last_name,date_format(hiredate,'%m月/%d日 %y年') 入职日期 from employees
where commission_pct is not null;

 

 

 

 

 

 

 

 

 

### 初识 MySQL 数据库基础 #### MySQL 的基本概念 MySQL 是一种基于客户机/服务器模式的网络服务,其中客户端应用程序名为 `mysql`,而服务端应用程序为 `mysqld`[^1]。作为一种关系型数据库管理系统 (RDBMS)MySQL 支持标准 SQL 语句来管理和操作数据。然而,除了遵循标准 SQL 外,MySQL 还提供了自己特有的扩展语法。 #### 安装与配置 对于想要学习和使用 MySQL 的用户来说,可以选择免费获取的小型服务器资源或支付大约每年一百多的服务费用来运行 MySQL 实例[^3]。为了验证安装是否成功,可以通过命令行工具执行如下指令: ```bash which mysql; which mysqld; ``` 上述命令会显示 MySQLmysqld 可执行文件的位置路径,从而确认环境变量设置无误并能正常调用这两个程序。 #### SQL 语言的作用 SQL(Structured Query Language),即结构化查询语言,被广泛应用于各种关系型数据库管理系统的交互中,包括但不限于 MySQL、Oracle 和 SQL Server 等。尽管 NoSQL 类型的数据存储解决方案通常拥有独立的操作接口而不完全兼容传统意义上的 SQL,但大多数 RDBMS 都支持这一通用的标准语言来进行数据定义、操纵及控制等活动[^2]。 #### DQL 查询语言的重要性 在日常工作中,开发人员最常接触到的是 DQL(Data Query Language)。这类 SQL 声明主要用于检索信息而不是改变任何持久化的状态;因此,在处理复杂查询方面显得尤为重要且具有挑战性[^4]。 #### 数据库模式的理解 理解数据库中的“模式”非常重要。“模式”是对整个数据库内所有对象及其属性的一种抽象示方法,它描述了数据的整体逻辑架构而非具体数值。这意味着一旦确定下来之后,“模式”的变化频率较低,相比之下实际存放在里面的“实例”则可能频繁更新换代[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值