目录

SQL 语句

truncate 语句 不属于DML语句

1>作用 截断名

2>语法: truncate table 表名

3>和 delete 语句的区别

对于自增长字段,使用 truncate语句表截断后,值恢复初始值

truncate 语句不能回滚

select 语句

select语句概述

select 字段列表  from 数据源 [ where 条件表达式] [group by 分组字段] [ having 条件表达式]

[order by 排序字段 {[asc] |desc}]

使用select 子句指定字段列表

命名别名

字段或 表达式 [ as ] 别名

select version() as 版本号 ,now( ) 服务器当前时间;

基本查询语句

特殊的关键字

distinct 去掉重复的行

select distinct 字段列表 from 表名;

使用 limit 限制显示行数

分页查询

select 字段列表 from 表名  limit [ start , ] length;

多表查询

多表查询的类型

内连接 : 符合关联条件的数据行被检索出来,不符合关联条件的被过滤掉

外连接: 外连接的结果集 = 内连接的结果集 + 匹配不上的数据行

内连接

select 字符安列表 from 表1 [ inner ] join 表2 on 关联条件;

表 的别名

表名  [as]  别名

给 表一旦命名别名,在该语句中 就只能 使用别名 ,原表名就失效了

三表内连接

select 字段列表

from 表1 [ inner ] join 表2 on 关联条件1 [ inner ] join 表3 on 关联条件2;

外连接

左外连接 :

左外连接结果集 = 内连接的结果集 + 左表中匹配不上的数据

select 字段列表

from 左表 left [ outer ] join 右表 on 关联条件;

右外连接 :

右外连接结果集 = 内连接的结果集 + 右表中匹配不上的数据

select 字段列表

from 左表 right [ outer ] join 右表 on 关联条件;

如果想在结果集中显示两张表的所有内容

全外连接--- MySQL 不支持语法

全外连接结果集 = 内连接的结果集 + 两表中匹配不上的数据

select 字段列表

from 左表 full [ outer ] join 右表 on 关联条件;

MySQL 支持语法 union 语句 union all 语句

作用:

区别:

union

union all


SQL 语句

truncate 截断

truncate 语句 不属于DML语句

1>作用 截断名

2>语法: truncate table 表名

3>和 delete 语句的区别

  • truncate 语句不能用于主表(即使从表中没有数据
  • truncate table student;#//从表 choose中没有数据
  • delete table student; #// 正确

对于自增长字段,使用 truncate语句表截断后,值恢复初始值

insert into exam values(null,90); stu_no 8truncate table exam;insert into exam values(null,90); stu_no 1

truncate 语句不能回滚

select 语句

select语句概述

语法

select 字段列表 from 数据源 [ where 条件表达式] [group by 分组字段] [ having 条件表达式] [order by 排序字段 {[asc] |desc}]

其中

  • 字段列表: 制定检索字段
  • 数据源: 检索的表或视图
  • where 子句: 制定数据行的过滤条件
  • group by 子句: 根据分组字段 ,把数据行分成了若干个组,并进行汇总统计
  • having 子句: 对分组后的数据进行筛选
  • order by 子句: 对结果集进行排序,默认的是升序

使用select 子句指定字段列表

字段列表的指定方式

  • * : 代表数据源中的全部字段
  • 字段列表 : 用逗号隔开的字段列表,制定需要检索的若干个字段
  • 表名.* : 在多表查询时,指定某个表中的全部字段
  • 表名.字段 : 在多表查询时,制定某个表中的某个字段
  • 表达式 : 表达式中 可以包含算术运算,函数等

实例

检索MySQL 的版本号 .服务器时间

select version(),now();

命名别名

字段或 表达式 [ as ] 别名

select version() as 版本号 ,now() 服务器当前时间;

基本查询语句

语法:

select 字段列表 from 表名;

实例:

列出表中的所有字段

SELECT * FROM student;

列出表中的部分字段

select student_no,student_name,student_contact from student;

字段去命名别名

select student_no as 学号,student_name 姓名,student_contact 联系方式 from student;

使用表达式

select stu_no 学号,score 卷面成绩,score*0.7+30 综合成绩 from exam;

特殊的关键字

distinct 去掉重复的行

语法:

select distinct 字段列表 from 表名;

示例:

select class_no from student;

单列排序

select distinct class_no from student;

多列排序

use information schema;show tables; --显示当前数据库中所有表的名字
desc tables; -- 查看表tables的表结构
select table schema 数据库名,table name 表名,table type 表类型from infomation schea table;
select distinct table schema数据库名from information schema . tables;
select distinct table_ type from information schema. tables;
select distinct table_ schema 数据库名,table_ type 表的类型
information schema . tables;

使用 limit 限制显示行数

分页查询

语法:

select 字段列表 from 表名  limit [ start , ] length;

其中

start : 表示从第几行开始检索,缺省时为0, 表示为第一行

length : 表示要检索多少行

示例

列出 information_schema.tables 表中的前10行 显示 table_schema,table_name;

select table_schema 数据库名,table_name 表名 from information_schema.tables limit 10;

练习: 每页显示 10行,列出 tables表中的第7页

select table_schema 数据库名,table_name 表名 from information_schema.tables limit 60,10;

多表查询

需求: 列出学生及其所在班级的信息,包括学号,姓名和班级名称

学号,姓名: student

班级名称: classes

关联字段: student.class_no,classes.class_no,

关联条件: student.class_no=classes.class_no,

多表查询的类型

内连接 : 符合关联条件的数据行被检索出来,不符合关联条件的被过滤掉

外连接: 外连接的结果集 = 内连接的结果集 + 匹配不上的数据行

内连接

语法

select 字符安列表 from 表1 [ inner ] join 表2 on 关联条件;

需求: 列出学生及其所在班级的信息,包括学号,姓名和班级名称

学号,姓名: student

班级名称: classes

关联字段: student.class_no,classes.class_no,

关联条件: student.class_no=classes.class_no;

select student.student_no,student.student_name,classes.class_no from student join classes on student.class_no=classes.class_no;

向学生表中插入一行数据 没有班级

insert into student values('2018006','小明','20000000',null);

班级表中也插入一行数据

insert into classes(null,'2018机械自动化2班','机电工程');

内连接匹配不上数据不会显示

select student.student_no 学号,student.student_name 姓名,classes.class_no 班级名称 from student join classes on student.class_no=classes.class_no;

表 的别名

表名  [as]  别名

select s.student_no 学号,s.student_name 姓名,c.class_no 班级名称from student s join classes c on s.class_no=c.class_no;

错误演示

表一旦命名别名,在该语句中 就只能 使用别名 ,原表名就失效了

select student.student_no 学号,s.student_name 姓名,c.class_no 班级名称 from student s join classes c on s.class_no=c.class_no;

如果连接的多张表中,没有重名的字段,可以省略 字段前的表名别名的修饰 缺点 会 降低SQL 语句的查询效率

select student no 学号,student name 姓名,class name 班级 from student s join classes c on s.class_no=c.class_no;

三表内连接

向选课表choose 中 插入测试数据

student_no course_no score( ) choose_time

SQL 语句如下

insert into choose values( ... );

语法

select 字段列表

from 表1 [ inner ] join 表2 on 关联条件1 [ inner ] join 表3 on 关联条件2;

示例;

select  s.student_on 学号,s.student_name 姓名, cs.course_name 课程 ,ch.score 成绩
​    from student s join choose ch on s.student_no = ch.student_on join course cs on cs.course_on = ch.course_on;

练习:

列出教师及其所授课程的信息,包括教师的工号,姓名,课程名称,上限人数

select t.teacher_on 教师工号,t.teacher_name 姓名,c.course_name 课程,c.up_limit 人数from teacher t join course c on t.teacher_on=c.teacher_on;

教师的工号,姓名,课程名称,和选修该课程的学生的学号

select t.teacher_on 教师工号,t.teacher_name 姓名,c.course_name 课程,c.up_limit 人数from teacher t join course c on t.teacher_on=c.teacher_on join choose ch on c.course_on = ch.coure_on;

外连接

左外连接 :

左外连接结果集 = 内连接的结果集 + 左表中匹配不上的数据

语法

select 字段列表

from 左表 left [ outer ] join 右表 on 关联条件;

示例:

列出所有学生及其所在班级信息

select s.student_on 学号,s.student_name 姓名,c.calss_name 班级from student s left join classes c on s.class_on = c.class_on;  

右外连接 :

右外连接结果集 = 内连接的结果集 + 右表中匹配不上的数据

语法:

select 字段列表

from 左表 right [ outer ] join 右表 on 关联条件;

示例:

列出所有学生及其所在班级信息

select s.student_on 学号,s.student_name 姓名,c.calss_name 班级from classes c right join student s on s.class_on = c.class_on;  

如果想在结果集中显示两张表的所有内容

全外连接--- MySQL 不支持语法

全外连接结果集 = 内连接的结果集 + 两表中匹配不上的数据

语法 :

select 字段列表

from 左表 full [ outer ] join 右表 on 关联条件;

MySQL 支持语法 union 语句 union all 语句

作用:

将两个select的结果作为一个整体显示出来。

满足条件: 1、两个select查询的列的数量必须相同;

2、每个列的数据类型需要相似;

区别:

union all是将两个select语句的结果求并集。 union是将union all的结果下再去除重复数据

union

使用 union 实现以上功能

select s.student_on 学号,s.student_name 姓名,c.calss_name 班级from student s left join classes c on s.class_on = c.class_on
union
select s.student_on 学号,s.student_name 姓名,c.calss_name 班级from student s right join classes c on s.class_on = c.class_on; 
 

如果union 连接的两张表的字段列表 数量不一致,可以给字段列表少的表赋值 null, 不赋值会报错

select * from student union select *,null from teacher;

union all

select s.student_on 学号,s.student_name 姓名,c.calss_name 班级from student s left join classes c on s.class_on = c.class_on
union all
select s.student_on 学号,s.student_name 姓名,c.calss_name 班级from student s right join classes c on s.class_on = c.class_on;
  

Java菜鸟补给站---MySQL数据库 SQL 语句补充( 一 )相关推荐

  1. MySql数据库SQL语句小结

    数据库概述 什么是数据库? 什么是关系型数据库? 数据库相关概念 什么是SQL语言? 连接mysql服务器 数据库及表操作 创建.删除.查看数据库 创建.删除.查看表 新增.更新.删除表记录 查询表记 ...

  2. MySQL数据库 sql语句的简单入门学习

    初步学习MySQL后的一些总结 MySQL简介 MySQL在过去由于性能高.成本低.可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中.随着MySQL的不断成熟, ...

  3. MySQL数据库---SQL语句优化及性能优化

    文章目录 mysql的架构图 mysql的执行过程 sql语句执行计划 索引失效的情况 mysql性能调优: 分库分表 读写分离---主从复制 mysql的架构图 大致分为4层:连接层.服务层.引擎层 ...

  4. mysql数据库sql语句大全

    mysql sql语句大全 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql se ...

  5. Strust2 Mysql数据库,sql语句分页,JSP显示

    1. 常见分页实现方式 (1) Java程序分页的实现主要是用List 接口中的subList(int startIndex,int endIndex)方法,这种方式也称为程序内存分页. (2) 使用 ...

  6. Mysql数据库Sql语句执行效率-Explain

    为什么80%的码农都做不了架构师?>>>    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语 ...

  7. Mysql 数据库 -------- SQL语句进阶查询 ------- 后部分

    Mysql ---- SQL高级查询 连接查询 内连接 外连接 数据库函数 数学函数 聚合函数(给数据表用的) 字符串函数(字符串用''格式) 日期时间函数 存储过程 创建存储过程 创建存储过程中的传 ...

  8. mySQL数据库Sql语句执行效率检查--Explain命令

    Explain命令在解决数据库性能上是第一推荐使用命令,大部分的性能问题可以通过此命令来简单的解决,Explain可以用来查看SQL语句的执行效 果,可以帮助选择更好的索引和优化查询语句,写出更好的优 ...

  9. MySQL 数据库--SQL 语句(一)

    一.准备 1.源码编译安装 MySQL 必须先准备好软件包至/opt目录下 软件包资源传送门:百度网盘 请输入提取码 提取码:u4vw #!/bin/bashsystemctl stop firewa ...

最新文章

  1. 通过ArrayList对modCount的操作分析fail-fast 机制
  2. 创建应用服务器连接客户端
  3. 【script】数据处理的瑞士军刀 pandas
  4. UIView中常见的方法汇总
  5. 《如何搭建小微企业风控模型》第十节 单变量分析(下)节选
  6. win7下用docker部署的基于openvino的yolov5算法(三)yolov5 v4.0环境安装以及.pt转成.ir模型
  7. Chrome 73 稳定版正式发布,macOS 支持暗色主题
  8. 邮箱 / QQ 超链接
  9. yyuc php,php版微信公众平台实现预约提交后发送email的方法
  10. 计量经济学——试题总结
  11. 当8081端口被占用了怎么办?
  12. wincc报表日报表实例_wincc报表例程
  13. LeetCode 227. 基本计算器 II 【c++/java详细题解】
  14. 谈谈对腾讯360之争的观感
  15. 有计算机考试励志的文案,治愈·励志文案:写给即将参加考试的你
  16. 最佳Outlook 2007改进-包括日历
  17. java计算机毕业设计ssm网上报名系统
  18. 5招在不添加内存、显卡、ssd前提下有效提升windows系统pc性能
  19. php将长网址转换为短网址
  20. linux源代码阅读组合vim tags taglist

热门文章

  1. 51单片机做的家庭智能消防扑救系统(GSM通讯)分享给大家 电路图,测试图,各模块源代码全技术资料
  2. 计算机网络二学位实验报告,计算机网络实验报告华科二学位.doc
  3. LoRa的远距离通信采用的方法
  4. react项目搭建出现的问题以及解决办法
  5. 你是如何测试电机性能的?
  6. 腾讯首位17级杰出科学家正式诞生!腾讯AI Lab负责人张正友博士获此殊荣
  7. unity3d 可以给APK签名吗
  8. 对计算机应用基础这门课的认识,对计算机应用基础课程教学的探讨
  9. ABBYY FineReader如何禁用自动处理
  10. 福州三中 计算机竞赛,2019全国五大学科竞赛落下帷幕 福建学子获7块金牌