精华内容
下载资源
问答
  • 2021-07-22 09:51:39

    零基础入门matlab

    前言

    这篇文章很适合MATLAB的入门学习,这也是我在入门时学习的笔记。

    虽然说是”零基础“入门matlab,但是如果有其它编程语言基础的话,学起来自然会更轻松。

    特别鸣谢:B站UP主——爱研究的小阿楠

    1.界面认识

    在这里插入图片描述

    2.变量命名

    注:Matlab中的注释

    %% 独占一行的注释(有上下横线分割)

    % 普通注释

    1)清空环境变量及命令

    clear all 清除Workspace中的所有变量(右侧工作区)

    clc 清除Command Window中的所有命令(命令行窗口)

    2)变量命名规则

    ①变量名区分大小写

    ②变量名长度不超过63位(hhh,不会有人把变量名弄这么长吧~)

    ③变量名简洁明了,尽量做到见名知意

    3.数据类型

    1)数字

    2 + 4

    10-7

    3*5

    8/2

    2)字符与字符串

    s = ‘a’ (单引号表示字符串)

    ==abs(s)==ASCII码

    char(97) 输出 a (ASCII码转字符串)

    num2str(65) 输出数字65

    str=‘I love MATLAB & Machine Learning’

    length(str) 字符串长度

    doc num2str

    3)矩阵(Matlab最NB的东西)

    A = [1 2 3; 4 5 2; 3 2 7]
    在这里插入图片描述
    B = A’ 把A进行转置,行变列,列变行

    在这里插入图片描述
    C = A(😃 竖向拉长(不好描述,直接看下图)

    在这里插入图片描述

    D = inv(A) 逆矩阵(必须时方阵才能求逆矩阵)

    执行下面两条语句

    D = inv(A) (求逆矩阵)
    A * D (相当于A×A的逆)

    在这里插入图片描述
    E = zeros(10,5,3) 创建一个10行5列3维的全0矩阵

    在这里插入图片描述

    在这里插入图片描述

    E(:,:,1) = rand(10,5)

    rand生成均匀分布的伪随机数。分布在(0~1)之间

    主要语法:rand(m,n)生成m行n列的均匀分布的伪随机数

    rand(m,n,‘double’)生成指定精度的均匀分布的伪随机数,参数还可以是’single’

    rand(RandStream,m,n)利用指定的RandStream(随机种子)生成伪随机数

    E(:,:,2) = randi(5,10,5)

    randi生成均匀分布的伪随机数

    主要语法:randi(iMax)在开区间(0,iMax)生成均匀分布的伪随机数

    randi(iMax,m,n)在开区间(0,iMax)生成mXn型随机矩阵

    r = randi([iMin,iMax],m,n)在开区间(iMin,iMax)生成mXn型随机矩阵

    E(:,:,3) = randn(10,5)

    randn生成标准正态分布的伪随机数(均值为0,方差为1)

    主要语法:和上面一样

    在这里插入图片描述
    在这里插入图片描述

    4.元胞数组和结构体

    元胞数组:是MATLAB中特有的一种数据类型,是数组的一种,其内部元素可以是属于不同的布局类型,概念理解上,可以认为它和C语言里面的结构体、C++里面的对象很类似。元胞数组是MATLAB中的特色数据类型,它不同于其它数据类型(如字符型,字符数组或者字符串,以及一般的算数数据和数组)。它特有的存取数据方法决定了它的特点,它有给人一种查询信息的感觉,可以逐渐追踪一直到所有的变量全部翻译成基本数据信息。它的class函数输出就是cell(细胞)

    %元胞数组
    A = cell(1,6)
    A{2} = eye(3) %2021版本前的matlab下标从1开始
    A{5} = magic(5)
    B = A{5}
    

    注:magic:字面意思是魔方,魔术的意思。在MATLAB中用来生成n阶幻方。比如三阶幻方就是1-9九个数字,组成一个3*3的矩阵,使得该矩阵无论横、竖还是斜三个方向上的三个数的和总是相同的。幻方是一个很古老的问题,试一下就知道了!

    在这里插入图片描述

    结构体

    %结构体
    books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30,40])
    books.name %属性
    books.name(1)
    books.name{1}
    

    在这里插入图片描述

    5.矩阵操作

    1)矩阵的定义与构造

    A = [1,2,3,4,5,6,5,4,6]
    B = 1:2:9 %第二个参数为步长,不可缺省
    B = 1:3:9
    C = repmat(B,3,2) %重复执行3行2列
    D = ones(2,4) %生成一个2行4列的全1矩阵
    

    在这里插入图片描述

    2)矩阵的四则运算

    A = [1 2 3 4; 5 6 7 8]
    B = [1 1 2 2; 2 2 1 1]
    C = A + B
    D = A - B
    E = A * B'
    F = A .* B % .*表示对应项相乘
    G = A / B %相当于A*B的逆 G*B = A  G*B*pinv(B) = A*pinv(B)  G = A*pinv(B),相当于A乘B
    H = A ./ B % ./表示对应项相除
    

    在这里插入图片描述

    在这里插入图片描述

    3)矩阵的下标

    A = magic(5)
    B = A(2,3)
    C = A(3,:) % :为取全部,那么这条语句表示取第三行
    D = A(:,4) %取第四列
    [m,n] = find(A > 20) %找到大于20的序号值/矩阵
    %取的是索引值
    

    在这里插入图片描述

    在这里插入图片描述

    6.程序结构

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    7.基本绘图操作

    7.1.二维平面绘图

    %1.二维平面绘图
    x = 0:0.01:2*pi %定义x的范围,第二个参数表示步长
    y = sin(x)
    figure %建立一个幕布
    plot(x,y) %绘制当前二维平面图
    title('y = sin(x)') %标题
    xlabel('x') %x轴
    ylabel('sin(x)') %y轴
    xlim([0 2*pi]) % x坐标值的范围
    

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    x = 0:0.01:20;
    y1 = 200*exp(-0.05*x).*sin(x);
    y2 = 0.8*exp(-0.5*x).*sin(10*x);
    figure
    [AX,H1,H2] = plotyy(x,y1,x,y2,'plot'); %共用一个x的坐标系,在y上有不同的取值
    %设置相应的标签
    set(get(AX(1),'Ylabel'),'String','Slow Decay')
    set(get(AX(2),'Ylabel'),'String','Fast Decay')
    xlabel('Time(\musec)')
    title('Multiple Decay Rates')
    set(H1,'LineStyle','--')
    set(H2,'LineStyle',':')
    

    在这里插入图片描述

    7.2.三维立体绘图

    %2.三维立体绘图
    t = 0: pi/50: 10*pi;
    plot3(sin(t),cos(t),t)
    xlabel('sin(t)')
    ylabel('cos(t)')
    zlabel('t')
    %hold on
    %hold off %不保留当前操作
    grid on %把图片绘制出来,在图片中加一些网格线
    axis square %使整个图(连同坐标系)呈方体
    

    在这里插入图片描述
    注:关于hold on 和 hold off的用法:点这

    8.图形的保存与导出

    如果直接用截图的方式截取matlab生成的图像,会影响图像的清晰度。因此我们建议:可以用如下方法保存与导出图形。

    1)如图在这里插入图片描述

    在这里插入图片描述

    2)编辑→复制选项

    可调节相应元素

    在这里插入图片描述

    3)编辑→图窗属性

    在这里插入图片描述

    4)文件→导出设置

    在这里插入图片描述

    通过调节宽度、高度等像素值属性,可以让图片即使很小,文字依然清晰。

    Matlab基础的部分到这就结束了,下面作一点补充~

    9.补充

    [x,y,z] = peaks(30); %peaks命令用于产生双峰函数或者是用双峰函数绘图
    mesh(x,y,z)
    grid
    

    在这里插入图片描述
    完结~
    感谢大家的支持、点赞、收藏、关注以及批评指正~

    更多相关内容
  • HALCON快速入门手册.pdf

    2020-07-10 22:50:02
    本HALCON入门手册为本人于2020年初编写,旨在帮助刚开始接触HALCON,或者在一些设计中临时简单使用下HALCON的朋友快速上手这款优秀的机器视觉软件,配有入门操作每一步骤的截图及说明,并附有一些常用的模板和算子。...
  • FPGA入门资料7本合集

    2019-02-20 15:31:25
    FPGA 入门资料 7本合集 1.深入浅出玩转FPGA_吴厚航 2.FPGA开发全攻略(上) 3.FPGA开发全攻略(下) 4.FPGA应用开发入门与典型实例 5.FPGA权威指南 6.写给小白们的FPGA入门设计实验 7.FPGA数字信号处理设计教程-...
  • Python入门基础教程全套.ppt

    千次下载 2020-04-22 15:59:55
    Python入门基础
  • 这个对于刚入门的同学可以拿来看看,老手们就没必要啦
  • 《C#入门经典》系列是屡获殊荣的C#名著和超级畅销书。最新版的《C#入门经典(第6版) 》 面向编程新手,全面介绍使用C# 2012和.NET Framework编写程序的基础知识。本书无与伦比的作者团队与您分享多年积累的C#和.NET...
  • 本课程为地理信息系统(GIS)实验案例视频教程,以ArcGIS10.x为实验平台,以空间分析为主线。内容包括ArcGIS简介、ArcGIS应用基础、空间数据的采集与组织、空间数据的转换与处理、空间数据的可视化表达、GIS空间分析...
  • MT5编程从入门到精通:MQL5编程认知

    千人学习 2019-04-09 14:57:49
    本课程是MT5编程从入门到精通的第一阶段课程,详细的介绍了没有编程经验的小白也能快速的进入MT5编程的世界,为没有编程经验的外汇交易爱好者,树立MT5程序化交易的信心。 本阶段课程共分为三个章节,第一章重点讲解...
  • canoe 零基础快速入门教程,恒润的,别的地方下载的,入门级干货,96页的那种
  • halcon入门教程详解

    2018-02-02 11:27:30
    详细介绍了halcon入门基础知识,比如摄像头获取图像和参数设置以及图像处理常用的算子,边缘检测,区域生长等
  • C#从入门到精通(第3版)完整高清pdf事一本十分不错的C#学习入门书籍,题主一开始也是啃得这本书
  • 适合新手入门学习,资料详细,自己也是找了很久才找到
  • 这是学习Labview最好的书籍,内容非常详尽,涵盖从最基础到最高级的全部内容
  • 小程序开发入门

    万人学习 2018-09-21 21:24:57
    2020年12月最新最全的零基础小程序实战入门,零基础入门微信小程序开发。10天带领大家上线一款属于自己的微信小程序。微信小程序开发入门视频教程,该课程从微信小程序注册到官方开发工具、官方Demo、再到开发个人专...
  • openwrt入门经典教程大全

    热门讨论 2015-11-24 12:10:51
    1.搭建开发环境 2.下载编译openwrt 3.烧写openwrt固件 4.设置开发板的IP地址 5.WAN与LAN的切换 6.为OpenWrt配置支持Web界面 7.开发板做无线接入点 8.开发板做站点 ...openwrt非常系统的入门经典教程
  • [14本经典Android开发教程]-7-Android编程入门教程 -------------------------------------------------- 本文为以前已经使用Java编程并想开始为Android平台开发的开发者编写。我试着尽可能地多的"展开",在合适的每...
  • 编程小白的第一本 Python 入门

    热门讨论 2016-06-28 13:36:23
    为了能让更多的编程小白轻松地入门编程,把高效学习法结合Python 中的核心知识,写成了这本书。随意翻上几页,你就会发现这本书和其他编程书的不同,其中有大量的视觉化场景帮你理解概念,穿插了若干有趣的小项目,...
  • React中文入门教程 pdf 下载

    热门讨论 2017-03-19 10:52:57
    React中文入门教程
  • MATLAB初学者教程 MATLAB编程-菜鸟入门
  • Visual C# 2010从入门到精通(周靖) pdf

    热门讨论 2015-07-09 14:22:34
    Visual C# 2010从入门到精通(周靖).pdf,本书分六部分,共二十九章,内容包括:Visual C#和Visual Studio 2010概述、理解C#语言、创建组件、操纵Windows应用程序、管理数据、使用Visual Studio 2010构建专业解决方案...
  • CANoe 入门三部曲

    2015-09-07 16:29:58
    很好的CANoe入门介绍文档,整理后上传。看完后可以大体了解CANoe的使用。
  • Java入门学习PPT课件

    千次下载 热门讨论 2015-12-21 13:24:58
    本课件主要讲解了java的一些入门知识,比较基础,适合初学java的朋友。刚开始看书可能会觉得枯燥,不防先看看简单的课件。浅显易懂。
  • Creo 3.0快速入门教程 PDF电子书

    千次下载 热门讨论 2016-03-14 13:49:22
    Creo 3.0快速入门教程978-7-111-46819-6_13589891
  • 零基础Python 入门

    万人学习 2021-04-23 17:49:08
    零基础学编程,用python入门是个不错的选择,虽然国内基本上还是以c语言作为入门开发语言,但在国外,已经有很多的学校使用python作为入门编程语言。 【为什么学Python】   Python 是当今非常热门的语言之一,...
  • PHP从入门到精通第三版源码实例

    千次下载 热门讨论 2015-06-10 14:56:02
    本压缩包为《PHP从入门到精通第三版(明日科技)》的随书光盘实例。附件的实例文件名对应书中光盘实例位置编号,可以在appserv中直接运行。该代码位置与《PHP从入门到精通第二版》的光盘代码位置也大致相同。读者...
  • 基础篇:数据库 SQL 入门教程

    万次阅读 多人点赞 2021-09-02 21:13:58
    超全SQL教程,收藏就完事了!

    ❤️ 前些天发现了一个通俗易懂,风趣幽默的 人工智能学习网站!👈🏻 免费学习

    📚 前言

    SQL语言有40多年的历史,从它被应用至今几乎无处不在。我们消费的每一笔支付记录,收集的每一条用户信息,发出去的每一条消息,都会使用数据库或与其相关的产品来存储,而操纵数据库的语言正是 SQL !

    SQL 对于现在的互联网公司生产研发等岗位几乎是一个必备技能,如果不会 SQL 的话,可能什么都做不了。你可以把 SQL 当做是一种工具,利用它可以帮助你完成你的工作,创造价值。


    文章结尾有 SQL 小测验哦!看看你能得几分?

    ⭐️ 点我跳转到 SQL 测验!

    🌴 SQL 介绍

    🌼 什么是 SQL

    SQL 是用于访问和处理数据库的标准的计算机语言。

    • SQL 指结构化查询语言
    • SQL 使我们有能力访问数据库
    • SQL 是一种 ANSI 的标准计算机语言


    SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。但是由于各种各样的数据库出现,导致很多不同版本的 SQL 语言,为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等),这些就是我们要学习的SQL基础。

    🌀 SQL 的类型

    可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。

    • 数据查询语言(DQL: Data Query Language)
    • 数据操纵语言(DML:Data Manipulation Language)

    🌵 学习 SQL 的作用

    SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。

    • SQL 面向数据库执行查询
    • SQL 可从数据库取回数据
    • SQL 可在数据库中插入新的记录
    • SQL 可更新数据库中的数据
    • SQL 可从数据库删除记录
    • SQL 可创建新数据库
    • SQL 可在数据库中创建新表
    • SQL 可在数据库中创建存储过程
    • SQL 可在数据库中创建视图
    • SQL 可以设置表、存储过程和视图的权限

    🍄 数据库是什么

    顾名思义,你可以理解为数据库是用来存放数据的一个容器。

    打个比方,每个人家里都会有冰箱,冰箱是用来干什么的?冰箱是用来存放食物的地方。

    同样的,数据库是存放数据的地方。正是因为有了数据库后,我们可以直接查找数据。例如你每天使用余额宝查看自己的账户收益,就是从数据库读取数据后给你的。

    最常见的数据库类型是关系型数据库管理系统(RDBMS):

    RDBMS 是 SQL 的基础,同样也是所有现代数据库系统的基础,比如 MS SQL Server, IBM DB2, Oracle, MySQL 以及 Microsoft Access等等。

    RDBMS 中的数据存储在被称为表(tables)的数据库对象中。 是相关的数据项的集合,它由列和行组成。

    由于本文主要讲解 SQL 基础,因此对数据库不做过多解释,只需要大概了解即可。咱们直接开始学习SQL!

    🐥 SQL 基础语言学习

    在了解 SQL 基础语句使用之前,我们先讲一下 是什么?

    一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。

    下面的例子是一个名为 “Persons” 的表:

    IdLastNameFirstNameAddressCity
    1AdamsJohnOxford StreetLondon
    2BushGeorgeFifth AvenueNew York
    3CarterThomasChangan StreetBeijing

    上面的表包含三条记录(每一条对应一个人)和五个列(Id、姓、名、地址和城市)。

    有表才能查询,那么如何创建这样一个表?

    🐤 CREATE TABLE – 创建表

    CREATE TABLE 语句用于创建数据库中的表。

    语法:

    CREATE TABLE 表名称
    (
    列名称1 数据类型,
    列名称2 数据类型,
    列名称3 数据类型,
    ....
    );
    

    数据类型(data_type)规定了列可容纳何种数据类型。下面的表格包含了SQL中最常用的数据类型:

    数据类型描述
    integer(size),int(size),smallint(size),tinyint(size)仅容纳整数、在括号内规定数字的最大位数
    decimal(size,d),numeric(size,d)容纳带有小数的数字、“size” 规定数字的最大位数、“d” 规定小数点右侧的最大位数
    char(size)容纳固定长度的字符串(可容纳字母、数字以及特殊字符)、在括号中规定字符串的长度
    varchar(size)容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)、在括号中规定字符串的最大长度
    date(yyyymmdd)容纳日期

    实例:

    本例演示如何创建名为 “Persons” 的表。

    该表包含 5 个列,列名分别是:“Id_P”、“LastName”、“FirstName”、“Address” 以及 “City”:

    CREATE TABLE Persons
    (
    Id_P int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    );
    

    Id_P 列的数据类型是 int,包含整数。其余 4 列的数据类型是 varchar,最大长度为 255 个字符。


    空的 “Persons” 表类似这样:

    可使用 INSERT INTO 语句向空表写入数据。

    🐑 INSERT – 插入数据

    INSERT INTO 语句用于向表格中插入新的行。

    语法:

    INSERT INTO 表名称 VALUES (1,2,....);
    

    我们也可以指定所要插入数据的列:

    INSERT INTO table_name (1,2,...) VALUES (1,2,....);
    

    实例:

    本例演示 “Persons” 表插入记录的两种方式:

    1、插入新的行

    INSERT INTO Persons VALUES (1, 'Gates', 'Bill', 'Xuanwumen 10', 'Beijing');
    

    2、在指定的列中插入数据

    INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees');
    


    插入成功后,数据如下:

    这个数据插入之后,是通过 SELECT 语句进行查询出来的,别急马上讲!

    🐼 SELECT – 查询数据

    SELECT 语句用于从表中选取数据,结果被存储在一个结果表中(称为结果集)。

    语法:

    SELECT * FROM 表名称;
    

    我们也可以指定所要查询数据的列:

    SELECT 列名称 FROM 表名称;
    

    📢 注意: SQL 语句对大小写不敏感,SELECT 等效于 select。

    实例:

    SQL SELECT * 实例:

    SELECT * FROM Persons;
    


    📢 注意: 星号(*)是选取所有列的快捷方式。

    如需获取名为 “LastName” 和 “FirstName” 的列的内容(从名为 “Persons” 的数据库表),请使用类似这样的 SELECT 语句:

    SELECT LastName,FirstName FROM Persons;
    

    🐫 DISTINCT – 去除重复值

    如果一张表中有多行重复数据,如何去重显示呢?可以了解下 DISTINCT

    语法:

    SELECT DISTINCT 列名称 FROM 表名称;
    

    实例:

    如果要从 “LASTNAME” 列中选取所有的值,我们需要使用 SELECT 语句:

    SELECT LASTNAME FROM Persons;
    


    可以发现,在结果集中,Wilson 被列出了多次。

    如需从 “LASTNAME” 列中仅选取唯一不同的值,我们需要使用 SELECT DISTINCT 语句:

    SELECT DISTINCT LASTNAME FROM Persons;
    


    通过上述查询,结果集中只显示了一列 Wilson,显然已经去除了重复列。

    🐸 WHERE – 条件过滤

    如果需要从表中选取指定的数据,可将 WHERE 子句添加到 SELECT 语句。

    语法:

    SELECT 列名称 FROM 表名称 WHERE 列 运算符 值;
    

    下面的运算符可在 WHERE 子句中使用:

    操作符描述
    =等于
    <>不等于
    >大于
    <小于
    >=大于等于
    <=小于等于
    BETWEEN在某个范围内
    LIKE搜索某种模式

    📢 注意: 在某些版本的 SQL 中,操作符 <> 可以写为 !=。

    实例:

    如果只希望选取居住在城市 “Beijing” 中的人,我们需要向 SELECT 语句添加 WHERE 子句:

    SELECT * FROM Persons WHERE City='Beijing';
    


    📢 注意: SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。如果是数值,请不要使用引号。

    🐹 AND & OR – 运算符

    AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

    • 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
    • 如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

    语法:

    AND 运算符实例:

    SELECT * FROM 表名称 WHERE 列 运算符 值 AND 列 运算符 值;
    

    OR 运算符实例:

    SELECT * FROM 表名称 WHERE 列 运算符 值 OR 列 运算符 值;
    

    实例:

    由于 Persons 表数据太少,因此增加几条记录:

    INSERT INTO Persons VALUES (2, 'Adams', 'John', 'Oxford Street', 'London');
    INSERT INTO Persons VALUES (3, 'Bush', 'George', 'Fifth Avenue', 'New York');
    INSERT INTO Persons VALUES (4, 'Carter', 'Thomas', 'Changan Street', 'Beijing');
    INSERT INTO Persons VALUES (5, 'Carter', 'William', 'Xuanwumen 10', 'Beijing');
    SELECT * FROM Persons;
    


    AND 运算符实例:

    使用 AND 来显示所有姓为 “Carter” 并且名为 “Thomas” 的人:

    SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter';
    


    OR 运算符实例:

    使用 OR 来显示所有姓为 “Carter” 或者名为 “Thomas” 的人:

    SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter';
    


    结合 AND 和 OR 运算符:

    我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):

    SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William') AND LastName='Carter';
    

    🐰 ORDER BY – 排序

    ORDER BY 语句用于根据指定的列对结果集进行排序,默认按照升序对记录进行排序,如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

    语法:

    SELECT * FROM 表名称 ORDER BY1,2 DESC;
    

    默认排序为 ASC 升序,DESC 代表降序。

    实例:

    以字母顺序显示 LASTNAME 名称:

    SELECT * FROM Persons ORDER BY LASTNAME;
    


    空值(NULL)默认排序在有值行之后。

    以数字顺序显示ID_P,并以字母顺序显示 LASTNAME 名称:

    SELECT * FROM Persons ORDER BY ID_P,LASTNAME;
    


    以数字降序显示ID_P

    SELECT * FROM Persons ORDER BY ID_P DESC;
    


    📢 注意: 在第一列中有相同的值时,第二列是以升序排列的。如果第一列中有些值为 null 时,情况也是这样的。

    🐱 UPDATE – 更新数据

    Update 语句用于修改表中的数据。

    语法:

    UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值;
    

    实例:

    更新某一行中的一个列:

    目前 Persons 表有很多字段为 null 的数据,可以通过 UPDATE 为 LASTNAME 是 “Wilson” 的人添加FIRSTNAME:

    UPDATE Persons SET FirstName = 'Fred' WHERE LastName = 'Wilson';
    


    更新某一行中的若干列:

    UPDATE Persons SET ID_P = 6,city= 'London' WHERE LastName = 'Wilson';
    

    🐨 DELETE – 删除数据

    DELETE 语句用于删除表中的行。

    语法:

    DELETE FROM 表名称 WHERE 列名称 =;
    

    实例:

    删除某行:

    删除 Persons 表中 LastName 为 “Fred Wilson” 的行:

    DELETE FROM Persons WHERE LastName = 'Wilson';
    


    删除所有行:

    可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:

    DELETE FROM table_name;
    

    🐵 TRUNCATE TABLE – 清除表数据

    如果我们仅仅需要除去表内的数据,但并不删除表本身,那么我们该如何做呢?

    可以使用 TRUNCATE TABLE 命令(仅仅删除表格中的数据):

    语法:

    TRUNCATE TABLE 表名称;
    

    实例:

    本例演示如何删除名为 “Persons” 的表。

    TRUNCATE TABLE persons;
    

    🐯 DROP TABLE – 删除表

    DROP TABLE 语句用于删除表(表的结构、属性以及索引也会被删除)。

    语法:

    DROP TABLE 表名称;
    

    实例:

    本例演示如何删除名为 “Persons” 的表。

    drop table persons;
    


    从上图可以看出,第一次执行删除时,成功删除了表 persons,第二次执行删除时,报错找不到表 persons,说明表已经被删除了。

    🚀 SQL 高级言语学习

    🚢 LIKE – 查找类似值

    LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

    语法:

    SELECT 列名/(*) FROM 表名称 WHERE 列名称 LIKE;
    

    实例:

    Persons 表插入数据:

    INSERT INTO Persons VALUES (1, 'Gates', 'Bill', 'Xuanwumen 10', 'Beijing');
    INSERT INTO Persons VALUES (2, 'Adams', 'John', 'Oxford Street', 'London');
    INSERT INTO Persons VALUES (3, 'Bush', 'George', 'Fifth Avenue', 'New York');
    INSERT INTO Persons VALUES (4, 'Carter', 'Thomas', 'Changan Street', 'Beijing');
    INSERT INTO Persons VALUES (5, 'Carter', 'William', 'Xuanwumen 10', 'Beijing');
    select * from persons;
    


    1、现在,我们希望从上面的 “Persons” 表中选取居住在以 “N” 开头的城市里的人:

    SELECT * FROM Persons WHERE City LIKE 'N%';
    


    2、接下来,我们希望从 “Persons” 表中选取居住在以 “g” 结尾的城市里的人:

    SELECT * FROM Persons WHERE City LIKE '%g';
    


    3、接下来,我们希望从 “Persons” 表中选取居住在包含 “lon” 的城市里的人:

    SELECT * FROM Persons WHERE City LIKE '%on%';
    


    4、通过使用 NOT 关键字,我们可以从 “Persons” 表中选取居住在不包含 “lon” 的城市里的人:

    SELECT * FROM Persons WHERE City NOT LIKE '%on%';
    


    📢注意: “%” 可用于定义通配符(模式中缺少的字母)。

    🚤 IN – 锁定多个值

    IN 操作符允许我们在 WHERE 子句中规定多个值。

    语法:

    SELECT 列名/(*) FROM 表名称 WHERE 列名称 IN (1,2,3);
    

    实例:

    现在,我们希望从 Persons 表中选取姓氏为 Adams 和 Carter 的人:

    SELECT * FROM Persons WHERE LastName IN ('Adams','Carter');
    

    ⛵️ BETWEEN – 选取区间数据

    操作符 BETWEEN … AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

    语法:

    SELECT 列名/(*) FROM 表名称 WHERE 列名称 BETWEEN1 AND2;
    

    实例:

    1、查询以字母顺序显示介于 “Adams”(包括)和 “Carter”(不包括)之间的人:

    SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter';
    


    2、查询上述结果相反的结果,可以使用 NOT:

    SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Adams' AND 'Carter';
    


    📢 注意: 不同的数据库对 BETWEEN…AND 操作符的处理方式是有差异的。

    某些数据库会列出介于 “Adams” 和 “Carter” 之间的人,但不包括 “Adams” 和 “Carter” ;某些数据库会列出介于 “Adams” 和 “Carter” 之间并包括 “Adams” 和 “Carter” 的人;而另一些数据库会列出介于 “Adams” 和 “Carter” 之间的人,包括 “Adams” ,但不包括 “Carter” 。

    所以,请检查你的数据库是如何处理 BETWEEN…AND 操作符的!

    🚂 AS – 别名

    通过使用 SQL,可以为列名称和表名称指定别名(Alias),别名使查询程序更易阅读和书写。

    语法:

    表别名:

    SELECT 列名称/(*) FROM 表名称 AS 别名;
    

    列别名:

    SELECT 列名称 as 别名 FROM 表名称;
    

    实例:

    使用表名称别名:

    SELECT p.LastName, p.FirstName
    FROM Persons p 
    WHERE p.LastName='Adams' AND p.FirstName='John';
    


    使用列名别名:

    SELECT LastName "Family", FirstName "Name" FROM Persons;
    


    📢 注意: 实际应用时,这个 AS 可以省略,但是列别名需要加上 " "

    🚁 JOIN – 多表关联

    JOIN 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

    有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join

    数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

    如图,“Id_P” 列是 Persons 表中的的主键。这意味着没有两行能够拥有相同的 Id_P。即使两个人的姓名完全相同,Id_P 也可以区分他们。

    ❤️ 为了下面实验的继续,我们需要再创建一个表:Orders。

    create table orders (id_o number,orderno number,id_p number);
    insert into orders values(1,11111,1);
    insert into orders values(2,22222,2);
    insert into orders values(3,33333,3);
    insert into orders values(4,44444,4);
    insert into orders values(6,66666,6);
    select * from orders;
    


    如图,“Id_O” 列是 Orders 表中的的主键,同时,“Orders” 表中的 “Id_P” 列用于引用 “Persons” 表中的人,而无需使用他们的确切姓名。

    select * from persons p,orders o where p.id_p=o.id_p;
    


    可以看到,“Id_P” 列把上面的两个表联系了起来。

    语法:

    select 列名
    from 表A
    INNER|LEFT|RIGHT|FULL JOIN 表B
    ON 表A主键列 = 表B外键列;
    

    不同的 SQL JOIN:

    下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。

    • JOIN: 如果表中有至少一个匹配,则返回行
    • INNER JOIN: 内部连接,返回两表中匹配的行
    • LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
    • RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
    • FULL JOIN: 只要其中一个表中存在匹配,就返回行

    实例:

    如果我们希望列出所有人的定购,可以使用下面的 SELECT 语句:

    SELECT p.LastName, p.FirstName, o.OrderNo
    FROM Persons p
    INNER JOIN Orders o
    ON p.Id_P = o.Id_P
    ORDER BY p.LastName DESC;
    

    🚜 UNION – 合并结果集

    UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

    UNION 语法:

    SELECT 列名 FROM 表A
    UNION
    SELECT 列名 FROM 表B;
    

    📢注意: UNION 操作符默认为选取不同的值。如果查询结果需要显示重复的值,请使用 UNION ALL

    UNION ALL 语法:

    SELECT 列名 FROM 表A
    UNION ALL
    SELECT 列名 FROM 表B;
    

    另外,UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

    为了实验所需,创建 Person_b 表:

    CREATE TABLE Persons_b
    (
    Id_P int,
    LastName varchar(255),
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    );
    INSERT INTO Persons_b VALUES (1, 'Bill', 'Gates', 'Xuanwumen 10', 'Londo');
    INSERT INTO Persons_b VALUES (2, 'John', 'Adams', 'Oxford Street', 'nBeijing');
    INSERT INTO Persons_b VALUES (3, 'George', 'Bush', 'Fifth Avenue', 'Beijing');
    INSERT INTO Persons_b VALUES (4, 'Thomas', 'Carter', 'Changan Street', 'New York');
    INSERT INTO Persons_b VALUES (5, 'William', 'Carter', 'Xuanwumen 10', 'Beijing');
    select * from persons_b;
    


    实例:

    使用 UNION 命令:

    列出 persons 和 persons_b 中不同的人:

    select * from persons
    UNION
    select * from persons_b;
    


    📢注意: UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

    🚌 NOT NULL – 非空

    NOT NULL 约束强制列不接受 NULL 值。

    NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

    语法:

    CREATE TABLE(int NOT NULL
    );
    

    如上,创建一个表,设置列值不能为空。

    实例:

    create table lucifer (id number not null);
    insert into lucifer values (NULL);
    


    📢 注意: 如果插入 NULL 值,则会报错 ORA-01400 提示无法插入!

    ⭐️ 拓展小知识:NOT NULL 也可以用于查询条件:

    select * from persons where FirstName is not null;
    


    同理,NULL 也可:

    select * from persons where FirstName is null;
    

    感兴趣的朋友,可以自己尝试一下!

    🚐 VIEW – 视图

    在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。

    视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,我们也可以提交数据,就像这些来自于某个单一的表。

    语法:

    CREATE VIEW 视图名 AS
    SELECT 列名
    FROM 表名
    WHERE 查询条件;
    

    📢 注意: 视图总是显示最近的数据。每当用户查询视图时,数据库引擎通过使用 SQL 语句来重建数据。

    实例:

    下面,我们将 Persons 表中住在 Beijing 的人筛选出来创建视图:

    create view persons_beijing as
    select * from persons where city='Beijing';
    


    查询上面这个视图:

    如果需要更新视图中的列或者其他信息,无需删除,使用 CREATE OR REPLACE VIEW 选项:

    CREATE OR REPLACE VIEW 视图名 AS
    SELECT 列名
    FROM 表名
    WHERE 查询条件;
    

    实例:

    现在需要筛选出,LASTNAME 为 Gates 的记录:

    create or replace view persons_beijing as
    select * from persons where lastname='Gates';
    



    删除视图就比较简单,跟表差不多,使用 DROP 即可:

    drop view persons_beijing;
    


    ❤️ 本章要讲的高级语言就先到此为止,不宜一次性介绍太多~

    🎯 SQL 常用函数学习

    SQL 拥有很多可用于计数和计算的内建函数。

    函数的使用语法:

    SELECT function() FROM;
    

    ❤️ 下面就来看看有哪些常用的函数!

    🍔 AVG – 平均值

    AVG 函数返回数值列的平均值。NULL 值不包括在计算中。

    语法:

    SELECT AVG(列名) FROM 表名;
    

    实例:

    计算 “orderno” 字段的平均值。

    select avg(orderno) from orders;
    


    当然,也可以用在查询条件中,例如查询低于平均值的记录:

    select * from orders where orderno < (select avg(orderno) from orders);
    

    🍕 COUNT – 汇总行数

    COUNT() 函数返回匹配指定条件的行数。

    语法:

    count() 中可以有不同的语法:

    • COUNT(*) :返回表中的记录数。
    • COUNT(DISTINCT 列名) :返回指定列的不同值的数目。
    • COUNT(列名) :返回指定列的值的数目(NULL 不计入)。
    SELECT COUNT(*) FROM 表名;
    SELECT COUNT(DISTINCT 列名) FROM 表名;
    SELECT COUNT(列名) FROM 表名;
    

    实例:

    COUNT(*) :

    select count(*) from persons;
    


    COUNT(DISTINCT 列名) :

    select count(distinct city) from persons;
    


    COUNT(列名) :

    select count(city) from persons;
    

    🍘 MAX – 最大值

    MAX 函数返回一列中的最大值。NULL 值不包括在计算中。

    语法:

    SELECT MAX(列名) FROM 表名;
    

    MIN 和 MAX 也可用于文本列,以获得按字母顺序排列的最高或最低值。

    实例:

    select max(orderno) from orders;
    

    🍢 MIN – 最小值

    MIN 函数返回一列中的最小值。NULL 值不包括在计算中。

    语法:

    SELECT MIN(列名) FROM 表名;
    

    实例:

    select min(orderno) from orders;
    

    🍰 SUM – 求和

    SUM 函数返回数值列的总数(总额)。

    语法:

    SELECT SUM(列名) FROM 表名;
    

    实例:

    select sum(orderno) from orders;
    

    🍪 GROUP BY – 分组

    GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。

    语法:

    SELECT 列名A, 统计函数(列名B)
    FROM 表名
    WHERE 查询条件
    GROUP BY 列名A;
    

    实例:

    获取 Persons 表中住在北京的总人数,根据 LASTNAME 分组:

    select lastname,count(city) from persons 
    where city='Beijing' 
    group by lastname;
    


    如果不加 GROUP BY 则会报错:

    也就是常见的 ORA-00937 不是单组分组函数的错误。

    🍭 HAVING – 句尾连接

    在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与合计函数一起使用。

    语法:

    SELECT 列名A, 统计函数(列名B)
    FROM table_name
    WHERE 查询条件
    GROUP BY 列名A
    HAVING 统计函数(列名B) 查询条件;
    

    实例:

    获取 Persons 表中住在北京的总人数大于1的 LASTNAME,根据 LASTNAME 分组:

    select lastname,count(city) from persons 
    where city='Beijing' 
    group by lastname
    having count(city) > 1;
    

    🍷 UCASE/UPPER – 大写

    UCASE/UPPER 函数把字段的值转换为大写。

    语法:

    select upper(列名) from 表名;
    

    实例:

    选取 “LastName” 和 “FirstName” 列的内容,然后把 “LastName” 列转换为大写:

    select upper(lastname),firstname from persons;
    

    🍶 LCASE/LOWER – 小写

    LCASE/LOWER 函数把字段的值转换为小写。

    语法:

    select lower(列名) from 表名;
    

    实例:

    选取 “LastName” 和 “FirstName” 列的内容,然后把 “LastName” 列转换为小写:

    select lower(lastname),firstname from persons;
    

    👛 LEN/LENGTH – 获取长度

    LEN/LENGTH 函数返回文本字段中值的长度。

    语法:

    select length(列名) from 表名;
    

    实例:

    获取 LASTNAME 的值字符长度:

    select length(lastname),lastname from persons;
    

    🍗 ROUND – 数值取舍

    ROUND 函数用于把数值字段舍入为指定的小数位数。

    语法:

    select round(列名,精度) from 表名;
    

    实例:

    保留2位:

    select round(1.1314,2) from dual;
    select round(1.1351,2) from dual;
    



    📢 注意:ROUND 取舍是 四舍五入 的!

    取整:

    select round(1.1351,0) from dual;
    select round(1.56,0) from dual;
    

    🍞 NOW/SYSDATE – 当前时间

    NOW/SYSDATE 函数返回当前的日期和时间。

    语法:

    select sysdate from 表名;
    

    实例:

    获取当前时间:

    select sysdate from dual;
    


    📢 注意: 如果您在使用 Sql Server 数据库,请使用 getdate() 函数来获得当前的日期时间。

    🍺 写在最后

    上述如果都学完了的话,可以来做个小测验:SQL 测验,看看掌握的怎么样!

    ❤️ 测验会被记分:

    每道题的分值是 1 分。在您完成全部的20道题之后,系统会为您的测验打分,并提供您做错的题目的正确答案。其中,绿色为正确答案,而红色为错误答案。

    现在就开始测验! 祝您好运。

    展开全文
  • Visual C++ 2012入门经典 第6版

    热门讨论 2015-01-26 01:43:35
    Visual C++ 2012入门经典 第6版 Visual C++ 2012入门经典 Visual C++ 2012
  • UG NX8.0快速入门、进阶与精通978-7-121-22485-0_13503932
  • storm入门.pdf

    千次下载 热门讨论 2014-08-26 11:02:24
    storm的入门,东西很不错!看完就算是基本入门啦!!还等什么?
  • c#入门经典(第五版)中文版.PDF

    千次下载 热门讨论 2011-11-06 15:51:10
    第Ⅰ部分 C#语言 第1章 C#简介 1.1 .NET Framework的含义 1.1.1 .NET Framework的内容 1.1.2 使用.NET Framework编写应用程序 1.2 C#的含义 1.2.1 用C#能编写什么样的应用程序 1.2.2 本书中的C# ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,566,840
精华内容 1,026,736
关键字:

入门