mysql 实践(例题)
MySQL安装见本博
安装成功后,开始菜单中找到 “MySQL 8.0 Command Line Client” 进行启动(启动后,可直接输入MySQL密码)
1. create database 数据库名;
show databases;
show tables;
以上,需要记得加s 。且以; 表示结尾
2.
use 数据库名;
create table student(
id int,
studentname varchar(100)
);
以上,varchar后需要指定长度
3.查看表结构
desc 表名;
show columns from 表名;
describe 表名;
4.插入数据
INSERT INTO t_member (id, name, email) VALUES
(1, 'nick', 'nick@126.com'),
(4, 'angel','angel@163.com');
5.条件查询:
条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:
l =、!=、<>、<、<=、>、>=;
l BETWEEN…AND;
l IN(set);
l IS NULL;
l AND;
l OR;
l NOT;
(1)查询年龄在20到40之间的学生记录
SELECT * FROM stu WHERE age>=20 AND age<=40;
或者 SELECT * FROM stu WHERE age BETWEEN 20 AND 40;
(2)查询性别非男的学生记录
SELECT * FROM stu WHERE gender!='male';
或者 SELECT * FROM stu WHERE gender<>'male';
或者 SELECT * FROM stu WHERE NOT gender='male';
(3)查询姓名不为null的学生记录
SELECT * FROM stu WHERE NOT sname IS NULL;
或者SELECT * FROM stu WHERE sname IS NOT NULL;
6.分组查询
GROUP BY (当需要分组查询时需要使用GROUP BY子句)
(1)查询每个部门的部门编号和每个部门的工资和:
SELECT deptno, SUM(sal)
FROM emp
GROUP BY deptno;
(2)查询每个部门的部门编号以及每个部门的人数:
SELECT deptno,COUNT(*)
FROM emp
GROUP BY deptno;
(3)查询每个部门的部门编号以及每个部门工资大于1500的人数:
SELECT deptno,COUNT(*)
FROM emp
WHERE sal>1500
GROUP BY deptno;
HAVING子句
(4)查询工资总和大于9000的部门编号以及工资和:
SELECT deptno, SUM(sal)
FROM emp
GROUP BY deptno
HAVING SUM(sal) > 9000;
注:having与where的区别:
1.having是在分组后对数据进行过滤. where是在分组前对数据进行过滤
2.having后面可以使用分组函数(统计函数) 。where后面不可以使用分组函数。WHERE是对分组前记录的条件,如果某行记录没有满足WHERE子句的条件,那么这行记录不会参加分组;而HAVING是对分组后数据的约束。
7.limit
LIMIT用来限定查询结果的起始行,以及总行数。
(1)查询5行记录,起始行从0开始 SELECT * FROM emp LIMIT 0, 5; ps:注意,起始行从0开始,即第一行开始!
(2)查询10行记录,起始行从3开始 SELECT * FROM emp LIMIT 3, 10;
(3)查询语句书写顺序:select – from- where- group by- having- order by-limit
查询语句执行顺序:from - where -group by - having - select - order by-limit
8.模糊查询
(1)查询姓名由5个字母构成,并且第5个字母为“i”的学生记录
SELECT * FROM stu WHERE sname LIKE '____i'; #模糊查询必须使用LIKE关键字。其中 “_”匹配任意一个字母。
(2)查询姓名以“z”开头的学生记录
SELECT * FROM stu WHERE sname LIKE 'z%'; # 其中“%”匹配0~n个任何字母。
9.字段控制查询
(1)去除重复记录: SELECT DISTINCT sal FROM emp;
(2)查看和:
SELECT *,sal+comm FROM emp; # 因为sal和comm两列的类型都是数值类型,所以可以做加运算。如果sal或comm中有一个字段不是数值类型,那么会出错。
SELECT *,sal+IFNULL(comm,0) FROM emp; #comm列有很多记录的值为NULL,因为任何东西与NULL相加结果还是NULL,所以结算结果可能会出现NULL。可以用 函数IFNULL把NULL转换成数值0
(3)给列名添加别名:
SELECT *, sal+IFNULL(comm,0) AS total FROM emp; #在查询中出现列名为sal+IFNULL(comm,0),这很不美观,可以取别名为total
SELECT *,sal+IFNULL(comm,0) total FROM emp; #给列起别名时,是可以省略AS关键字的
10.排序
SELECT * FROM emp ORDER BY sal DESC,empno ASC; #查询所有雇员,按月薪降序排序,如果月薪相同时,按编号升序排序
11.聚合函数
(1)统计月薪与佣金之和大于2500元的人数: SELECT COUNT(*) AS cnt FROM emp WHERE sal+IFNULL(comm,0) > 2500;
(2) 查询所有雇员月薪和,以及所有雇员佣金和:SELECT SUM(sal), SUM(comm) FROM emp;
查询所有雇员月薪+佣金和:SELECT SUM(sal+IFNULL(comm,0)) FROM emp;
或者 SELECT SUM(sal)+SUM(comm) FROM emp;
(3)统计所有员工平均工资:SELECT AVG(sal) FROM emp;
(4)查询最高工资和最低工资:SELECT MAX(sal),MIN(sal) FROM emp;
总结:
DQL就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。
语法:
SELECT selection_list /*要查询的列名称*/
FROM table_list /*要查询的表名称*/
WHERE condition /*行条件*/
GROUP BY grouping_columns /*对结果分组*/
HAVING condition /*分组后的行条件*/
ORDER BY sorting_columns /*对结果分组*/
LIMIT offset_start, row_count /*结果限定*/
mysql 实践(例题)的更多相关文章
- Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践
Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践 Spring Boot + Nginx + Mysql 是实际工作中 ...
- [MySQL实践] 实践记录
[MySQL实践] 实践记录 版权2019.5.17更新 MySQL MySQL各版本区别 一.选择的版本 1. MySQL Community Server 社区版本,开源免费,但不提供官方技术支持 ...
- SQL Server链接MySQL实践
最近在访问多数据库的时候进行了SQLServer链接MySQL数据的实践,现总结如下: 一. 安装mysql-connector-odbc驱动: 1. 在SQL Server服务器的机器上安装mys ...
- linux使用yum的方式安装mysql实践
1.先检测是否已安装mysql ps -ef|grep mysql root : pts/ :: /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mys ...
- 挤点时间写博客-php&MySQL实践
hi 晚上要吃火锅的嘛,挤点时间写点东西吧,别被老板发现哦 1.PHP与MySQL 五.文章发布系统之后台 5.2 创建配置文件和初始化文件 为了统一配置以及管理方便,还有就是减少代码的冗余. 分别为 ...
- Spring Boot 2.0(五):Docker Compose + Spring Boot + Nginx + Mysql 实践
我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your felling . 前期了解概念什么的确实 ...
- (转)Spring Boot 2 (五):Docker Compose + Spring Boot + Nginx + Mysql 实践
http://www.ityouknow.com/springboot/2018/03/28/dockercompose-springboot-mysql-nginx.html 我知道大家这段时间看了 ...
- mysql实践总结
首先介绍mysql的安装和基本使用.进阶操作.讲解mysql的导入导出和自动备份,然后介绍安全模式修改密码和mysql的全文本搜索功能,最后记录了个人使用mysql中遇到的问题集,闲暇时我也会多看几次 ...
- 使用Prometheus+Grafana监控MySQL实践
一.介绍Prometheus Prometheus(普罗米修斯)是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采 ...
随机推荐
- mui下拉刷新上拉加载
新外卖商家端主页订单大厅页面 使用mui双webview,实现下拉刷新上拉加载 主页面: order_index.html <!doctype html> <html> < ...
- 2、Hdfs架构设计与原理分析
文章目录 1.Hadoop架构 2.HDFS体系架构 2.1NameNode 2.1.1元数据信息 2.1.2NameNode文件操作 2.1.3NameNode副本 2.1.4NameNode心跳机 ...
- bugku_web_变量1(CTF)
这道题考察php全局变量GLOBALS的用法,同样是个php审计题. 看一下代码: flag In the variable ! <?php error_reporting(0); includ ...
- SDN的深入思考(1):SDN的核心本质到底是什么?
原文链接:https://blog.csdn.net/maijian/article/details/41744535 SDN的概念从提出到现在已经过了4年多了,但是关于SDN最基本的问题,“什么是S ...
- LIS 51Nod 1134 最长递增子序列
给出长度为N的数组,找出这个数组的最长递增子序列.(递增子序列是指,子序列的元素是递增的) 例如:5 1 6 8 2 4 5 10,最长递增子序列是1 2 4 5 10. Input 第1行:1个 ...
- JS添加和删除表格行
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- CSS: inline、block和inline-block的区别
block 块级元素特点: 1.每个块级元素都从新的一行开始,并且其后的元素也另起一行.(很霸道,一个块级元素独占一行) 2.元素的高度.宽度.行高以及顶和底边距都可设置. 3.元素宽度在不设置的情况 ...
- Java 中多态的实现(上)
Java 中语法上实现多态的方式分为两种:1. 重载.2. 重写,重载又称之为编译时的多态,重写则是运行时的多态. 那么底层究竟时如何实现多态的呢,通过阅读『深入理解 Java 虚拟机』这本书(后文所 ...
- npm 基础命令
npm是一个node包管理和分发工具,已经成为了非官方的发布node模块(包)的标准.有了npm,可以很快的找到特定服务要使用的包,进行下载.安装以及管理已经安装的包.npm 从5.2版开始,增加了 ...
- 【巨杉数据库SequoiaDB】巨杉Tech | 四步走,快速诊断数据库集群状态
1.背景 SequoiaDB 巨杉数据库是一款金融级分布式数据库,包括了分布式 NewSQL.分布式文件系统与对象存储.与高性能 NoSQL 三种存储模式,分别对应分布式在线交易.非结构化数据和内容管 ...