sql基础教程

sql教程

什么是sql?
  • SQL 指结构化查询语言
  • SQL 使我们有能力访问数据库
  • SQL 是一种 ANSI 的标准计算机语言
sql可以做什么
  • SQL 面向数据库执行查询
  • SQL 可从数据库取回数据
  • SQL 可在数据库中插入新的记录
  • SQL 可更新数据库中的数据
  • SQL 可从数据库删除记录
  • SQL 可创建新数据库
  • SQL 可在数据库中创建新表
  • SQL 可在数据库中创建存储过程
  • SQL 可在数据库中创建视图
  • SQL 可以设置表、存储过程和视图的权限
SQL 是一种标准 - 但是…
  • SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。

    不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 等等)。

    **注释:**除了 SQL 标准之外,大部分 SQL 数据库程序都拥有它们自己的私有扩展!

在您网站中使用sql
  • RDBMS 数据库程序(比如 MS Access, SQL Server, MySQL)
  • 服务器端脚本语言(比如 PHP 或 ASP)
  • SQL
  • HTML / CSS
RDBMS
  • RDBMS 指的是关系型数据库管理系统。

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

    RDBMS 中的数据存储在被称为表(tables)的数据库对象中。

    表是相关的数据项的集合,它由列和行组成。

sql语法

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

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

    Id LastName FirstName Address City
    1 Adams John Oxford Street London
    2 Bush George Fifth Avenue New York
    3 Carter Thomas Changan Street Beijing
    • 上面的表包含三条记录(每一条对应一个人)和五个列(Id、姓、名、地址和城市)。
sql语句
  • 您需要在数据库上执行的大部分工作都由 SQL 语句完成。

    下面的语句从表中选取 LastName 列的数据:

    SELECT LastName FROM Persons
    
  • 结果集类似这样:

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

    SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。

    查询和更新指令构成了 SQL 的 DML 部分:

    • SELECT - 从数据库表中获取数据
    • UPDATE - 更新数据库表中的数据
    • DELETE - 从数据库表中删除数据
    • INSERT INTO - 向数据库表中插入数据
  • SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

    SQL 中最重要的 DDL 语句:

    • CREATE DATABASE - 创建新数据库
    • ALTER DATABASE - 修改数据库
    • CREATE TABLE - 创建新表
    • ALTER TABLE - 变更(改变)数据库表
    • DROP TABLE - 删除表
    • CREATE INDEX - 创建索引(搜索键)
    • DROP INDEX - 删除索引

sql select

sql select 语句
  • SELECT 语句用于从表中选取数据。

    结果被存储在一个结果表中(称为结果集)。

  • sql select语法

    SELECT 列名称 FROM 表名称
    
    SELECT * FROM 表名称
    
    • 对大小写不敏感,SELECT 等效于 select。
sql select实例
  • 如需获取名为 “LastName” 和 “FirstName” 的列的内容(从名为 “Persons” 的数据库表),请使用类似这样的 SELECT 语句:

    SELECT LastName,FirstName FROM Persons
    
  • “Persons”表

    Id LastName FirstName Address City
    1 Adams John Oxford Street London
    2 Bush George Fifth Avenue New York
    3 Carter Thomas Changan Street Beijing

    结果

    LastName FirstName
    Adams John
    Bush George
    Carter Thomas
sql select *实例
  • 现在我们希望从 “Persons” 表中选取所有的列。

    请使用符号 * 取代列的名称,就像这样:

    SELECT * FROM Persons
    
    • 提示:星号(*)是选取所有列的快捷方式。

    结果

    Id LastName FirstName Address City
    1 Adams John Oxford Street London
    2 Bush George Fifth Avenue New York
    3 Carter Thomas Changan Street Beijing

sql select distinct

sql select distinct语句
  • 在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。

    关键词 DISTINCT 用于返回唯一不同的值。

  • 语法

    SELECT DISTINCT 列名称 FROM 表名称
    
使用distinct关键词
  • 如果要从 “Company” 列中选取所有的值,我们需要使用 SELECT 语句:

    SELECT Company FROM Orders
    
    • order 表

      Company OrderNumber
      IBM 3532
      W3School 2356
      Apple 4698
      W3School 6953

      结果

      Company
      IBM
      W3School
      Apple
      W3School
  • 请注意,在结果集中,W3School 被列出了两次。

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

    SELECT DISTINCT Company FROM Orders
    

    结果

    Company
    IBM
    W3School
    Apple

sql where语句

where语句
  • 语法

    SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
    
  • 下面的运算符可在 WHERE 子句中使用:

    操作符 描述
    = 等于
    <> 不等于
    > 大于
    < 小于
    >= 大于等于
    <= 小于等于
    BETWEEN 在某个范围内
    LIKE 搜索某种模式
    • 注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。
使用where语句
  • 如果只希望选取居住在城市 “Beijing” 中的人,我们需要向 SELECT 语句添加 WHERE 子句:

    SELECT * FROM Persons WHERE City='Beijing'
    
  • persons 表

    LastName FirstName Address City Year
    Adams John Oxford Street London 1970
    Bush George Fifth Avenue New York 1975
    Carter Thomas Changan Street Beijing 1980
    Gates Bill Xuanwumen 10 Beijing 1985

    结果

    LastName FirstName Address City Year
    Carter Thomas Changan Street Beijing 1980
    Gates Bill Xuanwumen 10 Beijing 1985
引号的使用
  • 文本值

    这是正确的:
    SELECT * FROM Persons WHERE FirstName='Bush'这是错误的:
    SELECT * FROM Persons WHERE FirstName=Bush
    
  • 数值

    这是正确的:
    SELECT * FROM Persons WHERE Year>1965这是错误的:
    SELECT * FROM Persons WHERE Year>'1965'
    

sql and & or 运算符

  • AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。
and和or 运算符
  • AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

    如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

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

  • 原始的表(用在例子中):

    LastName FirstName Address City
    Adams John Oxford Street London
    Bush George Fifth Avenue New York
    Carter Thomas Changan Street Beijing
    Carter William Xuanwumen 10 Beijing
and运算符实例
  • 使用 AND 来显示所有姓为 “Carter” 并且名为 “Thomas” 的人:
SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'

结果

LastName FirstName Address City
Carter Thomas Changan Street Beijing
or运算符实例
  • 使用 OR 来显示所有姓为 “Carter” 或者名为 “Thomas” 的人:

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

    结果

    LastName FirstName Address City
    Carter Thomas Changan Street Beijing
    Carter William Xuanwumen 10 Beijing
结合and和or运算符
  • 我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):

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

    结果

    LastName FirstName Address City
    Carter Thomas Changan Street Beijing
    Carter William Xuanwumen 10 Beijing

sql order by语句

  • order by 语句用于对结果集的行排序
order by语句
  • ORDER BY 语句用于根据指定的列对结果集进行排序。

    ORDER BY 语句默认按照升序对记录进行排序。

    如果您希望按照降序对记录进行排序,可以使用 DESC 关键字。

原始的表(用在例子中的)
  • order表:

    Company OrderNumber
    IBM 3532
    W3School 2356
    Apple 4698
    W3School 6953
实例1
  • 以字母顺序显示公司名称:

    SELECT Company, OrderNumber FROM Orders ORDER BY Company
    

    结果

    Company OrderNumber
    Apple 4698
    IBM 3532
    W3School 6953
    W3School 2356
实例2
  • 以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):

    SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
    

    结果

    Company OrderNumber
    Apple 4698
    IBM 3532
    W3School 2356
    W3School 6953
实例3
  • 以逆字母顺序显示公司名称:

    SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
    

    结果

    Company OrderNumber
    W3School 6953
    W3School 2356
    IBM 3532
    Apple 4698
实例4
  • 以逆字母顺序显示公司名称,并以数字顺序显示顺序号:

    SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
    

    结果

    Company OrderNumber
    W3School 2356
    W3School 6953
    IBM 3532
    Apple 4698

sql insert 语句

insertinto语句用于表格中插入新的行
  • 语法

    INSERT INTO 表名称 VALUES (值1, 值2,....)
    
  • 我们也可以指定所要插入数据的列:

    INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)
    
插入新的行
  • persons表

    LastName FirstName Address City
    Carter Thomas Changan Street Beijing
  • sql 语句

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

    结果

    LastName FirstName Address City
    Carter Thomas Changan Street Beijing
    Gates Bill Xuanwumen 10 Beijing
在指定的列中插入数据
  • persons 表

    LastName FirstName Address City
    Carter Thomas Changan Street Beijing
    Gates Bill Xuanwumen 10 Beijing
  • sql语句

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

    结果

    LastName FirstName Address City
    Carter Thomas Changan Street Beijing
    Gates Bill Xuanwumen 10 Beijing
    Wilson Champs-Elysees

sql update语句

update 语句
  • Update 语句用于修改表中的数据。
语法
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
persons表
LastName FirstName Address City
Gates Bill Xuanwumen 10 Beijing
Wilson Champs-Elysees
更新某一行中的一个列
  • 我们为 lastname 是 “Wilson” 的人添加 firstname:

    UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'
    

    结果

    LastName FirstName Address City
    Gates Bill Xuanwumen 10 Beijing
    Wilson Fred Champs-Elysees
更新某一行中的若干列
  • 我们会修改地址(address),并添加城市名称(city):

    UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing'
    WHERE LastName = 'Wilson'
    

    结果

    LastName FirstName Address City
    Gates Bill Xuanwumen 10 Beijing
    Wilson Fred Zhongshan 23 Nanjing

sql delete语句

delete语句
  • DELETE 语句用于删除表中的行。
语法
DELETE FROM 表名称 WHERE 列名称 = 值
person表:
LastName FirstName Address City
Gates Bill Xuanwumen 10 Beijing
Wilson Fred Zhongshan 23 Nanjing
删除某行
  • fred willson 会被删除

    DELETE FROM Person WHERE LastName = 'Wilson'
    

    结果

    LastName FirstName Address City
    Gates Bill Xuanwumen 10 Beijing
删除所有的行
  • 可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:

    DELETE FROM table_name
    

    或者

    DELETE * FROM table_name
    

sql基础语法,非常全建议收藏(大白菜程序猿欢迎大家关注)相关推荐

  1. 一级建造师课件下载建筑工程行业会计分录汇总非常全建议收藏!

    一级建造师课件下载建筑工程行业会计分录汇总非常全建议收藏! 1.基本流程 凭证制单→凭证审核→记账→对账→其他系统结账→总账系统结账 2.工资.社保费.个人所得税的核算 根据每月末人力资源部和各项目部 ...

  2. Oracle PL/SQL基础语法学习13:比较运算符

    系列文章目录 Oracle PL/SQL基础语法学习12:短路求值 Oracle PL/SQL基础语法学习13:比较运算符 Oracle PL/SQL基础语法学习14:BOOLEAN表达式 文章目录 ...

  3. ❤️14万字的《微服务开发SpringBoot—从基础高级》(建议收藏)❤️

    文章目录 1.什么是SpringBoot? Spring框架回顾 2.什么是微服务架构? 特点 3.第一个SpringBoot程序 1.环境准备 1.创建基础项目说明 2.项目创建方式一: 3.项目创 ...

  4. 【阿里内部教程】python初阶:基础语法 python全栈自动化测试系类

    目录 很多小伙伴可能都没有看过凡哥的视频,所以大家可能对凡哥不是很了解这里先和大家来个自我介绍 凡哥我已经有着十二年互联网自动化测试和测试开发工程师,拥有丰富的自动化测试平台及测试开发经验,擅长接口测 ...

  5. mysql安装及sql基础语法

    卑微小吴励志写博客第五天 由于国际形式紧张,某为公司今年很多项目的最紧急的事情就是数据库迁移,基本上都是从oracle迁移到mysql.所以对于程序员的我们,学习mysql数据库的相关知识是必须的.而 ...

  6. SQL基础语法学习总结

    本篇博客对于sql的基础语法做一个总结,学的东西太多太杂,总是不能记住太多东西,所以很多东西,会用,但是背不下来,毕竟不可能把所有语法和关键字都背完啊,本篇文章呢就用通俗易懂的话做一个基础知识的总结. ...

  7. Python基础语法视频教程全39集,历时1个多月终于更新完毕,需要的拿走!

    我应该是在4月底5月初的时候,说我准备录制一个python的教学视频. 我坚持了一个多月,每天晚上9点准时更新一集,从未断过. 截止上上周,全部39集python基础语法系列更新完毕. 完整教程目录 ...

  8. sql 基础语法 创建数据库和数据表 数据增删改查 分组查询 子查询回顾

    参考链接: SQL教程 MySQL教程 一.创建数据库语法 --用master数据库 use master --判断数据库是否存在,若存在则删除 if exists (select * from sy ...

  9. 零基础学习资料(建议收藏)

    本次整理分享的是一些零基础学习的资料,网盘资料建议大家收藏,分享永久有效,如果后续做调整删除文件的话可能会提示分享不存在,此次的分享针对没有基础从头学的小伙伴们比较友好些,有需要的赶紧收藏起来吧 「零 ...

  10. SQL常用脚本整理,建议收藏

    工作中有许多比较常用的SQL脚本,今天开始分几章分享给大家. 1.行转列的用法PIVOT CREATE table test (id int,name nvarchar(20),quarter int ...

最新文章

  1. FineReport中如何自定义登录界面
  2. WorkFlow入门Step.4—Adding Procedural Elements-For-WF4.0-(续)
  3. 添加请求头 retrofit_Python爬虫偷懒神器 — 快速构造请求头!
  4. jmeter响应断言使用_十二、Jmeter断言-响应断言、Json断言和Beanshell断言
  5. websoc是什么可以卸载吗_函授可以考公务员吗?什么是函授?
  6. C++提取PDF页成BMP图片
  7. 不想用鸿蒙系统怎么办,华为鸿蒙系统出大BUG!网友:这再也不是用户想要的鸿蒙系统...
  8. Linux系统编程(4)——文件与IO之ioctl函数
  9. 惠普笔记本电脑驱动BIOS下载中心,战66驱动下载
  10. android程序 获取flash容量大小,Android用WebView加载flash大文件偶然会出现内存溢出以及蓝色打问号小方块问题的解决方案...
  11. day12【Lambda,函数式接口】Lamd
  12. 外汇EA量化交易特点
  13. TensorFlow的常量、变量、常用函数(一)
  14. 由ip地址和子网掩码求网络号、主机号、广播地址(超详细)
  15. 基于springboot的会员后台管理系统
  16. 浅谈UML---协作图
  17. Matthew Ball:为什么说AR/VR元宇宙是Meta和苹果的下一个战场?
  18. 【前端】JS批量生成调查问卷选项
  19. 艺赛旗开发技巧-根据文本点击网页元素
  20. 利用matlab求解非线性规划问题

热门文章

  1. 《局域网技术与组网工程实验》学习笔记
  2. Node.js + Web Socket 打造即时聊天程序
  3. ROS通信机制~话题通信(PublisherSubscriber)·笔记2
  4. Python中 or 和 and 用法
  5. 农村淘宝年货节开20条品牌大街,1分钱买高品质牛奶!
  6. 物流行业专业词汇汇总
  7. Element-UI 上传图片到达一定数量后隐藏图片上传按钮
  8. JAVA边界布局和setbound_深入探究frame和bounds的区别以及setbounds使用
  9. 数字图像处理:图像压缩1 基础无损压缩
  10. 户外大覆盖无线访问接入AP?