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

这是我的可可帬,后面是893两头是241前面是279,欢送大家!

  • 后果集相似这样:

    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