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

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” 的表:

    IdLastNameFirstNameAddressCity
    1AdamsJohnOxford StreetLondon
    2BushGeorgeFifth AvenueNew York
    3CarterThomasChangan StreetBeijing
    • 上面的表包含三条记录(每一条对应一个人)和五个列(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”表

    IdLastNameFirstNameAddressCity
    1AdamsJohnOxford StreetLondon
    2BushGeorgeFifth AvenueNew York
    3CarterThomasChangan StreetBeijing

    结果

    LastNameFirstName
    AdamsJohn
    BushGeorge
    CarterThomas
sql select *实例
  • 现在我们希望从 “Persons” 表中选取所有的列。

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

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

    结果

    IdLastNameFirstNameAddressCity
    1AdamsJohnOxford StreetLondon
    2BushGeorgeFifth AvenueNew York
    3CarterThomasChangan StreetBeijing

sql select distinct

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

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

  • 语法

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

    SELECT Company FROM Orders
    
    • order 表

      CompanyOrderNumber
      IBM3532
      W3School2356
      Apple4698
      W3School6953

      结果

      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 表

    LastNameFirstNameAddressCityYear
    AdamsJohnOxford StreetLondon1970
    BushGeorgeFifth AvenueNew York1975
    CarterThomasChangan StreetBeijing1980
    GatesBillXuanwumen 10Beijing1985

    结果

    LastNameFirstNameAddressCityYear
    CarterThomasChangan StreetBeijing1980
    GatesBillXuanwumen 10Beijing1985
引号的使用
  • 文本值

    这是正确的:
    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 运算符显示一条记录。

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

    LastNameFirstNameAddressCity
    AdamsJohnOxford StreetLondon
    BushGeorgeFifth AvenueNew York
    CarterThomasChangan StreetBeijing
    CarterWilliamXuanwumen 10Beijing
and运算符实例
  • 使用 AND 来显示所有姓为 “Carter” 并且名为 “Thomas” 的人:
SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'

结果

LastNameFirstNameAddressCity
CarterThomasChangan StreetBeijing
or运算符实例
  • 使用 OR 来显示所有姓为 “Carter” 或者名为 “Thomas” 的人:

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

    结果

    LastNameFirstNameAddressCity
    CarterThomasChangan StreetBeijing
    CarterWilliamXuanwumen 10Beijing
结合and和or运算符
  • 我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):

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

    结果

    LastNameFirstNameAddressCity
    CarterThomasChangan StreetBeijing
    CarterWilliamXuanwumen 10Beijing

sql order by语句

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

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

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

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

    CompanyOrderNumber
    IBM3532
    W3School2356
    Apple4698
    W3School6953
实例1
  • 以字母顺序显示公司名称:

    SELECT Company, OrderNumber FROM Orders ORDER BY Company
    

    结果

    CompanyOrderNumber
    Apple4698
    IBM3532
    W3School6953
    W3School2356
实例2
  • 以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):

    SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
    

    结果

    CompanyOrderNumber
    Apple4698
    IBM3532
    W3School2356
    W3School6953
实例3
  • 以逆字母顺序显示公司名称:

    SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC
    

    结果

    CompanyOrderNumber
    W3School6953
    W3School2356
    IBM3532
    Apple4698
实例4
  • 以逆字母顺序显示公司名称,并以数字顺序显示顺序号:

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

    结果

    CompanyOrderNumber
    W3School2356
    W3School6953
    IBM3532
    Apple4698

sql insert 语句

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

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

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

    LastNameFirstNameAddressCity
    CarterThomasChangan StreetBeijing
  • sql 语句

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

    结果

    LastNameFirstNameAddressCity
    CarterThomasChangan StreetBeijing
    GatesBillXuanwumen 10Beijing
在指定的列中插入数据
  • persons 表

    LastNameFirstNameAddressCity
    CarterThomasChangan StreetBeijing
    GatesBillXuanwumen 10Beijing
  • sql语句

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

    结果

    LastNameFirstNameAddressCity
    CarterThomasChangan StreetBeijing
    GatesBillXuanwumen 10Beijing
    WilsonChamps-Elysees

sql update语句

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

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

    结果

    LastNameFirstNameAddressCity
    GatesBillXuanwumen 10Beijing
    WilsonFredChamps-Elysees
更新某一行中的若干列
  • 我们会修改地址(address),并添加城市名称(city):

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

    结果

    LastNameFirstNameAddressCity
    GatesBillXuanwumen 10Beijing
    WilsonFredZhongshan 23Nanjing

sql delete语句

delete语句
  • DELETE 语句用于删除表中的行。
语法
DELETE FROM 表名称 WHERE 列名称 =
person表:
LastNameFirstNameAddressCity
GatesBillXuanwumen 10Beijing
WilsonFredZhongshan 23Nanjing
删除某行
  • fred willson 会被删除

    DELETE FROM Person WHERE LastName = 'Wilson' 
    

    结果

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

    DELETE FROM table_name
    

    或者

    DELETE * FROM table_name
    
  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大白菜程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值