说明:以下所有例题来源于MOOC网站

https://www.icourse163.org/course/HIT-1001516002

但是所有例题的代码是博主自己码的。本博客最主要还是为了自己日后复习,因此是按照自己的逻辑编写博客,所以阅读起来有点乱应该属于正常。

其中注意的点是:
①在编写SQL语言的时候建议使用大写字母,虽然小写字母编码同样可以运行但是当遇到长语句的时候就会报错,因此为了避免这类情况,尽量开始学习的时候就是用大写字母进行编码。
②本博客所有的查询操作是在Navicat 15 for MySQL软件上查看!请自行百度这是个什么东西,如有需要可私信或者评论。
③本博客受众面是已经学习过关系模型以及关系运算,想要进行SQL语言实操的同学。如果数据库课程都没有上过,可以关闭本博客了,因为你看了也看不懂。

SQL语言基本操作实现

  • 创建库以及展示库
  • 连接数据库:
  • 创建表
  • 为表赋值以及浏览表
    • 重点:
  • 检索语句:
    • 简单示例
    • 检索条件书写以及结果唯一性问题:
  • 结果排序问题
  • 模糊查询问题
  • 利用SQL语言进行多表联合查询
    • -连接之等值连接
    • 表重名处理and-连接之不等值连接
  • 利用SQL语言进行增-删-改
    • 元组新增Insert

创建库以及展示库

create database database 数据库名;
①创建库代码:

CREATE DATABASE TEST;

运行结果:

重点:之后的代码运行之后出现Query OK,均表示运行成功。

②展示库代码:

 SHOW DATABASES;

运行结果:

可以看到刚刚创建的库test已经创建成功

连接数据库:

在进行数据库操作时,需要连接上你对应操作的库。
语句:

USE TEST;//后面的TEST是库名。

运行结果:

创建表

create table简单语法形式:
Create table 表名( 列名 数据类型 [Primary key Primary key |Unique |Unique] [Not null]
[, 列名 数据类型 [Not null] , … ]) ;

CREATE TABLE Student(Snumber CHAR(8) NOT NULL,Sname CHAR(10));

其中:
①:CHAR(8):是表示属性S#(即Snumber,其中#一般表示number)是字符型,占位8;
②:NOT NULL:表示是否可以为null,这里是不可以。
运行结果:

此处可通过SELECT*FROM Student;自行查看。

为表赋值以及浏览表

语句:

INSERT INTO Student(Snumber,Sname)VALUE(98030102,"李四");//方法一
INSERT INTO Student()VALUE(98030101,"张三");//方法二
INSERT INTO Student(Snumber)VALUE(98030103);//方法三

方法一和方法二效果一样。
方法三是指定属性赋值。
其中表后面的括号内可以不写任何属性,默认添加全部属性。
运行过程:

在表中显示为:
此处涉及对表的查看操作:

SELECT*FROM Student;


重点:

如果想要继续看下去并且进行实操,请自行完成以下表格:





检索语句:

本小节之后代码是在软件Navicat 15 for MySQL上完成。所以界面有所不同。

语句格式:
SELECT 列名 FROM 表名 [WHERE 检索条件]//其中[]中的可以省略;

简单示例

例如:
①检索学生表中所有学生的信息
可以使用:

SELECT Snumber,Sname,Ssex,Sage,Dnumber,Sclass FROM student;
或者:用*代替所有属性
SELECT * FROM student;

运行结果:

②:检索学生表中所有学生的姓名及年龄

SELECT Sage FROM student;

运行结果:

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

SELECT Sage,Sname FROM student WHERE Sage <= 19;

运行结果:

检索条件书写以及结果唯一性问题:

实例:
①检索教师表中所有工资少于1500元或者工资大于2000元 并且是03系的教师姓名?

SELECT Tname FROM teacher WHERE (Salary < 1500 OR Salary > 2000 ) AND Dnumber = "03";
ps:此处注意括号的使用,因为条件语句是有优先级的。

运行结果:

②求或者学过001号课程, 或者学过002号课程的学生的学号

SELECT Snumber FROM sc WHERE Cnumber = "001" OR Cnumber = "002";
SELECT DISTINCT Snumber FROM sc WHERE Cnumber = "001" OR Cnumber = "002";

代码的不同如图所示:


③***求既学过001号课程, 又学过002号课程的学生的学号?***

SELECT S1.Snumber FROM sc AS S1, sc AS S2 WHERE S1.Cnumber = "001" AND S2.Cnumber = "002";
SELECT DISTINCT S1.Snumber FROM sc AS S1, sc AS S2 WHERE S1.Cnumber = "001" AND S2.Cnumber = "002";
PS:第一行代码存在多个重复值,大家学过关系运算应该了解其产生原因。若与不懂请查阅笛卡尔积相关资料。
正确的应该是第二行代码,使用DISTINCT方法过滤重复值.重复元组被DISTINCT过滤掉,只保留一份


法一

法二

结果排序问题

Select语句中结果排序是通过增加order by子句实现的:
order by order by 列名 [asc | desc]
意义为检索结果按指定列名进行排序,若后跟asc或省略,则为升序;若
后跟desc, 则为降序。

实例:
①按学号由小到大(升序)的顺序显示出所有学生的学号及姓名

SELECT Snumber,Sname FROM student ORDER BY Snumber;

结果:

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

SELECT Snumber,Score FROM sc WHERE Score > 80 ORDER BY Score DESC;
为了方便显示结果,我顺便输出了分数。

结果:

模糊查询问题

实例:
①检索所有姓张的学生学号及姓名

SELECT Sname,Snumber FROM student WHERE Sname LIKE "张%";

结果:
②检索名字为张某某的所有同学姓名

SELECT Sname,Snumber FROM student WHERE Sname LIKE "张__";
注意,"张__"有两个下划线

结果:null

③检索名字不姓张的所有同学姓名

SELECT Sname,Snumber FROM student WHERE Sname NOT LIKE "张%";

利用SQL语言进行多表联合查询

多表联合查询:
多表联合检索可以通过连接运算来完成,而连接运算又可以通过广义笛卡尔积后再进行选择运算来实现。
Select Select 列名 [ [, 列名] … ] From 表名1, 表名2, … Where Where 检索条件 ;

-连接之等值连接

实例:
①:按“001”号课成绩由高到低顺序显示所有学生的姓名

SELECT Sname FROM student,sc WHERE student.Snumber = sc.Snumber AND sc.Cnumber = "001" ORDER BY Score DESC;
多表连接时,如两个表的属性名相同,则需采用表名. 属性名方式来限定该属性是属于哪一个表

②按‘数据库’课成绩由高到低顺序显示所有同学姓名(三表连接)

SELECT Sname FROM student,sc,course WHERE course.Cname = "数据库" AND student.Snumber = sc.Snumber AND sc.Cnumber = course.Cnumber ORDER BY sc.Score DESC;

表重名处理and-连接之不等值连接

重名之处理
连接运算涉及到重名的问题,如两个表中的属性重名,连接的两个表重名(同一表的连接)等,因此需要使用别名以便区分
select中采用别名的方式:
Select Select 列名 as 列别名 [ [, 列名 as 列别名] … ]
From 表名1 as 表别名1, 表名2 as 表别名2, …
Where Where 检索条件 ;
上述定义中的as 可以省略
当定义了别名后,在检索条件中可以使用别名来限定属性

实例
①求有薪水差额的任意两位教师

SELECT T1.Tname AS teacher1,T2.Tname AS teacher2 FROM teacher AS T1,teacher AS T2 WHERE T1.Salary > T2.Salary;
注意:select之后的列别名,即结果显示的列名称!

②求年龄有差异的任意两位同学的姓名

SELECT s1.Sname student1,s2.Sname student2 FROM student s1, student s2 WHERE s1.Sname > s2.Sname;

利用SQL语言进行增-删-改

元组新增Insert

SQL语言入门详细教程(更新中)相关推荐

  1. oracle数据库sql培训,Oracle数据库SQL语言实战培训教程(全面、详细、案例、精讲)套餐...

    风哥oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 套餐介绍: 风哥Oracle数据库SQL语言实战培训教程(案例.精讲)套餐,DBA必备技能. 内容: SQL语言基础入 ...

  2. PostgreSQL修炼之道之SQL语言入门(三)

    目录 第三章 SQL语言入门(一) 3.1 SQL语句语法简介 3.1.1语句的分类 3.1.2 语法结构 3.2 DDL语句 3.2.2 删除表语句 3.3 DML语句 3.3.1 插入语句 3.3 ...

  3. spring入门详细教程(五)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  4. Spring入门详细教程(四)

    前言 本篇紧接着spring入门详细教程(三),建议阅读本篇前,先阅读第一篇,第二篇以及第三篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/ ...

  5. Pandas入门详细教程

    作者:luanhz 来源:小数志 导读 本文主要是对pandas进行入门详细介绍,通过本文你将系统性了解pandas为何会有数据分析界"瑞士军刀"的盛誉. 行文二级目录 01 关于 ...

  6. python数据科学系列:pandas入门详细教程

    导读 前2篇分别系统性介绍了numpy和matplotlib的入门基本知识,今天本文自然是要对pandas进行入门详细介绍,通过本文你将系统性了解pandas为何会有数据分析界"瑞士军刀&q ...

  7. Spring入门详细教程(三)

    前言 本篇紧接着spring入门详细教程(二),建议阅读本篇前,先阅读第一篇和第二篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/101 ...

  8. Spring入门详细教程(二)

    前言 本篇紧接着spring入门详细教程(一),建议阅读本篇前,先阅读第一篇.链接如下: Spring入门详细教程(一) https://www.cnblogs.com/jichi/p/1016553 ...

  9. ThinkJS框架入门详细教程(二)新手入门项目

    一.准备工作 参考前一篇:ThinkJS框架入门详细教程(一)开发环境 安装thinkJS命令 npm install -g think-cli 监测是否安装成功 thinkjs -v 二.创建项目 ...

  10. PostgreSQL修炼之道之SQL语言入门(四)

    目录 第三章 SQL语言入门(二) 3.4 查询语句 3.4.1 单表查询语句 3.4.2 过滤条件的查询 3.5 其他SQL语句 3.5.1 INSERT INTO... SELECT语句 3.5. ...

最新文章

  1. android单个页面切换_MTransition是一个Android上的页面切换动画库
  2. [Skr-Shop]购物车之架构设计
  3. 8-12-COMPETITION
  4. 关于Tomcat双击startup.bat文件一闪而过问题
  5. appium java 点击事件_java – 无法使用Appium在Android中的权限对话框中单击“允许”按钮...
  6. 并发编程的数据竞争问题以及解决之道
  7. CP三次握手和四次分手--转
  8. 获取Linux服务器信息脚本
  9. Ubuntu上NFS的代理设置安装配置
  10. STC学习:扫描频率可变的电子钟
  11. 什么是informatic?
  12. 计算机专业的八字,生辰八字五行计算器
  13. 百万富翁 混淆电路
  14. 纯html加css象棋棋盘,纯CSS实现的国际象棋棋盘
  15. NLP系列(10)_词向量之图解Word2vec
  16. 设置让我们为Express加密
  17. 以远程计算机上的用户身份访问Com+应用
  18. STM32学习总结(一)——时钟RCC
  19. 今天,传说中的老方给我们班上课了
  20. 绘制圆形,方法一(Canvas,drawOval)

热门文章

  1. 如何读群晖硬盘_群晖nas使用教程6:将USB设备识别为本地SATA口硬盘 - 群晖教程...
  2. 【python基础学习必备小手册(适合新手)详细教程】
  3. Java的主流加密方式——简介
  4. 中文文本分析工具总结
  5. Linux系统批量压缩图片工具
  6. 贪婪算法matlab程序,matlab贪婪算法
  7. [Windows] Visio 图形怎么旋转到指定角度?
  8. 新版Cadence打开PSpice8.0工程文件
  9. 约瑟夫环C语言链表实现
  10. 手机电脑自适应导航源码php,自适应各终端懒人网址导航源码 v2.4