Sql介绍 与 Sql基础查询

SQL

SQL也称为结构化查询语言(Structure Query Language),是一种用于管理和操作关系型数据库的标准化计算机语言,SQL语言广泛应用于各种关系型数据库系统(RDBMS)如Mysql,Oracle,Microsoft SQL Server等等

SQL对数据库的操作

  1. 数据查询:通过SELECT语句从数据库中检索数据
  2. 数据定义(DDL):其中包括CREATE,ALTER,DROP对数据库进行定义和修改数据库结构
  3. 数据操控(DML):包括INSERT,UPDATE,DELETE语句插入,更新,删除数据
  4. 数据控制:通过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,not

  • eg1:查询工资在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基础查询的更多相关文章

  1. SQL Serever学习9——基础查询语句

    SQL语言概述 SQL是结构化查询语言(Structure Query Language),1974年提出,1979年被IBM实现,SQL语言已经成为关系型数据库的标准语言. 包括: DDL数据定义语 ...

  2. PL/SQL第三章 基础查询语句

    --查询所有列 select * from tab_name|view_name; SELECT * FROM emp; SELECT * FROM (SELECT * FROM emp); --查询 ...

  3. [译]LINT TO SQL 介绍(数据库查询) - Part.3

    出处:Linq To Sql (Part.3 – Querying our database) 术语表 Built-in:内置的 Clause:子句 Debugger:调试器 Object Relat ...

  4. (大数据工程师学习路径)第四步 SQL基础课程----SQL介绍及mysql的安装

    一.数据库和SQL介绍 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它的产生距今已有六十多年.随着信息技术和市场的发展,数据库变得无处不在:它在电子商务.银行系统等众多领域都 ...

  5. SQL基础--查询之三--嵌套查询

    SQL基础--查询之三--嵌套查询

  6. SQL基础--查询之五--查询语句一般格式

    SQL基础--查询之五--查询语句一般格式

  7. SQL基础--查询之四--集合查询

    SQL基础--查询之四--集合查询

  8. SQL基础--查询之一--单表查询

    SQL基础--查询之一--单表查询

  9. SQL基础--查询之二--连接查询

    SQL基础--查询之二--连接查询

  10. JAVA-Unit03: SQL(基础查询) 、 SQL(关联查询)

    Unit03: SQL(基础查询) . SQL(关联查询) 列别名 当SELECT子句中查询的列是一个函数 或者表达式时,那么查询出来的结果集 中对应的该字段的名字就是这个函数或者 表达式的名字.为此 ...

随机推荐

  1. Python 利用argparse模块实现脚本命令行参数解析

    利用argparse模块实现脚本命令行参数解析 By:授客 QQ:1033553122 #代码实践1 study.py内容如下 #!/usr/bin/env python # -*- coding:u ...

  2. StringBuilder,一种可变的string

    StringBuilder 是 Java 中用于操作字符串的可变对象.它允许在字符串中进行修改.添加.删除字符等操作,而不会像普通的字符串操作(例如使用 String 类)那样产生新的字符串对象.这种 ...

  3. 18B20的CRC8校验分析

    CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定. CRC校验可以简单地描述为:例如我们要 ...

  4. 【转载】 SLI导致双显卡被TensorFlow同时占用问题(Windows下) ---------- (windows环境下如何为tensorflow安装多个独立的消费级显卡)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/qq_21368481/article/d ...

  5. Google的Jax框架的JAX-Triton目前只能成功运行在TPU设备上(使用Pallas为jax编写kernel扩展)—— GPU上目前无法正常运行,目前正处于 experimental 阶段

    使用Pallas为jax编写kernel扩展,需要使用JAX-Triton扩展包.由于Google的深度学习框架Jax主要是面向自己的TPU进行开发的,虽然也同时支持NVIDIA的GPU,但是支持力度 ...

  6. 两个 RTX2070 super 显卡 可不可以通过 nvlink交换机 进行P2P通信 呢? (答案: 可以)

    以前转载了一篇文章:    https://www.cnblogs.com/devilmaycry812839668/p/12370685.html 对于里面的结果总感觉有所怀疑,于是斥巨资购入两个 ...

  7. python编程中的circular import问题

    循环引入,circular import是编程语言中常见的问题,在C语言中我们可以使用宏定义来处理,在c++语言中我们可以使用宏定义和类的预定义等方式来解决,那么在python编程中呢? 其实在pyt ...

  8. js 实现俄罗斯方块(二)

    上篇已经看过整个游戏的样子了,本节我们来分析下整个游戏 和实现的逻辑! 首先看下游戏规则: 首先确定这几个形状原型   这7个基础图形都是由4个格子组成. 规则: 1.当所有色块填满一整行以后自动清理 ...

  9. Golang在整洁架构基础上实现事务

    前言 大家好,这里是白泽,这篇文章在 go-kratos 官方的 layout 项目的整洁架构基础上,实现优雅的数据库事务操作. 视频讲解 :B站:白泽talk,公众号[白泽talk] 本期涉及的学习 ...

  10. 实习记录day03:尝试写一个接口

    前言:今天突然意识到,实习记录很少有技术性的东西,更多的是自己的心里活动和一些感想,其实这类博客更趋向于日记而非技术记录.也许哪天不再充满兴趣了,这个实习记录也就结束了(想下班了同志们) 实习第三天: ...