SQL语句用法大全

2023-11-18

        SQL(Structured Query Language)是一个对数据库进行增删改查的语言。不过这玩意儿还是挺难理解的。所以我就写了这篇文章,希望能帮助到您。为了方便阐述,我做了以下表格作为数据表进行演示:

ABOUT

NAME(char(5))

SELL/万(int) AUTHOR(char(5)) ID(char(6))
聪明人 10086 079154
聪明狗 9494 088399
聪明羊 9088 091650
阳了个阳 10030 新冠 117014

提取:

        下面是一个最基础的的提取语句:

SELECT 列名 FROM 表名;

        根据我们的表,我们的提取代码是:

SELECT * FROM ABOUT;

        提取出结果:

         那么,如果我们想要提取出票房一亿以上的优质电影,那该怎么办呢?这个时候我们就要用上where子句声明条件,就像下面这样:

SELECT 列名 FROM 表名 WHERE 条件;

        根据我们的表,我们可以得出以下代码;

SELECT * FROM ABOUT WHERE SELL >= 10000;

        提取出结果:

        但是有些时候声明条件的时候,我们希望一次提取出所有有一个特征的数据而不是单一的数据,怎么办呢?

        这时候我们就要用到LIKE子句来声明模糊搜索的条件,下面一句代码会提取出所有名称开头是聪明的是数据:

SELECT * FROM ABOUT WHERE NAME LIKE '聪明%';

         其中条件里面的"%"表示任意多个字符,还有一个"_"表示任意单个字符。

         执行上面的代码,可以得到下面的结果:

        如果我们要把这些数据按照票房(SELL列)排列的话,那我们就要使用ORDERED BY SELL进行排列,就像下面这样:

SELECT * FROM ABOUT WHERE NAME LIKE "聪明%" ORDER BY SELL;

     结果是这样的: 

    

        从结果里我们可以看到,数据已经按照从小到大的顺序排列起来了,任务达成!

        除了这些,我们还可以用AND和OR子句把WHERE后面的条件连起来。

        如果我们想要的是票房9000~10000万之间的数据,那该怎么办?我们需要用到BETWEEN子句声明范围,就像这样:

SELECT * FROM ABOUT WHERE SELL BETWEEN 9000 AND 10000;

        结果如下:

        除了用这些关键字声明,我们还可以用计算函数进行查询,具体的名称与功能如下:

计算函数与其功能
计算函数 功能                                       
count(*) 求行数
count(列名) 求非空值行数
count(distinct 列名) 忽略空格与重复行之后求行数
sum(列名) 求取各行的总和(只适用于int列)
avg(列名) 求取各行的平均值(只适用于int列)
max(列名) 求取各行的最大值(只适用于int列)
min(列名) 求取各行的最小值(只适用于int列)

        接下来我们分别实践一下这些函数:

SELECT COUNT(*) FROM ABOUT;

        

SELECT AVG(SELL) FROM ABOUT;

SELECT SUM(SELL) FROM ABOUT;

 

SELECT MAX(SELL) FROM ABOUT;

SELECT MIN(SELL) FROM ABOUT;

         我们还可以利用重复数据进行分组,然后求每组的最大值/最小值/平均值/总和,再把每组的信息显示出来,由于我们手上的数据没有重复,所以不做示范。不过语法如下:

SELECT 函数(列名) FROM 表名 GROUP BY 列名;

 创建:

        不管在执行什么语句之前,都得先创建一个容器。具体能创建什么种类的容器,下面就说的很清楚:

数据库:

        下面是一个标准的创建数据库的命令:

CREATE DATABASE TEST_DB;

         数据库还简单,表就要详谈了。

表:

        如果要创建一个表,先打入CREATE TABLE <这里替换成你的表名称>,后面再打一对括号,括号里面就是表的列名及每列的类型,类型如下:

数据类型
数据类型 说明          
INT 整型数字
REAL 实数(浮点数)
CHAR(N) 不可变长度字符串
VARCHAR(N) 可变长度字符串
BLOB 二进制数据

         创建一个表就像下面这样:

CREATE TABLE PRODUCT(ID INT,NAME VARCHAR(10),PRICE REAL,VIDEO BLOB);

        如果我们希望一个列上的数据不许出现重复,怎么办呢?我们就在创建的时候在那一列的数据类型后面加上一个UNIQUE,就像这样:

CREATE TABLE PRODUCT(ID INT UNIQUE,NAME VARCHAR(10) UNIQUE,PRICE REAL,VIDEO BLOB);

        关于其他的条件请参见下表:

表格的限制
限制 含义
PRIMARY KEY 设定主关键字
UNIQUE 唯一
NOT NULL 不许出现NULL值
CHECK 检查范围
DEFAULT 设定默认值
FOREIGN KEY 设定外关键字

        这样约束数据库的数据避免出现矛盾的数据,这样就可以正确的管理数据了。

视图:

        如何创建视图呢?视图是基于一个条件而从基本表中提取出来的数据。如何创建视图呢?就像下面那样:

CREATE VIEW VIEW_TABLE(列1 类型,列2 类型...列n 类型) AS SELECT 列名 FROM 基本表 WHERE 条件;

        然后这个视图就可以跟正常表一样操作了!

修改:

        有三种修改的方法:INSERT,UPDATE,DELETE。

INSERT:

        insert是插入,也就是加入新记录。语法如下:

INSERT INTO 表名(这里填入这个表的所有列名(逗号分隔)) VALUES(这里填入分别要插入每一行的数据(逗号分隔));

 UPDATE:

        update是更新,就是修改记录,就像下面这样:

UPDATE 表名 SET 列名 = 修改数据 WHERE 条件;

        如果上面的代码没有加WHERE子句,那么所有记录皆会被修改。

DELETE:

        DELETE是删除,它会删除整一行数据。语法如下:      

DELETE FROM 表名 WHERE 条件;

        如果上面没有加WHERE子句,那么全部记录皆会被删除。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL语句用法大全 的相关文章

  • 使用Perl/DBI/MySQL/InnoDB查找外键信息

    我想以编程方式查找 MySQL 数据库中特定 InnoDB 表的外键 我正在使用 Perl 我偶然发现 dbh gt foreign key info 我刚刚尝试使用它 但似乎有点错误 它不会返回 ON DELETE 和 ON UPDATE
  • 无法在 Mac 上启动 MySQL

    使用 Brew 安装后 我无法运行 MySQL 我使用的是 OS X El Capitan 版本 10 11 3 和 MySQL Server 版本 5 7 11 当我启动服务器时 我收到 启动 MySQL 错误 服务器退出而不更新 PID
  • 如何在 MySQL 中测试 Select for Update

    我正在表演SELECT FOR UPDATE或 InnoDB 表的行级锁定 我的目的是只有一个请求可以读取同一行 因此 如果两个用户同时请求相同的数据 其中只有一个人获取数据 即第一个触发查询的人 但是我如何测试锁定是否已放置 因为我正在通
  • 实现软删除的最佳方法是什么?

    目前在做一个项目 我们要对大部分用户 用户角色 实现软删除 我们决定添加一个is deleted 0 数据库中每个表的字段并将其设置为 1 如果特定用户角色点击特定记录上的删除按钮 现在为了将来的维护 每个SELECT查询需要确保它们不包含
  • 如何从批量数据中的mysql列中删除所有非数字字符

    我想从列中删除所有非数字字符 我的数据库中有大量数据 目前我正在使用以下链接中描述的方法 http venerableagents wordpress com 2011 01 29 mysql numeric functions http
  • ORDER BY 字段内的 MySQL 子查询。 (没有内连接)

    有很多与此相关的问题 但都具有使用内部联接的相同答案 这 我认为 在这里是不可能的 如果我错了请告诉我 我现在正在做的是调用两个不同的 mysql 查询来获取结果 它工作完美 db gt query SELECT FROM meta WHE
  • 在 SQL 中,如何从 SELECT * FROM ... 中排除结果?

    我知道我的标题不太具有描述性 让我在这里详细解释一下 假设一个表有 26 个字段 例如字段 a 字段 z 我只想要一个选择查询只返回 15 个字段 所以 通常 我会执行 SELECT field a field b field o FROM
  • MaxListenersExceededWarning:检测到可能的 EventEmitter 内存泄漏。添加了 11 条消息列表。使用emitter.setMaxListeners()来增加限制

    我知道这可能会标记为重复的解决方案 但堆栈溢出的解决方案对我不起作用 Problem node 5716 MaxListenersExceededWarning Possible EventEmitter memory leak detec
  • 如何从 SQL Server 2008 查询结果中删除“NULL”

    我有一个包含 59 列和超过 17K 行的表 很多行都有NULL在某些列中 我想删除NULL以便查询返回空白 而不是NULL 我可以运行一些更新功能来替换所有NULL with 使用 SQL Server 2008R2 Management
  • 如何在 DB2 中创建返回序列值的函数?

    如何在 DB2 中创建一个从序列中获取值并返回该值的函数 应该可以在 select 或 insert 语句中使用该函数 例如 select my func from xxx insert into xxx values my func 基本
  • MySQL 与日语字符

    我试图弄清楚如何创建一个表 以便我可以在其中插入日语名字 现在我有 Type InnoDB Encoding UTF 8 Unicode utf8 Collation utf8 general ci 但是 当我插入字符时 它显示为 当我使用
  • MYSQL从每个类别中随机选择一条记录

    我有一个数据库Items表看起来像这样 id name category int 有几十万条记录 每个item可以是 7 种不同的之一categories 对应于categories table id category 我想要一个从每个类别
  • 学说迁移后备

    我们正在使用原则迁移 当迁移包含多个操作并且其中一个操作失败时 通常会出现问题 例如 如果迁移添加了 5 个外键 其中第 5 个失败 而字段长度不同 则修复字段错误并重新生成迁移不会not修复整个问题 而现在出现一个与 4 个密钥已存在有关
  • 如何使用 BigQuery 有效地选择另一个表中匹配子字符串的记录?

    我有一个包含数百万个字符串的表 我想将其与包含大约两万个字符串的表进行匹配 如下所示 standardSQL SELECT record FROM record JOIN fragment ON record name LIKE CONCA
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 在 DataView 的 RowFilter 中选择 DISTINCT

    我试图根据与另一个表的关系缩小 DataView 中的行范围 我使用的 RowFilter 如下 dv new DataView myDS myTable id IN SELECT DISTINCT parentID FROM myOthe
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • 如何获取自定义订单的结果? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 代替ASC or DESC 我希望我的查询结果采用特定的自定义顺序 例如 如果我想要的结果不是 A B C D 而是 P A L H 该怎么

随机推荐

  • 小程序开发-Now you can provide attr "wx:key" for a "wx:for" to improve performance

    当我们开发微信小程序用到 wx for 时可能会在控制台报 Now you can provide attr wx key for a wx for to improve performance 警告 不要慌张这只是警告不妨碍运行 消除警告
  • html 常用知识点

    段落 h3 登黄鹤楼 h3 p 白日依山尽 p p 黄河入海流 p 跳转页面 a href http www daidu com target blank title 欢迎登陆 a href 链接的地址 target 打开页面的方式 tit
  • do while(0)的妙用

    do while 0 的妙用 do while 0 就如同一个花括号 具有独立的作用域 花括号所表示的符合语句是一个整体 do while 语句同样是一个整体 同样可以在if 等条件语句后直接使用 但是后所不同的是 do while 作为循
  • Mac 解决 command not found: mysql

    首先检查下面的目录中是否有mysql命令 cd usr local mysql bin 如果有的话 使用 echo export PATH PATH usr local mysql bin gt gt zshrc 即可解决 参考链接 htt
  • Ubuntu关闭无用服务

    linux的各大发行版 都有些不必要的服务被默认开启了 针对ubuntu 我们可以采用选择性关闭的方法加速起动 提高系统性能 这里我们安装一个软件 sudo apt get install sysv rc conf 然后这样起动 sudo
  • 力扣动态规划专题(一)背包理论基础 基础动规题 动规注意点 步骤及C++实现

    文章目录 动态规划 509 斐波那契数 五步骤 代码 70 爬楼梯 五步骤 代码 746 使用最小花费爬楼梯 五步骤 代码 扩展 62 不同路径 动态规划 数论 63 不同路径 II 五步骤 代码 343 整数拆分 五步骤 代码 96 不同
  • 什么是servlet?servlet有什么用?

    servlet概述 什么是servlet servlet有什么用 servlet是java编写的服务器端的程序 运行在web服务器中 作用 接收用户端发来的请求 调用其他java程序来处理请求 将处理结果 返回到服务器中 servlet的生
  • Weblogic - Socket Muxers in Thread Dumps

    What are these weblogic socket Muxer threads seen in thread dumps Note for a basic primer on taking thread dumps and ana
  • UE4 C++学习笔记之初识时间轴,定时器

    任务 在场景中做一个开关门 角色踩上开关后 门打开 离开开关2s后门自动关闭 第一步 新建一个C Actor类命名为DoorSwitch 并编写相应代码 DoorSwitch h代码如下 Fill out your copyright no
  • Loadrunner自带的网站WebTours打不开

    不少人在打开LR示例页面的时候会显示如下错误 Internal error your request was unsuccessful Cannot create CGI process program not found 解决方法 打开W
  • 汇编——单字符输入输出+字符串输入输出(换行实现)

    单字符输入输出 默认采用ML6 11汇编程序 DATAS SEGMENT CHAR DB CHAR存储输入的字符 CHANGELINE DB 13 10 用来表示换行符 DATAS ENDS STACKS SEGMENT DB 128 DU
  • HK32F030MF4P6 实现PAout(xx)/PAin(xx)

    需要将此代码加进程序中即可 ifdef cplusplus extern C endif typedef struct u16 bit0 1 u16 bit1 1 u16 bit2 1 u16 bit3 1 u16 bit4 1 u16 b
  • 保姆级python入门教程(非常详细),从零基础入门到精通,从看这篇开始!

    一 初聊Python 文末有惊喜福利 1 为什么要学习Python 在学习Python之前 你不要担心自己没基础或 脑子笨 我始终认为 只要你想学并为之努力 就能学好 就能用Python去做很多事情 在这个喧嚣的时代 很多技术或概念会不断兴
  • 华为OD机试 - 找出两个整数数组中同时出现的整数(Java )

    题目描述 现有两个整数数组 需要你找出两个数组中同时出现的整数 并按照如下要求输出 有同时出现的整数时 先按照同时出现次数 整数在两个数组中都出现并目出现次数较少的那个 进行归类 然后按照出现次数从小到大依次按行输出 没有同时出现的整数时
  • 什么是Ntrip?Ntrip协议简介

    文章目录 Ntrip通讯协议1 0 Ntrip是什么 Ntrip系统组成 NtripServer NtripClient 4 1 获取源列表 4 2 获取差分数据 其他资料 Ntrip通讯协议1 0 Ntrip是什么 NTRIP是在互联网上
  • 可能是把Docker的概念讲的最清楚的一篇文章

    编者的话 本文只是对Docker的概念做了较为详细的介绍 并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令 Docker是世界领先的软件容器平台 所以想要搞懂Docker的概念我们必须先从容器开始说起 如果你想和更多
  • 【Python开发】Flask中的单点登录解决方案

    Flask中的单点登录解决方案 1 SSO 和 CAS 单点登录 Single Sign On SSO 就是通过用户的一次性鉴别登录 当用户在身份认证服务器上登录一次以后 即可获得访问单点登录系统中其他关联系统和应用软件的权限 同时这种实现
  • win10下载与安装mysql详细步骤

    下载mysql 下载地址 https dev mysql com downloads mysql 5 1 html downloads 下载完以后 解压到自己想要安装的目录下 文件如下图所示 配置环境 右击 此电脑 选中 属性 点击 高级系
  • Buuctf Exec

    打开该靶机 发现该页面为一个ping页面 输入127 0 0 1测试 发现和电脑cmd上ping的结果差不多 分析一下ping小技巧 的区别 A B 简单的拼接 A B之间无制约关系 A B A执行成功 然后才会执行B A B A的输出 作
  • SQL语句用法大全

    SQL Structured Query Language 是一个对数据库进行增删改查的语言 不过这玩意儿还是挺难理解的 所以我就写了这篇文章 希望能帮助到您 为了方便阐述 我做了以下表格作为数据表进行演示 ABOUT NAME char