SQL概述

SQL概述

  • 结构化查询语言(Structured Query Language,简称SQL)是关系数据库的标准语言

    • 特点:

      1. 综合统一:SQL集数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)的功能于一体

        1. 高度非过程化:用户只需提出“做什么”即可,而不必关心怎么做。

        2. 面向集合的操作方式:操作对象是集合,操作所产生的结果也是集合。

        3. 一种语法多种使用方式:SQL可以直接以命令的方式交互使用,也可以嵌入使用、

        4. 语言简单,易学易用

    • SQL对三级模式结构的支持

      1. 外模式:sql定义的视图

        1. 模式 (概念模式):表结构的定义

        2. 内模式:定义了数据的存储方式,如记录为顺序存储还是B树存储,索引如何存储 还是 HASH方式存储,数据是否压缩等

  • 操作语言

    • 数据定义(create drop alter)

      1. 定义基本表

        create table Student
        (StudenrNum CHAR(8) PRIMARAY KEY,
         StudentName VARCHAR(20) NOT NULL,
         StudentSex CHAR(2) DEFAULT '男',
         StudentDept CHAR(5)
         FOREIGN KEY(StudentDept) REFERRENCES Dept(DeptNum)
         /*表级完整性约束条件,StudentDept为外键,Dept为被参照表*/
        );
      2. 修改基本表

        ALTER TABLE Student 
        ADD COLUNMN StudentPhone CHAR(11);          /*添加新列*/
        ALTER COLUMN StudentDept CHAR(3);           /*修改列*/
        DROP COLUMN StudentPhone;                   /*删除列*/
        DROP CONSTRAINT StudentName;                /*删除完整性约束*/
      3. 删除基本表

        DROP TABLE Sudent
        /*表一旦删除,表中的定义和数据都被删除,在该表上建立的索引、触发器等对象一般也会被删除、有的还会删除在此表上建立的视图*/
      4. 建立索引

        /*为学生表建立索引,名为Index_Student,按学生姓名升序排列,则按所在系降序排列*/
        CREATE UNIQUE INDEX Index_Student ON Student(SudentName,StudentDept DESC);
        /*ASC升序 DESCJ降序 默认升序*/
      5. 删除索引

        DROP INDEX Index_Student;
    • 数据查询(select)

      1. 基本格式

        select [all | distinct ] <目标表达式> from <表名或试图名> where <条件表达式> 
        group by <列名> [having <条件表达式>]
        order by <列名>[asc | desc];
        /*
        distinct:每组重复元素值显示一条(消除重复出现的值);在未指定的情况下,默认为all
        group by 按列名进行分组,该列值相等的元组为一个组
        order by 用于按列名的值进行排序,默认ASC(升序),降序使用DESC
        */
      2. 单表查询

        SELECT StudnetName from Student;/*查询指定列*/ 
        SELECT * from Student /*查询全部列*/
        select count(StudentNum) as '总人数' from Student; /*查询经过计算的值,类似的还有:max、min、avg、sum*/
      3. 查询满足条件的元组,通过where实现,查询条件如下:

        查询条件谓语
        比较=、> 、<、>=、<=、!=、!<、!>、NOT含上述比较运算符的条件表达式
        确定范围between and、not between and
        确定集合in、not in
        字符匹配like 、not like
        空值is null, is not null
        多重条件and 、 or 、not

        注意:like 用来字符匹配,一般格式如下:

        [not] like '<匹配串>'

        其中,匹配串可以是一个完整的字符,也可以含有通配符 '%' 或'_'。

        '%' 代表任意长度(可以是0)的字符串;'_' 任意任意单个字符,当字符用ASCII时,一个汉字用两个 -代替,当字符集为GBK时,一个汉字用一个 - 代替

        例如:查询姓贾的学生:select * from Student where StudentName like '贾%;

      4. order by子句

        /*按照成绩降序排列成绩表Grade中的学生信息*/
        select * from Grade order by StudentGrade DESC;
      5. group by子句

        /*统计每个学生所选课程数*/ 
        select StudentNum,count(StudenNum)as ’所选课程数‘ from Grade group by StudentNum;
      6. 链接查询(多表查询)

        1. 等值连接
        /*查询学生成绩的情况*/
        SELECT S.* ,SC.*
        FROM Student S,SC
        WHERE S.StudentNum = SC.StudentNum;
        
        2. 外连接
        左外连接:LETF OUTER JOIN
        右外连接:RIGHT OUTER JOIN
        自身链接
      7. 嵌套查询

        1.包含in的子查询
        select * from student 
        where Studentdept in 
        (select deptNum from Dept where deptName='软件工程');
        
        2.包含比较运算符的运算
        select StudenNumber,SudentName from Student 
        where StudentDept = 
        (select deptNumber form Dept where DeptName='软件工程');
      8. 使用exists的子查询:不返回任何实际数据,只产生 逻辑真值“ture",或则逻辑假值”false”

    • 数据更新(update、delete、insert)

      1. 插入数据

        insert into Student values('2091496','Nobita'、‘女’);
      2. 插入子查询结果:将子查询的结果嵌入insert语句中,进行批量插入

      3. 修改数据

        update student set StudenName='Doreamon" where StudentNum='2191496';
      4. 删除数据

        DELETE FROM Student where StudentSex='女';

         

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值