暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SQL基础培训--SQL语言基本概念及简单查询

小西瓜的技术之路 2017-10-23
734

前言:

这一节课,我们来先来了解一下什么是SQL语言,然后通过一些简单的操作实例及概念讲解,帮助大家理解和消化这部分内容。

什么是SQL语句,及简单的写法

sql 语句是对数据库进行操作的一种语言。结构化查询语言(Structured Query Language)简称SQL,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

SQL的四种语言

  • DDL(Data Definition Language)数据库定义语言
    DDL是SQL语言的四大功能之一。
    用于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数    据的完整性、安全控制等约束。
    简单点来说,DDL语句就是用与定义和管理数据库中的对象。DDL语句不需要commit
    ,也不能rollback

    常见的DDL命令有:
    CREATE

    ALTER

    DROP

    TRUNCATE

    COMMENT

    RENAME

  • DML(Data Manipulation Language)数据操纵语言
    由DBMS提供,用于让用户或程序员使用,实现对数据库中数据的操作。
    简单来说,DML语言能够使用户能够查询数据库以及操作已有数据库中的数据。
    常见的DML命令有:
    SELECT

    INSERT

    UPDATE

    DELETE

  • DCL(Data Control Language)数据库控制语言
    DCL语言主要负责授权和角色控制。
    常见的DCL命令有:
    GRANT

    REVOKE

  • TCL(Transaction Control Language)事务控制语言
    顾名思义,TCL语言主要负责事务的控制。
    常见的TCL命令有:
    SAVEPOINT

    COMMIT

    ROLLBACK

    学习SQL语句前要知道的一些内容

  • 术语相关:
    前条件:指数据库在缓存(或硬盘)上获取数据的筛选记录的条件。
    后条件:指数据库在结果集(执行内存)上进行筛选记录的条件。
    子句:根据SQL语句语法中的动词,将整句SQL语句拆分成几部分,每部分叫做该动词的子句。
    例如:
    select * from t1 where id = 1

    select *
    部分叫做select子句

    from t1
    部分叫做from子句

    where id = 1
    部分叫做where子句

  • 常用的查询条件

对表操作,先要有表

我们要知道,今天的课,主要讲的内容,都是跟数据表有关的,那么我们首先要先建立一张表,往这张表里写一些数据。

  • Create table
    语句

    语法:
     create table table_name  (column_name1 column_type1[, column_name2 column_type2[, …]] )
    说明:
    table_name
    表名
    column_name1
    , column_name2
    , … 字段名
    column_type1
    , column_type2
    , … 字段类型
    一个简单的建表语句:
     create table TEST_LIJIAN
     (id VARCHAR2(100)) tablespace JLLT_DM
       pctfree 10
       initrans 1
       maxtrans 255
       storage
       (
         initial 64K     next 1M
         minextents 1
         maxextents unlimited
       );
    我手工通过for update的方式,往这张表里插入了几条数据:

我们的重点是DML语句

  • DML里的老大 —- SELECT
    select语句,有过经验的同事应该不陌生,可以说是很熟悉,日常应用的最多的也是它。那么它的语法是什么呢?
    语法:

     Select [ all | distinct ] <目标列表达式> 
     From <表名> | <视图名> [ ,<表名> | <视图名> ] 
     [ Where <条件表达式> ]
     [ Group by <列名[ , 列名 ]> [ having <条件表达式> ] ]
     [ order by <列名[ , 列名]> [ ASC | DESC ] ]

    注:
    Group by
    的分组字段根据字段前后顺序分组

    Order by
    排序字段根据字段前后顺序排序(后一个在前一个基础上排序)

    最简单的select语句:
    select * from dual;

  • DML里最危险的人 — DELETE
    为什么说
    delete
    是最危险的呢,因为实际操作的时候,误删数据是常有的事儿,很多现网数据库都遇到过这种情况,最后不得已翻出备份来进行恢复。那么它的语法是什么呢?
    语法:

     delete from table_name where column_name1 = column_value1 [ and | or             column_name2 = column_value2[ and | or …]]

    说明:
    table_name
    表名
    column_name1
    删除记录依据的字段名
    column_value1
    删除记录依据的字段值
    and
    表示与(同时满足条件的记录)
    or
    表示或(部分满足条件的记录)
    最简单的删除一条数据的命令:
    delete from test_lijian where id = 1;
           

  • 不够就加,insert语句的本领
    一张数据表中,数据不可能是永远都是固定的,如果想再往数据表里增加数据,那就是Insert语句的功能了。
    语法:
     insert into table_name (column_name1[, column_name2[, …]])  values (column_value1[, column_value2[, …]] )
    说明:
    table_name
    表名
    column_name1
    , column_name2
    ,
    字段名
    column_value1
    , column_value2
    ,
    字段存储的值
    最简单的一条insert语句:
    insert into test_lijian (id) values (1);
  • 知错就改,谦虚的update
    实际生产中,我们有的时候在一张表的数据会有变化,那这时候
    update
    的作用就展现出来了,它可以完成已有数据的转换工作。
    语法:
    语法:

     update table_name set column_name1 = column_value1 [, column_name2 =     column_value2[, …]] where column_name3 = column_value3[ and | or column_name4 = column_value4[ and | or …]]

    说明:
    table_name
    表名
    column_name1
    , column_name2
    , … 字段名
    column_value1, column_value2
    , … 要修改成的字段值
    column_name3, column_name4
    , … 修改记录依据的字段名
    column_value3
    , column_value4
    , … 修改记录依据的字段值
    and
    表示与(同时满足条件的记录)
    or
    表示或(部分满足条件的记录)

  • 最简单的一条update语句:
    update test_lijian set id = 2 where id = 1;

一些select语句和运算符结合的相关例子

还记得最开始说的那些运算符吗?我们将它们结合sql语句来一起看看如何应用它们。

  • 我们给出一张示例表

  • 查询现存数量少于5000的动物信息
    select * from animal where number < 5000;

    结果为:

  • 查询现存数量在10000~100000之间的动物信息
    select * from animal where number between 10000 and 100000;

    结果为:

  • 查询产地在中国、孟加拉和阿富汗的动物信息
    sql语句:
    select * from animal where address in (‘中国’,‘孟加拉’,‘阿富汗’);

    结果为:

  • 查询名称中包含‘熊’的动物信息
    select * from animal where name like ‘%熊%’;

    结果为:

  • 查询名称不为空的动物信息
    select * from animal where name is not null;
  • 查询名称包含熊并且数量大于10000的动物信息
    select * from animal where name like‘%熊%’and number > 10000;

除了select,我们还要掌握简单的几个函数

  • COUNT函数 — 求总数
  • SUM函数 —求和
  • AVG函数 —求平均
  • MAX函数 —求最大值
  • MIN函数 —求最小值

我们用几个不同的例子来看一下:
select count(*) from animal where address = ‘中国’;

select sum(number) from animal where kind = ‘熊科’;

select avg(number) from animal where kind = ‘象科’;

select max (number) from animal;

select min (number) from animal;

查询条件的等价关系

  • 先看一张表

  • 如下的查询语句,结果都是一致的:

     Select * from A where A.ID < 3; Select * from A where A.ID between 1 and 2; Select * from A where A.ID in (1,2); Select * from A where A.ID not like '3%'; Select * from A where A.ID = 1 or A.ID = 2;

文章转载自小西瓜的技术之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论