DQL(Data Query Language)数据查询语言

数据库的好处

  • 可持久化数据到本地
  • 实现结构化查询

数据库的常见概念

  • DB(DATABASE):数据库
  • DBMS(DATABASE Management stytem):数据库管理系统
  • SQL:结构化查询语言,用于和数据库通信的语言,不是某个数据库特有的,而是几乎所有主流数据库软件通用的语言

数据库存储数据的特点

  • 数据存放在表中,然后表再放在库中
  • 一个库中可以存着多张表
  • 表中有一个或者多个列,列又称为"字段"

MYSQL 的优点

  • 开源,免费,成本低
  • 性能高,移植性好
  • 体积小,便于安装

MYSQL的启动与停止

方式一:命令行方式
    启动:net start '服务名'
    停止:net stop '服务名'
方式二:
    右击计算机 → 管理 → 服务
    

MYSQL服务的登录和退出

  • 登录
    mysql -h(主机名) - P(端口号) -u(用户名) -p(密码)
  • 退出
    exit或Ctrl + C





进阶一:基础查询

语法:

SELECT `查询列表` FROM `表名`;

特点:

1.查询列表可以是:表中的字段,常量值,表达式,函数
2.查询的结果是一个虚拟的表

查询表中的单个字段:

SELECT `name` FROM `student`;

查询表中的多个字段:

SELECT `name`,`age` FROM `student`;

查询表中的所有字段:

SELECT * FROM `student`;

按顺序查询表中的所有字段:

SELECT `age`,`name`,`score` FROM `student`;

查询常量值:

字符型和日期型的值必须以‘‘引起来

SELECT 100;
SELECT 'john';

查询表达式

SELECT 100%98

查询函数

SELECT version();

起别名

好处:
便于理解
如果要查询的字段中有重名的情况,使用别名可以区分开来

方式一:
SELECT 100%98 AS 结果;
方式二:
SELECT 100%98 结果;
案例:
SELECT `name` AS 'out put' FROM student;

去重

关键字:DISTINCT

SELECT DISTINCT `class_id` FROM `student`;

+号的作用

两个操作数都为数值型,则做加法运算
SELECT 100+90;
如果一方为字符型,试图将字符型数值转换成数值型
如果转换成功,则继续做加法运算
SELECT '100'+99;
如果转换失败,则将字符型数值转换成0
例:得到结果为90
SELECT 'Tom'+90
只有一方为null,则结果肯定为null
例:得到结果为null
SELECT null+90

concat(str1,str2,str3)函数的使用

将last_name 和 first_name 作为新字段拼接
例:
SELECT CONCAT(last_name,first_name) AS '姓名' FROM `student`;

IFNULL(字段名,要替换为的值)函数的使用

将成绩为null的值替换为0分
IFNULL(score,0) AS 成绩;

ISNULL(字段名)函数的使用

判断字段名,表达式,函数是否有null,返回1和0

SELECT ISNULL(`score`) FROM `student`;

显示表结构

关键字:DESC

DESC `student`;

进阶二:条件查询

语法

执行步骤1,2,3,先查询是否有此表,然后执行筛选条件,最后查询列表

SELECT
    查询列表    3
FROM
    表名    1
WHERE
    筛选条件;  2

一:按条件表达式筛选

条件运算符:>,<,=,不等于(!=, <>),>=,<=

二:按逻辑表达式筛选

逻辑运算符:and,or,not

三:模糊查询

模糊查询:like,betweer and,in,is null

like特点:

一般和通配符 % 配合使用,包含0个字符
_ 任意单个字符

betweer and

能提高语句的整洁度
包含边界值

in

用于判断某字段的值是否属于in列表中的某一项
特点:
提高语句的简洁度

is null

查询为空的条件时不能使用 = null

案例1.按条件表达式筛选:
SELECT * FROM `student` WHERE `score` > 80;

案例2.按逻辑表达式筛选:
SELECT * FROM `student` WHERE name = 'xiaoming' AND sex = 'boy';

案例3.按模糊查询
SELECT * FROM `student` WHERE `name` LIKE '%a%';

案例4.按模糊查询,要求是90分以上的学生信息
SELECT * FROM `student` WHERE `score` LIKE '9_';

案例5.查询学生中第二个为_的学生,通过\转义
SELECT * FROM `student` WHERE `name` LIKE '_\_%';

    也可以通过ESCAPE '需要转义的字符';
    SELECT * FROM `student` WHERE `name` LIKE '_$_%' ESCAPE '$';

案例6.查询学生分数在60-90之间的学生信息
SELECT * FROM `student` WHERE `score` BETWEEN 60 AND 90;

案例7.查询名字为小红,小明的学生
SELECT * FROM `student` WHERE `name` IN ('小红','小明');

案例8.查询值为空的score
方法一:使用is null
SELECT `name`,`score` FROM `student` WHERE `score` IS NULL;
方法二:使用安全等于 <=>
SELECT `name`,`score` FROM `student` WHERE `score` <=> null;

TODO:面试题

SELECT * FROM `student`; 和 SELECT * FROM `student` WHERE last_name like '%' AND first_name like '%';有什么区别?
答:当表中没有null值时,查询的结果是一致的,当表中有null值时,WHERE筛选条件就会过滤为 null 的结果
第二条如果 last_name 和 first_name 有索引时,语句会根据索引去查找数据库,而第一条语句会全表扫描,所以第二条语句有索引的情况下会大大提高搜索效率。

进阶三:条件查询

语法

SELECT
    查询列表
FROM
    表名
WHERE
    筛选条件
ORDER BY
    排序列表    ASC|DESC
ASC:升序    不加默认为升序
DESC:降序  

案例1.成绩按从高到低排序
SELECT * FROM `student` ORDER BY `score` DESC;  

案例2.成绩按从低到高排序
SELECT * FROM `student` ORDER BY `score`;

案例3.查询学生分数大于90分,且入学时间从早到晚的学生信息
SELECT * FROM `student` WHERE `score`> 90 ORDER BY time;

案例4.按表达式排序
按年薪的高低显示员的信息和年薪
salary:工资
bonus:奖金
SELECT *,`salary` * 12 *(1+IFNULL(Bonus,0)) AS 年薪 FROM `Employee` ORDER BY 年薪;

案例5.按学生的姓名的长度排序
SELECT LENGTH(name) AS 姓名长度,`name` FROM `student` ORDER BY 姓名长度;

案例6.查询学生信息,要求先按分数升序,再按id降序(当工资相同时,再按id降序排列)
SELECT * FROM `student` ORDER BY `score` ,`id` DESC;

进阶四:常见函数

语法

SELECT
    函数名(实参列表)
FROM
    表名;

特点

  • 函数名
  • 函数功能

分类

  • 当行函数
    例:concat、length、ifnull
  • 分组函数
    做统计使用,又称为统计函数,聚合函数,组函数

字符函数

length:统计字节个数
例:SELECT LENGTH('name');

concat:拼接字符串
例:SELECT CONCAT(last_name,'_',first_name) FROM `student`;

upper:将字符串转换为大写
lower:将字符串转换为小写
例:将姓转换为大写,名转换为小写,然后拼接
SELECT CONCAT(UPPER(`last_name`),LOWER(`first_name`)) AS 姓名 FROM `student`;

substr/substring:索引取值,索引从1开始,参数传一个str,开始为值,结束位置
例:SELECT SUBSTR('这是mysql教程',3,7)

姓名中首字符大写,其他字符小写,然后用_拼接,显示为name
SELECT CONCAT(UPPER(SUBSTR(`last_name`,1,1)),'_',LOWER(SUBSTR(`last_name`,2))) AS `name` FROM `student`;

instr:返回字字符串在主字符串的第一次出现的索引位置,如果找不到返回0
SELECT INSTR('这是MYSQL教程','是') AS `查找` FROM `student`;

trim:去除字符串中前后的指定字符,默认去除空格
例:SELECT TRIM('  997    ');
SELECT TRIM('1' FROM '111999888111') AS `str`;

lpad:用指定的字符实现左填充指定长度
rpad:用指定的字符实现右填充指定长度
例:SELECT LPAD('学生')

replace:替换
SELECT REPLCAE('aaaaaabbbbbbcccccacabcb','a','d') AS `替换后字符串`;

数学函数

round:四舍五入,第一个参数为值,第二个参数为保留的小数位数
例:SELECT ROUND(1.5689,3);

ceil:向上取整,返回值>=该参数的最小整数
例:SELECT CEIL(1.00)

floor:向下取整,返回值<=该参数的最小整数
例:SELECT FLOOR(-8.99)

truncate:截断,第二个参数为值的小数位保留位数
例:SELECT TRUUNCATE(2.999,2);

mod:取余
例:SELECT MOD(9,2)

日期函数

now:返回当前系统日期 + 时间
例:SELECT NOW();

curdate:返回当前系统日期,不包含时间
例:SELECT CURDATA();

curtime:返回当前系统时间,不包含日期
例:SELECT CURTIME();

获取指定的部分:年、月、日、小时、分、秒
例:SELECT YEAR(NOW()) AS 年;
    SELECT MONTH(NOW()) AS 月;

原文地址:https://www.cnblogs.com/zhouxiongjie/p/12433466.html

时间: 2024-10-12 13:07:15

DQL(Data Query Language)数据查询语言的相关文章

DDL(Data Definition Language)数据定义语言基础

数据定义语言DDL(Data Definition Language)是SQL语言的三个主要组成部分之一(另外两个分别是数据操作语言DML(Data Mainpulation Language)和数据控制语言(Data Control Language)). 1:创建用户Create User 创建用户使用如下的语法 Create user 用户名 identified by 密码 [default tablespace 缺省表空间] [temporary tablespace 临时表空间].如

Oracle DCL(Data Control Language)数据控制语言(权限privilege,角色role,用户user介绍)

1.如何控制用户访问 1.身份验证,认证:Authentication 2.授权:Authorization 3.审计:Audit 2.权限 数据库安全: -系统安全 -数据安全 系统权限:数据库中执行一个特定操作 对象权限:操纵数据库的对象的内容 可用的系统权限有100多个 数据库管理员有高层次的系统权限,可以完成 -创建一个新用户 -删除用户 -删除表 -备份表 3.创建用户 DBA使用CREATE USER语句创建用户 CREATE USER user identified BY pass

hql(Hibernate Query Language)

1.Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Language)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装.完整的HQL语句形式如下: Select/update/delete-- from -- where -- group by --

Hibernate Query Language查询:

Hibernate Query Language查询: Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Language)查询提供了更加丰富的和灵活的查询特性,因此Hibernate将HQL查询方式立为官方推荐的标准查询方式,HQL查询在涵盖Criteria查询的所有功能的前提下,提供了类似标准SQL语句的查询方式,同时也提供了更加面向对象的封装.完整的HQL语句形势如下: Select/update/delete-- fro

SQL 复习二(数据查询语言)

1.1 数据查询语言 DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端. 语法: SELECT selection_list /*要查询的列名称*/ FROM table_list /*要查询的表名称*/ WHERE condition /*行条件*/ GROUP BY grouping_columns /*对结果分组*/ HAVING condition /*分组后的行条件*/ ORDER BY sorting_columns /*对结果分组*/

Using databases and Structured Query Language (SQL)

//The code to create a database file and a table named Tracks with two columns in the database is as follows: 1 #!/usr/bin/python 2 import sqlite3 3 conn = sqlite3.connect('music.sqlite3') 4 cur = conn.cursor() 5 cur.execute('DROP TABLE IF EXISTS Tra

PL/SQL(Procedure Language &amp; Structured Query Language)

目前的PL/SQL包括两部分,一部分是数据库引擎部分:另一部分是可嵌入到许多产品(如C语言,JAVA语言等)工具中的独立引擎.可以将这两部分称为:数据库PL/SQL和工具PL/SQL. PL/SQL中的基本单位是块(Block),所有PL/SQL程序都是由块组成的.PL/SQL中的块由3部分组成:声明部分,程序代码.异常处理代码.如下: DECLARE  /* 声明部分: 在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数 */ BEGIN /*  执行部分:  过程及SQL

[Hive - LanguageManual] Hive Data Manipulation Language

LanguageManual DML Hive Data Manipulation Language Hive Data Manipulation Language Loading files into tables Syntax Synopsis Notes Inserting data into Hive Tables from queries Syntax Synopsis Notes Dynamic Partition Inserts Example Additional Documen

Spring MVC&Spring Data JPA过滤数据的另一种API

这就是我滚动的方式2014年3月23日在春天mvc | 规格 | 春季资料 | jpa | 参数解析器 | java | 搜索 | 搜索 | 滤波 Spring MVC&Spring Data JPA过滤数据的另一种API 更新 自从我写这篇文章以来已经有一段时间了.我仍然认为它值得阅读,但请务必检查Github页面,因为所描述的库已经发展,并已成为Maven Central中的一个完整的开源项目. 我坚信,一个卓越的框架最终会成为一种(领域特定的)语言. 我已经使用了Spring MVC好几年