功能概述

  • DDL,数据库定义语言,创建,修改,删除数据库,表,视图,索引,约束条件等
  • DML,数据库操纵语言,对数据库中的数据进行增,删,改,查
  • DCL,数据库定义语言,对数据库总数据的访问设置权限

SQL语言是集DDL,DML,DCL为一体的数据库语言,学好数据库首先要掌握下面9个引导词

  • DDL语言引导词:CREATE(创建),ALTER(修改),DROP(撤销)
  • DML语言引导词:INSERT(增),DELETE(删),UPDATE(改),SELECT(查)
  • DCL语言引导词:GRANT(授权),REVOKE(调用)

创建表

下面来创建多个表

学生表:学号(sn),姓名(sname),性别(sex),年龄(sage), 所属系(dn),班级(sclass)

create table student( sn char(8), sname char(10), ssex char(2), sage integer, dn char(2), sclass char(6)) engine=MYISAM character set utf8;

INSERT INTO student (sn,  sname,  ssex,  sage,  dn,  sclass) VALUES ('98030101',    '张三',    '男',    '20',    '03',    '980301'  ) ;

院系表:系别(dn),系名(dname),系主任(dean)

create table dept(dn char(2), dname char(10), dean char(10)) engine=MYISAM character set utf8;

INSERT INTO dept(dn, dname, dean) VALUES("01", "机电", "李三");

课程表:课程号(cn),课程名(cname),教师编号(tn),学时(chours),学分(credit)

create table course(cn char(3), cname char(12), tn char(3), chours integer, credit float(1)) engine=MYISAM character set utf8;

INSERT INTO course(cn, cname, tn, chours, credit) VALUES("001", "数据库", "001", 40, 6);

教师表:教师编号(tn),教师名(tname),所属院系(dn),工资(salary)

create table teacher(tn char(3), tname char(10), dn char(2), salary float(2)) engine=MYISAM character set utf8;

INSERT INTO teacher(tn, tname, dn, salary) VALUES ("001", "赵三", "01", 1200.00);

选课表:学号(sn),课程号(cn),成绩(score)

create table sc(sn char(8), cn char(3), score float(1)) engine=MYISAM character set utf8;

INSERT INTO sc(sn, cn, score) VALUES ("980230101", "001", 92);

下面是创建后完整的表

student

dept

teacher

course

sc

简单查询操作

  • 检索学生表中所有年龄小于等于19岁的学生姓名和年龄

SELECT sname, sage FROM student WHERE sage<=19;

  • 检索教师表中所有工资 少于1500元或者工资大于2000元,并且是03系的教师姓名(注意括号)

SELECT tname
FROM teacher
WHERE (salary<1500 OR salary>2000) AND dn="03";

  • 求既学过001课程又学过002课程的同学学号(错误版)

SELECT sn
FROM sc
WHERE cn="001" AND cn="002";

上面的语句是错误的,因为WHERE条件是对每条记录进行检查,在一条记录中cn不可能同时为001又为002

  • 在选课表中查询成绩大于80分的学号(结果重复版)

SELECT sn
FROM sc
WHERE score>80;

  • 在选课表中查询成绩大于80分的学号(结果未重复)

SELECT DISTINCT sn
FROM sc
WHERE score>80;

  • 按学号由小到大的顺序显示出所有学生的学号和姓名

SELECT sn,sname
FROM student
ORDER BY sn ASC;

ORDER是对查询后的结果进行排序

  • 检索002号课大于80分的所有同学学号并按成绩由高到低顺序显示

SELECT sn
FROM sc
WHERE score>80 AND cn="002"
ORDER BY score DESC;

模糊查询

模糊查询是当我们不能精确查询条件时,可以使用的。比如我们想找一个人,但只知道这个人姓张,这时候我们可以通过模糊查询来找出姓张的,然后做具体分析。

  • 检索所有姓张的同学

SELECT sname
FROM student
WHERE sname LIKE "张%";

%号表示匹配零个或多个字符

  • 检索名为张某某的同学姓名

SELECT sname
FROM student
WHERE sname LIKE "张__";

注意张后面是两个下划线,一个下划线代表一个字符。

  • 检索不姓张的同学姓名

SELECT sname
FROM student
WHERE sname NOT LIKE "张%";

多表联合查询

多表联合查询涉及到表的连接操作,通过通过将多个表连成一张大表,然后做查询操作。前面我们在关系代数中提到表的连接可以通过笛卡尔积+选择来实现,而SQL中也是这样处理的。

  • 按001号课成绩由高到低顺序显示所有学生的姓名

SELECT DISTINCT sname
FROM student,sc
WHERE student.sn=sc.sn AND sc.cn="001"
ORDER BY score DESC;

先将student和sc表进行笛卡尔积运算形成一张大表,然后执行WHERE条件判断进行选择,接着执行排序操作,最后将需要的属性值投影出来。

  • 按数据库课成绩从高到底显示同学姓名

SELECT DISTINCT sname
FROM student,sc,course
WHERE student.sn=sc.sn AND sc.cn=course.cn AND course.cname="数据库"
ORDER BY score DESC;

重名操作

当表自连接时需要对表进行重名操作,不仅对表起别名而且需要对投影的列也要进行别名处理。

as是可以省略的

  • 查询薪水有差额的老师姓名

SELECT T1.tname AS teacher1,T2.tname AS teacher2
FROM teacher AS T1,teacher AS T2
WHERE T1.salary > T2.salary;

注意:查询后列名发生了变化

  • 查询既学过001课程又学过002课程的学生学号

SELECT sc1.sn
FROM sc AS sc1, sc AS sc2
WHERE sc1.cn="001" AND sc2.cn="002" AND sc1.sn=sc2.sn;

我们可以看到上面的操作中未对属性名进行别名处理,是因为查询的结果集中属性名不冲突。

插入操作

简单的插入操作我们在创建表的时候已经介绍过了,下面介绍一下更为复杂操作。

下图中是将从student表中找到的数据直接插入到st(sn,sname)当中去。由此可看出,insert语句后面是可以跟子查询的。

删除操作

  • 删除98030101号同学所选的课程

DELETE FROM sc WHERE sn="98030101";

更新操作

语法格式

  • 将所有教师工资上调5%

UPDATE teacher SET salary=salary*1.05;

修改表的定义

SQL语言概述的更多相关文章

  1. 第一讲:SQL语言概述

    SQL语言是集DDL.DML和DCL于一体的数据库语言. SQL语言之DDL:定义数据库 SQL语言之DML:操纵数据库 一.功能概述 SQL语言主要由以下9个单词引导的操作语句来构成,但每一条语句都 ...

  2. SQL入门(4): 嵌入式SQL语言

    本节讲述内容: 1.嵌入式SQL 语言概述 2.变量声明与数据库连接 3.数据集与游标 4.可滚动游标与数据库的增删改 5.状态捕捉以及错误处理机制 (一)嵌入式SQL语言 之前我们所学的都是交互式S ...

  3. Oracle学习笔记之四,SQL语言入门

    1. SQL语言概述 1.1 SQL语言特点 集合性,SQL可以的高层的数据结构上进行工作,工作时不是单条地处理记录,而对数据进行成组的处理. 统一性,操作任务主要包括:查询数据:插入.修改和删除数据 ...

  4. 数据库系统学习(六)-SQL语言基本操作

    第六讲 SQL语言概述 基本命名操作 关系代数是集合的思想 关系演算是逻辑的思想(数学公式) SQL-86,SQL-89,SQL-92,SQL-99,SQL-2003,2008...发展过程标准 SQ ...

  5. 数据库SQL语言从入门到精通--Part 1--SQL语言概述

    数据库从入门到精通合集(超详细,学习数据库必看) 一.SQL概述 关系数据库标准语言SQL(结构化查询语言). 结构化查询语言(Structured Query Language)简称SQL,是一种特 ...

  6. SQL语言 之 SQL概述

    SQL(Structured Query Language)语言,自1987年6月被国际标准化组织采纳为国际标准,SQL语言成为关系数据库的标准语言. SQL语言是关系数据库操作的基础语言,将数据查询 ...

  7. [SQL]SQL语言入门级教材_跟我学SQL(六)

    跟我学SQL:(一)数据查询 且不说你是否正在从事编程方面的工作或者不打算学习SQL,可事实上几乎每一位开发者最终都会遭遇它.你多半还用不着负责创建和维持某个,但你怎么着也该知道以下的一些有关的SQL ...

  8. [编程笔记]第一章 C语言概述

    //C语言学习笔记 第一讲 C语言概述 第二讲 基本编程知识 第三讲 运算符和表达式 第四讲 流程控制 第五讲 函数 第六讲 数组 第七讲 指针 第八讲 变量的作用域和存储方式 第九讲 拓展类型 第十 ...

  9. Impala SQL 语言元素(翻译)[转载]

    原 Impala SQL 语言元素(翻译) 本文来源于http://my.oschina.net/weiqingbin/blog/189413#OSC_h2_2 摘要 http://www.cloud ...

随机推荐

  1. 烂泥:puppet添加带密码的用户

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前一篇文章,我们介绍了有关puppet3.7的安装与配置,这篇文章我们再来介绍下如何利用puppet添加带密码的用户. 要通过puppet添加带密码的用 ...

  2. MSSQL OPTION语句详解

    一些联合表查询语句,这些表里都建立有索引.在没有加 option ( force order ) 前,整个查询费时40多秒,但 单独表 查询基本不到1秒.查看查询计划后发现查询过程是从table n开 ...

  3. C# FTP 命令无法获取ServerU目录列表问题

    第一步:  使用C# 的Ftp功能时,发现了一个很奇怪的现象,获取目录列表的命令,在SeverU上面直接返回错误,而在windows自带的FTP上则正常,经过反复试验,终于发现,原来是ServerU默 ...

  4. 大话设计模式C++版——表驱动法改造简单工厂

    上回<大话设计模式C++版——简单工厂模式>中指出了简单工厂模式的缺陷,即违背了开发—封闭原则,其主要原因是由于switch的判断结构的使用,使修改或添加新的对象时需要改动简单工厂类的代码 ...

  5. 不就是抽个血吗,至于么-jQuery,Linux完结篇

    hi 趁着周一去抽血化验,真开心...下午报告才出来,不过早上来了就开始各种晕菜,叫错名字,说错话.....至于么.. 还有在教研室的30天就可以肥家了,凯森凯森.今天不想干活(哪天想干过我就问问), ...

  6. MMORPG大型游戏设计与开发(客户端架构 part12 of vegine)

    在游戏中的交互过程中输入是一个必不可少的过程,比如登陆的时候需要用户输入用户名与密码,就算是单机游戏很多时候也要求用户输入一个用户名作为存档的依据.网络游戏中没有了输入,只用鼠标来交互是不切实际的,因 ...

  7. RSA Study

    These days I study the RSA Algorithm. It is a little complex, but not very. Also, my study has not f ...

  8. Java开发之Servlet之间的跳转

    一.转向(Forward) 1.要点说明 转向是通过RequestDispatcher对象的forward()方法来实现的.RequestDispatcher可以通过HttpServletReques ...

  9. jvm虚拟机性能监控与故障处理工具

    java开发人员肯定知道jdk的bin目录中有java.exe javac.exe这两个命令行工具,但并非所有程序员都了解过jdk的bin目录之中其他命令行的作用.jdk的工具,体积都比较小,这些命令 ...

  10. android 调用系统的音乐和视频播放器

    package com.eboy.testsystemaudiovideo; import android.app.Activity;import android.content.Intent;imp ...