DBMS数据库管理系统
SQL结构化查询语言

MySQL

sql语句:不区分大小写,以分号结尾。
commit 提交;

数据类型:
    char    定长字符串
    varchar 变长字符串

登录MySQL:mysql -uroot -p 密码:******
查看MySQL中的数据库: show databases;
选中使用的数据库:use testdb
查看当前使用的数据库:select database();
创建数据库:create database testdb;
查看数据库中的表:show tables;
查看表结构:desc
创建表:create table Student(Sid varchar(6),Sname varchar(10),Sage datetime,Ssex varchar(10));
插入数据: insert into Student values('01','赵雷','1990-01-01','男');
删除数据:delete from Student where Sid=01;

简单的查询语句:select Sid,Sname from student;
查询结果的列重命名:select score+15 as nscore from sc;
                    select score+15 as '分数' from sc;
                标准sql语句中要求使用单引号括起字符串;                
                as 可以省略

条件查询:使用where语句,where必须放到from后边
        select
        2    字段,字段...
        from
        1    表名
        where
        3    条件;
        执行顺序:先from,然后where,最后select
        between ... and ...  数字左小右大的闭区间;
        ---------
        空NULL不是一个值,不能用等号衡量。必须使用is null或者is not null;
        and 逻辑与
        in等同于or
        模糊查询like:(模糊查询中,必须掌握两个特殊的符号,一个是%,一个是_)
            %代表任意多个字符,_代表任意1个字符;
            找出名字中有下划线的,where name like '%\_%'
        转义字符 反斜杠\
        ---------
        
排序 select * from student order by sage; (默认升序)
    指定升序asc 降序desc
    安照工资的降序排,相同时安照名字的升序排;
    select ename,sal from emp order sal desc;
    select ename,sal from emp order sal desc , ename asc;
    --------
    找出工作岗位是SALSMAN的员工,并且安照薪资的降序排列
    select xxx from emp where job='SALESMAN' order by sal desc;
    总体的写法是 先找到待排序的数据再排序,先数据再操作,排序操作是最后执行的
    --------
    
分组函数(共5个):对"某一组"数据进行操作
    count 计数          select count(*) from emp;  select count(ename) from emp;总人数
    sum 求和            select  sum(sal) from emp;
    avg 平均值          select  avg(sal) from emp;
    max 最大值            select  max(sal) from emp;
    min 最小值            select  min(sal) from emp;
    ---------
    别名:多行处理函数
    特点:输入多行,输出一行
    ***分组函数自动忽略空NULL
    ---------
    找出工资高于平均工资的员工:select avg(sal) from emp;
    select ename,sal from emp where sal>avg(sal);***分组函数语法出错
    ***思考以上错误信息?
    SQL语句,分组函数不可直接出现在where字句中???
        原因:group by是在where条件之后执行, 而分组函数的执行在group by之后,因此,where条件中不能计算分组函数
    ---------
    count(*)和count(某字段)的区别    
        count(*):不是统计某个字段中数据的个数,而是统计总记录的条数。
        count(某字段):表示统计comm字段中不为NULL的数据总条数。
    --------
    
    
单行处理函数:输入n行,输出n行
    计算每个员工的年薪 select ename,(sal+comm)*12 as yearsal from emp;
    select ename,(sal+ifnull(comm,0))*12 as yearsal from emp;
    ifnull() 空处理函数,预处理。
    ifnull(可能为null的数据,被当做什么处理):属于单行处理函数
    --------
    NULL参与运算的结果,仍然是NULL(所有数据库规定)
    ---------

group by和having
    group by:按照某个字段或者某些字段进行分组。
    having: 对分组之后的数据进行再次过滤。
    找出每个岗位的最高薪资: 
        select
        3    max(sal) 
        from 
        1    emp 
        group by 
        2    job; 
        select max(sal),job from emp group by job; ok 
    *** 规则:语句中出现group by时,select后面只能跟分组函数和参与分组的字段
        select ename,max(sal),job from emp group by job; oracle出错,mysql结果无意义
    每个岗位的平均薪资?
        select job,avg(sal) from emp group by job;
    
        
    分组函数一般会与group by联合使用,并且分组函数都是在group by语句执行结束之后才执行。
    当sql语句没有group by的话,整张表的数据会自成一组。
    --------
    一个完整的DQL语句
        select    5
            xxx
        from    1
            xxx 
        where    2
            xxx
        group    3
            xxx
        having    4
            xxx
        order by    6
            xxx
    数字表示执行顺序
    1拿数据 2条件过滤 3分组 4分组后再次过滤 5拿特定字段数据 6排序输出
    --------    
    子查询
    找出工资高于平均工资的员工:
    第一步:select avg(sal) from emp;
    第二部找出高于平均工资的员工
    select ename,sal from emp where sal > (select avg(sal) from emp);
    --------
    多个字段联合分组?
    找出不同岗位各自的最高薪资
        select job,max(sal) from emp group by job;
    找出每个部门不同岗位各自的最高薪资
        select deptno,job,max(sal) from emp group deptno,job;
    ---------
    找出每个部门的最高薪资,要求显示薪资大于2900的数据。
        第一步:找出每个部门的最高薪资
            select deptno,max(sal) from emp group by deptno;
        第二步:显示薪资大于2900的数据
            select deptno,max(sal) from emp group by deptno having max(sal)>2900; //这种方式效率低
        改进:
            select deptno,max(sal) from emp where sal>2900 group by deptno;//尽量使用where,效率较高
    找出每个部门的平均薪资,要求显示薪资大于2000的数据。    
        select deptno,avg(sal) from emp group by deptno having avg(sal)>2000; //这种方式效率低    
            
========多表关联查询=========

MySQL 基础学习笔记(1)相关推荐

  1. MySQL基础学习笔记(带目录)

    MySQL学习笔记 MySQL产品的介绍和安装 MySQL服务的启动和停止 MySQL服务的登陆和退出 MySQL的常见命令 MySQL的语法规范 MySQL基础查询 1.起别名 2. 去重disti ...

  2. MySQL基础-学习笔记

    MySQL基础 一.DQL语言的学习 1.基础查询 /* 语法: select 查询列表 from 表名特点: 1-查询的结果集是一个虚拟表 2-select类似于System.out.printIn ...

  3. MySQL基础学习笔记

    一.数据库基本概念 1.1 数据库 - Database 从字面意思看,数据库就是一个存储数据的仓库.从计算机的角度来讲,数据库(Datebase)是按照数据结构来组织.存储和管理数据的仓库. 简单来 ...

  4. MySQL基础学习笔记(持续更新中)

    一.MySQL基础 1. 数据库概念 1.1 为什么要学MySQL 个人理解:随着互联网的发展,数据变得烦杂,冗余,量大,为了保证数据的持久性以及健壮性等等,同时也为了方便人们很好的处理数据,这就发明 ...

  5. MYSQL基础--学习笔记

    最近一段时间,系统的学习了下mysql相关知识,当然都是比较基础的,现在贴出来,以供参考备忘--帅帅的小猪猪 创建用户: CREATE USER 'sampadm'@'localhost' IDENT ...

  6. MySql基础学习笔记(一)

    一.数据库存储数据的特点 将数据放到表中,表再放到库中 一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己.表名具有唯一性. 表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 ...

  7. MySQL基础学习笔记——关于KEY的说明

    关于KEY的说明 在MySQL中Key的底层都包含index(索引)的含义. 如上图,在使用describe 表的时候,观察Key的值: PRI:表示该列(字段)是主键的组成部分: UNI:表示该列( ...

  8. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  9. MySQL 索引学习笔记

    MySQL 索引学习笔记 索引基本概念 索引优点 B-Tree 索引 基本原理 使用场景 使用限制 哈希索引 基本原理 使用限制 自适应哈希索引 处理哈希冲突 相关面试题 高性能索引策略 独立的列 前 ...

最新文章

  1. 删库跑路大神「后悔」了?我只不过犯了大家都会犯的编程错误!
  2. Confluence 6 手动备份站点
  3. COM 组件设计与应用(六)
  4. npm ERR! the command again as root/Administrator
  5. 2017.10.6 单词 思考记录
  6. 垂直搜索引擎完整实现
  7. Halcon缺陷检测——机器学习1
  8. java项目环境搭建
  9. xpath批量下载简历模板
  10. win10激活bug 任务栏假死点击无反应解决方案
  11. fgo怎么把new去掉_fgo指令选择怎么撤销?fgo暴击星怎么分配?
  12. 【荐】JS实现类似星球仿flash效果的动态菜单
  13. 【批处理DOS-CMD命令-汇总和小结】-磁盘管理和修复、磁盘和分区属性的管理、设置隐藏分区卷(convert、diskpart、chkdsk)
  14. matplotlib之pyplot模块之坐标轴配置(axis():设置坐标轴外观、设置坐标轴范围)
  15. MediaCodec进行音频合成
  16. 计算机c盘无法扩展,C盘不够大怎么办 怎么扩展C盘容量合并硬盘分区
  17. 1代iPhone 3.0 OS 刷机+破解+使用技巧
  18. 基于Keras的IMDB数据集电影评论情感二分类
  19. smina 基于结构的虚拟筛选
  20. Linux 下 网卡重启

热门文章

  1. Python险种缴费记录管理(增删查改)
  2. 安徽科技学院 信网学院网络文化节 房辉
  3. GHOSTXP_SP3电脑公司特别版V2012_05
  4. 人工智能等新技术将会给人们的生产、生活方式带来革命性的变化
  5. Mysql报表统计常用sql
  6. unity开发 斗地主算法—提示AI(提示出牌)
  7. 基于PaaS和SaaS研发的商业云平台实战 - 精华篇
  8. 算法91----切绳子
  9. matlab霍夫曼图像压缩,用matlab仿真huffman编码在jpg图像压缩中的应用崔微微
  10. java程序中默认包含的是_在 Java 程序设计中,由 Java 编译器默认导入的包是( )_学小易找答案...