Sql介绍 与 Sql基础查询
Sql介绍 与 Sql基础查询
SQL
SQL也称为结构化查询语言(Structure Query Language),是一种用于管理和操作关系型数据库的标准化计算机语言,SQL语言广泛应用于各种关系型数据库系统(RDBMS)如Mysql,Oracle,Microsoft SQL Server等等
SQL对数据库的操作
- 数据查询:通过
SELECT语句从数据库中检索数据 - 数据定义(DDL):其中包括
CREATE,ALTER,DROP对数据库进行定义和修改数据库结构 - 数据操控(DML):包括
INSERT,UPDATE,DELETE语句插入,更新,删除数据 - 数据控制:通过
GRANT,REVOKE语句管理用户权限和范围控制
SQL的特点
- 标准化:SQL是一个标准化的语言,各大数据库厂商都支持SQL语言
- 高度非过程化:与过程化的与语言不同,SQL不需要指定特点算法或步骤完成任务.SQL语句更专注描述所需结果,而非如何得到所需结果
- 集合操作:SQL支持集合操作,即一次可以处理多行数据.一个
SELECT语句就可以返回多条记录,INSERT,UPDATE也可以一次影响多行数据 - 事务支持:SQL支持事务处理,允许将一组相关数据,作为一个完整的单元来执行.事务具有:原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability)(关于这些性质在之后的事务章节会详细讲解),ACID,这四个性质确保了数据的一致性与可靠性
- 集成能力:SQL可以与其他 编程语言相互集成,使得开发者能够在应用程序中嵌入SQL代码,实现高效操作,其中典型的属Java开发者可以使用JDBC来执行SQL查询
SQL基础查询
语法结构
SELECT 查询列表 FORM 表名其中查询列表可以是表中的字段,常量值,表达式,函数等等
如SELECT * FORM emplyees; 其中* 表示查询表中所有数据
查询表中单个字段
SELECT 字段名 FORM 表名eg:查询员工的所有姓名
SELECT e_name FORM emplyees;
查询表中多个字段
使用逗号将每个字段分隔开来
SELECT 字段1,字段2,字段3 FORM 表名;eg:示例:查询所有员工的姓名,邮箱,电话号码
SELECT e_name,e_email,e_phone_num FORM emplyees;
为字段起别名
在实际的数据库表结构中,有些字段名过长,或者不好理解,我们可以对字段名起个表明,在后续调用中直接使用其别名即可,在多表查询中,有些字段名会出现重复,这时我们可以对相应的字段其别名,不宜混淆
- 使用AS关键字
- 在将要其别名字段后使用
AS关键字SELECT 字段名 AS 别名 FORM 表名;
- 在将要其别名字段后使用
- 直接使用空格隔开
- 即在字段和别名之间用空格隔开即可
SELECT 字段名 别名 FORM 表名;
- 即在字段和别名之间用空格隔开即可
去重
对查询出的语句可能会出先字段名重复的结果,这时,我们可以使用去重功能
使用
DISTINCT关键字:SELECT DISTINCT 要去重的字段 ,其他字段… FORM 表名;
eg:查询部门表中的部门ID,对于每个部门ID出现一次即可,因此我们可以使用去重
SELECT DISTINCT d_id FORM department;
+号操作
Mysql中
+号只有一个功能:作为运算符,不能作为连接符
- 若
+号两侧都是数值型,视为正常的加法运算 - 若
+号两侧出现了字符,这尝试将字符转化为数值类型,若转化成功,则继续执行加法操作,失败则转化为数值0;转化规则为:从首部开始将所有数值型字符进行转化直到遇到字符型字符,如’11’⇒11;’1a’⇒1;’abc’⇒0;’11a1’⇒11 - null值与任何数值类型进行
+操作都为null
SELECT 1 + 1; //2
SELECT '1' + '1';//2
SELECT 'a' + 1;//1
SELECT 'a' + 'b';//0
SELECT '1a' + '1b';//2
SELECT '11a11' + '11b11'//22;
SELECT 1 + null;//null
CONCAT()操作
既然
+号只能作为运算符,那如何连接字符呢?→CONCAT()函数
CONCAT():使用SELECT调用CONCAT();SELECT CONCAT(str1,str2,…);
eg:查询员工姓名和邮箱,按固定格式(姓名[xxx@xx.com])要求输出,比如:张三[123@qq.com]
SELECT CONCAT(e_name,’[’,e_email,’]’)FORM employees;
IFNULL()函数
IFNULL():若查询出的值存在NULL值,使用替代值替代
SELECT IFNULL(字段名,代替值) FROM 表名;
eg:查询员工的姓名和部门ID,如果该员工没有部门信息,显示未知
SELECT e_name,IFNULL(d_id,’未知’) FORM employees;
条件查询
条件查询,允许在查询数据时,指定某些条件,从而筛选出符合条件的记录
WHERE关键字
WHERE关键字是条件查询的核心;
语法结构:
SELECT 查询列表 //执行顺序3
FORM 表名 //执行顺序 1
WHERE 条件表达式;//执行顺序2
eg:查询 d_id 为 10 的所有员工
SELECT d_id FORM employees WHERE d_id=10;
表达式筛选
SQL中包含了条件运算符:>, <,>=,<=, =, !=,<>;<>与!=的作用相同都表示不等于,条件运算符是应用于条件表达式中的
eg.1:查询工资大于8000的员工信息
SELECT *FROM employees WHERE salary>8000;eg.2查询部门编号不等于3的员工信息
SELECT *FORM employees WHERE d_id ! =3;
逻辑运算
逻辑运算符也是一般在WHERE表达式中使用,可帮助在查询中指定多个条件或改变条件逻辑关系
逻辑运算符包括:
&&,||,!,分别对应and,or,noteg1:查询工资在8000到10000之间的员工信息→使用AND运算符连接
SELECT * FORM employees WHERE salary>8000 AND salary<100000;eg2:查询工资大于8000或者部门3的员工信息→使用OR运算符连接
SELECT * FORM employees WHERE salary >8000 OR d_id=3;
模糊查询
LIKE关键字
SQL中常用的是
LIKE关键字,其配合通配符来实现模糊查询
常用通配符
%:代表可匹配度多个字符,包括0个,1个_:代表只能匹配一个字符SELECT 查询列表
FROM 表名
WHERE 列名 LIKE '模式';
eg1:查询姓名中包含【微】字的员工信息
SELECT * FORM employees WHERE e_name LIKE ‘%微%’;eg2:查询姓名中第二个字是【可】字的员工信息
SELECT * FORM employees WHERE e_name LIKE ’_微%’;
BETEWEEN…AND
查询在某段范围值内的数据,包含临界值,即BETEWEEN 8000 AND 100000⇒[8000,10000]
eg1:查询工资在8000到10000之间的员工信息
SELECT * FORM employees WHERE salary BETWEEN 8000 AND 10000;eg2:查询入职时间在2018-01-01到2022-01-01之间的员工信息
SELECT * FORM employees WHERE hiredate BETWEEN ‘2018-01-01’ AND ’2022-01-01’;
IN关键字
IN运算符用于检测字段值是否在一个指定的值列表中,使用IN运算符可以简化查询语句,特别在需要处理多个值情况下
eg:查询在部门2或者部门3的员工信息
SELECT *FORM employees WHERE d_id IN(2,3);等价于SELECT * FORM employees WHERE d_id=2 OR d_id=3;
IS NULL/IS not NULL
用于检测一个值是否NULL的运算符
eg1:查询没有部门的员工信息
SELECT * FORM employees WHRER d_id is NULL;eg2:查询有部门的员工信息
SELECT * FROM emplyees WHERE d_id is not NULL;
排序查询
查询出来的数据默认按照表格的保存顺序查询,我们如果需要修改查询结果展示的顺序,可以使用排序查询,
ORDER BY关键字
在SQL中ORDER BY实现排序,ASC代表升序,DESC代表降序
语法结构
SELECT 查询列表
FROM 表
[WHERE 筛选列表]
ORDER BY 排序列表 [ASC升序|DESC降序] -- ASC|DESC不写默认是ASC
实现单字段排序
ORDER BY 排序字段 [ASC升序|DESD降序];eg:查询员工信息按工资高低排序
- 按照工资升序
SELECT * FROM emplyees ORDER BY salary ASC -- ASC可以不写
- 按照工资降序
SELECT * FROM emplyees ORDER BY salary DESC -- DESC不能省略
使用多个字段排序
eg:查询员工信息,先按部门ID降序,再按工资升序
SELECT * FROM emplyees ORDER BY department_id DESC,salary ASC;
Sql介绍 与 Sql基础查询的更多相关文章
- SQL Serever学习9——基础查询语句
SQL语言概述 SQL是结构化查询语言(Structure Query Language),1974年提出,1979年被IBM实现,SQL语言已经成为关系型数据库的标准语言. 包括: DDL数据定义语 ...
- PL/SQL第三章 基础查询语句
--查询所有列 select * from tab_name|view_name; SELECT * FROM emp; SELECT * FROM (SELECT * FROM emp); --查询 ...
- [译]LINT TO SQL 介绍(数据库查询) - Part.3
出处:Linq To Sql (Part.3 – Querying our database) 术语表 Built-in:内置的 Clause:子句 Debugger:调试器 Object Relat ...
- (大数据工程师学习路径)第四步 SQL基础课程----SQL介绍及mysql的安装
一.数据库和SQL介绍 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它的产生距今已有六十多年.随着信息技术和市场的发展,数据库变得无处不在:它在电子商务.银行系统等众多领域都 ...
- SQL基础--查询之三--嵌套查询
SQL基础--查询之三--嵌套查询
- SQL基础--查询之五--查询语句一般格式
SQL基础--查询之五--查询语句一般格式
- SQL基础--查询之四--集合查询
SQL基础--查询之四--集合查询
- SQL基础--查询之一--单表查询
SQL基础--查询之一--单表查询
- SQL基础--查询之二--连接查询
SQL基础--查询之二--连接查询
- JAVA-Unit03: SQL(基础查询) 、 SQL(关联查询)
Unit03: SQL(基础查询) . SQL(关联查询) 列别名 当SELECT子句中查询的列是一个函数 或者表达式时,那么查询出来的结果集 中对应的该字段的名字就是这个函数或者 表达式的名字.为此 ...
随机推荐
- SUM_ACM-Codeforces Round 941 (Div. 2)
A Card Exchange https://codeforces.com/contest/1966/problem/A 思路:找规律,如果b>a,输出a,如果a中有大于等于b个数,输出b-1 ...
- nginx的一些功能
一.四层(tcp/udp)代理 由于nginx默认是不支持四层代理的因此在安装的时候需要加上对应的模块with-stream ./configure --with-stream # 查看当前nginx ...
- 【OracleDB】 03 数据类型和常见对象概述
我们可以通过PLSQL来查看Oracle的数据类型 总分类: - 字符型 1.CHAR 0 - 2000 字节 固定长度字符串 2.NCHAR 0 - 1000 字节 固定长度字符串[Unicode字 ...
- 【Vue】Re01 理论概念和入门上手
一.Vue概述 什么是渐进式?1.把Vue作应用的一部分嵌套项目中2.如果完全抛弃其他组件和框架,Vue又具有丰富的生态和库莱支持3.Core + Router + VueX 满足项目绝大多数的需求- ...
- Springboot实现HTML表单from简单的接收信息
HTML< from >元素 from可向Web服务器提交请求 普遍格式: <from action="服务器地址" method="请求方式" ...
- 《最新出炉》系列小成篇-Python+Playwright自动化测试-66 - 等待元素至指定状态(出现、移除、显示和隐藏)
1.简介 在我们日常工作中进行UI自动化测试时,保证测试的稳定性至关重要.其中一个关键方面是正确地定位和操作网页中的元素.在网页中,元素可能处于不同的状态,有些可能在页面加载完成之前不在DOM中,需要 ...
- div上固定,下自适应;div左固定,右自适应
一,上固定,下自适应 1,代码 <div class="all"> <div class="top">111</div> ...
- 下一代浏览器和移动自动化测试框架:WebdriverIO
1.介绍 今天给大家推荐一款基于Node.js编写且号称下一代浏览器和移动自动化测试框架:WebdriverIO 简单来讲:WebdriverIO 是一个开源的自动化测试框架,它允许测试人员使用 No ...
- 9组-Beta冲刺-4/5
一.基本情况(15分) 队名:不行就摆了吧 组长博客:9组-Beta冲刺-4/5 GitHub链接:https://github.com/miaohengming/studynote/tree/mai ...
- games101 作业6 详解SAH
games101 作业6 详解SAH 可参考资料:https://www.pbr-book.org/3ed-2018/Primitives_and_Intersection_Acceleration/ ...