复习

DDL 定义数据 CREATE / DROP / ALTER
DML 操作数据据 INSERT / UPDATAE / DELETE
DQL 查询数据 SELECT
DCL 控制权限 FRANI / REVOKE

  • 编码 ASCII/Latin-1/GB2312/GBK/Unicode

  • 数库中的中文乱码:
    脚本文件 utf8
    客户端连接服务器的编码 utf8
    服务器创建数据库 utf8

  • 列类型
    数值型 TINYINT / SMALLINT / INT / BIGINT / BOOL
    FLOAT / DOUBLE 3.14e20 / DECIMAL(m, d)

    日期时间型 DATE / TIME / DATETIME

    字符串型 VARCHAR(M) / CHAR(M) / TEXT

  • 列约束
    主键约束

1.列约束

  1. 主键约束(PRIMARY KEY)

  2. 非空约束(NOT NULL)
    2.1 声明了非空约束的列上 不允许使用 NULL 值

  3. 唯一约束(UNIQUE)
    3.1 声明了唯一约束的列上不能插入重复的值
    3.2 允许插入 NULL, 而且可以插入多个 NULL

  4. 默认值约束(DEFAULT)
    4.1 可以使用关键字 DEFAULT 来声明默认值
    4.2 有两种使用方式:
    4.2.1
    INSERT INTO laptop VALUES(1, DEFAULT, …);
    4.2.2
    INSERT INTO laptop(lid, price) VALUES(2, 3000);
    只是给特定的列插入值, 其他的列全部使用默认值;

  5. 检查约束(CHECK)
    5.1 检查约束可以对插入的数据进行自定义的验证
    CREATE TABLE student(
    score TINYINT CHECK(score >= 0 AND score <= 100)
    );
    MySQL 不支持检查约束, 会降低数据的插入速度

  6. 外键约束(FOREIGN KEY)
    6.1 声明了外键约束的列上,取值必须在另一个表 主键列上出现过
    6.3 要求两着的列类型一致
    6.4 允许是用 NULL
    6.5 FOREIGN KEY(列) REFENCES 数据表(主键列)

  7. 自增列(AUTO_INCREMENT)
    7.1 假如一个列声明了自增列, 则无需手动赋值, 赋值为 NULL
    7.2 会自动当前的最大值加 1 插入

注意事项:1. 只适用于 整数型的主键列2. 自增列允许手动赋值

练习

  • 设置笔记本分类表中, 笔记本数量默认值为 1,
    使用两种方式插入数据

  • 编写脚本文件 01_tedu.sql 创建 tedu, 进入 tedu
    创建 保存部门数据的表 dept, 包含(did, dname)
    10 研发
    20 市场部
    30 运营部
    40 测试部

    创建 保存员工的数据表
    emp, 包含(eid, ename, sex, birthday, salary 工资, deptId 所属部门)

    插入 15 条数据

查询

  1. 简单查询
    1.1 查询特定的列
    实例: 查询所以员工的姓名、性别
    SELECT ename,sex FROM emp;

    练习: 查询所有员工的编号、姓名、生日、工资
    SELECT eid,ename,birthday,salary FROM emp;

    1.2 查询所有的列
    SELECT * FROM emp;
    SELECT eid,ename,sex,birthday,salary,deptId FROM emp;

    1.3 给列起别名(AS
    实例:查询所有员工的姓名和工资, 使用汉字别名
    SELECT ename AS 姓名,salary AS 工资 FROM emp;

    练习:查询所有员工的编号, 姓名, 性别, 生日 使用汉字别名
    SELECT eid AS 编号, ename AS 姓名, sex 性别, birthday AS 生日 FROM emp;

    练习:查询所有员工的编号和姓名, 使用一个字符别名
    SELECT eid a, ename b FROM emp;

    在起别名的时候, AS 关键字是可以省略的但是必须保留空格

    1.4 显示不同的记录/合并相同的项(DISTINCT
    实例:查询出公司有哪些性别的员工
    SELECT DISTINCT sex FROM emp;

    练习:查询员工都分布在哪些部门
    SELECT DISTINCT deptId FROM emp;

    1.5 查询时执行计算
    实例:2+3-54/8+13
    SELECT 2+3-5
    4/8+13;

    练习:查询出所有员工的姓名及其年薪
    SELECT ename, salary * 12 FROM emp;

    练习:假如每个员工的工资增加 500 年终奖时 5000 元, 查询出员工的姓名及员工
    给列使用汉字别名
    SELECT ename 姓名, (salary+500)*12+5000 年薪 FROM emp;

    1.6 对查询的结果集升序排序(ORDER BY 列 ASC
    实例:查询所有的部门, 结果集按照编号升序排列
    SELECT * FROM dept ORDER BY did ASC;
    ASC ascendent 升序

    1.7 对查询的结果集降序排序(ORDER BY 列 DESC
    实例:查询所有的部门, 结果集按照编号兼续排列
    SELECT * FROM dept ORDER BY did DESC;
    DESC descendent 降序

    练习:查询所有的员工, 结果集按照工资降序排列
    SELECT * FROM emp ORDER BY salary DESC;
    练习:查询所有的员工, 结果集按照工资升序排列
    SELECT * FROM emp ORDER BY salary ASC;

    练习:查询所有的员工, 结果集按照年龄从大到小排序
    SELECT * FROM emp ORDER BY birthday DESC;

    练习: 查询所有的员工 结果集 按照 姓名升序排序
    SELECT * FROM emp ORDER BY ename;

    练习:查询所有员工,结果集按照工资降序排序,如果工资相同,按照姓名排序
    SELECT * FROM emp ORDER BY salary DESC,ename;

    练习:查询所有的员工, 结果集按照性别升序排列, 如果性别相同, 按照生日的降序排列
    SELECT * FROM emp ORDER BY sex, birthday DESC;

    ORDER BY 可以按照数值、日期时间、字符串排序 默认是 升序排序(ASC)

    1.8 条件查询
    实例:查询编号为 5 的员工
    SELECT * FROM emp WHERE eid=5;

    练习:查询姓名为 king 的员工的编号, 姓名, 生日, 工资
    SELECT eid, ename, birthday, salary FROM emp WHERE ename=“King”;

    练习:查询出 20 号部门下的所有员工, 结果集按照工资降序排列
    SELECT * FROM emp WHERE deptId=20 ORDER BY salary DESC;

    练习:查询工资在 5000 以上的员工 有哪些?
    SELECT * FROM emp WHERE salary >= 5000 ORDER BY salary DESC;

比较运算符
<
>
<=
>=
=
!=
  练习:查询出 1991-1-1 后出生的员工 有哪些?SELECT * FROM emp WHERE birthday > "1991-1-1";练习:查询出不在 10号 部门的员工 有哪些?SELECT * FROM emp WHERE deptId!=10;练习:查询出没有明确部门的 员工SELECT * FROM emp WHERE deptId IS NULL;(**IS NULL**:确定为 NULL的结果集)练习:查询出有明确部门的员工SELECT * FROM emp WHERE deptId IS NOT NULL;(**IS NOT NULL**:确定不为 NULL的结果集)练习:查询出工资在 6000 以上的男员工SELECT * FROM emp WHERE salary >= 6000 AND sex = 1;练习:查询出工资在 6000 以上 8000 以下的 所有员工SELECT * FROM emp WHERE salary >= 6000 AND salary <= 8000;(**BETWEEN a AND b**)SELECT * FROM emp WHERE salary BETWEEN 6000 AND 8000; 等同于以上写法练习:查询出工资在 6000 以下,以及 8000 以上的员工 (**OR**)SELECT * FROM emp WHERE salary < 6000 OR salary > 8000;SELECT * FROM emp WHERE salary NOT BETWEEN 6000 AND 8000;(**NOT NETWEEN**)练习:查询出 1990年之前 及 1993年 之后出生的员工SELECT * FROM emp WHERE birthday < "1990-1-1" OR birthday > "1993-12-31";SELECT * FROM emp WHERE birthday NOT BETWEEN "1990-1-1" AND "1993-12-31";练习:查询出 1993年出生的员工SELECT * FROM emp WHERE birthday >= "1993-1-1" AND birthday <= "1993-12-31";SELECT * FROM emp WHERE birthday BETWEEN "1993-1-1" AND "1993-12-31";练习:查询出 20号 和 30号 部门的员工有哪些?(**IN**)SELECT * FROM emp WHERE deptId=20 OR deptId=30;SELECT * FROM emp WHERE deptId IN(20, 30);练习:查询出不在 20号 和 30号 部门的员工SELECT * FROM emp WHERE deptId!=20 AND deptId!=30;SELECT * FROM emp WHERE deptId NOT IN(20, 30);
条件查询
WHERE
AND/OR
NOT/BETWEEN
IS(/NOT) NULL
(NOT) IN()

1.9.模糊条件查询
实例:查询出姓名含有字母 e 的员工
SELECT * FROM emp WHERE ename LIKE “%e%”;
LIKE
% 表示 一个或多个

  练习:查询出以 e 结尾的员工SELECT * FROM emp WHERE ename LIKE "%e";练习:查询出姓名中倒数第2个字符为 e 的员工SELECT * FROM emp WHERE ename LIKE "%e_";**_ 表示任意一个字符**|  %  |   任意多个字符 >=0      ||  _  |    任意一个字符 =1      ||以上两个必须要结合 LIKE 关键字使用|1.10 MySQL中的分页查询假如查询的结果集有太多的数据,一次显示不完,就可以使用分页查询需要由刚才的两个条件:当前的页码、每一页的数据量|            计算开始              || 开始的值=(开始的页码-1)*每页的数据量 |SELECT * FROM emp **LIMIT start,count**;start: 开始的值;count: 每页的数据量;假如 每页显示 5 记录第一页: SELECT * FROM emp LIMIT 0, 5;第二页: SELECT * FROM emp LIMIT 5, 5;第三页: SELECT * FROM emp LIMIT 10, 5;第四页: SELECT * FROM emp LIMIT 15, 5;.....................................练习:假如每页显示 6 条数据, 写出查询前 5 页的 SQL 语句SELECT * FROM emp LIMIT 0, 6;SELECT * FROM emp LIMIT 6, 6;SELECT * FROM emp LIMIT 12, 6;_注意: LIMIT 后的两个值必须是数值型_

课后任务

复习以上内容, 删除代码保留注释 重新写代码

  1. 查询出工资在 5000 以上的女员工的姓名、性别、生日、工资,结果集按照工资降序排序,取前三条数据

SELECT ename, sex, birthday, salary FROM emp WHERE sex=0 AND salary >= 5000 ORDER BY salary DESC LIMIT 0, 3;

性别 1/0 male/female man/woman boy/gril

日期时间 BIGINT
DATE/TIME 2021-6-15 12:22:36

存 距离计算机元年的毫秒数
1970年 1 月 1 日 0 时 0 分 0 秒
2019-1-1 0:0:0

mysql(day03)相关推荐

  1. Spring+SpringMVC+shiro+mysql(一)

    Spring+SpringMVC+shiro+mysql(一) 最近要做个后台管理系统,就会设计到权限的管理控制,于是就想到 shiro ,下面是自己对Spring+shiro的一点点理解,记录下来, ...

  2. 学习笔记(十五)——MySQL(查询)

    查询方法 下面的查询都是对单表的查询,所以先创建表tb1(下面的tb1均代表此表) create table tb1(id int,name varchar(10),age int,class var ...

  3. Mysql(Mariadb)数据库主从复制

    Mysql(Mariadb)数据库主从复制 Mysql主从复制的实现原理图大致如下: MySQL之间数据复制的基础是以二进制日志文件(binary log file)来实现的,一台MySQL数据库一旦 ...

  4. Mysql(三)——(cmd)数据库的命令操作

    数据库操作-cmd命令 一.连接.查看操作 1.1 连接数据库 1.2 显示所有数据库 1.3 选择数据库 1.4 查看数据库的表 1.5 查看数据库表的字段信息 1.6查看表数据 1.7 退出 二. ...

  5. 从 SQL Server 到 MySQL (三):愚公移山 - 开源力量

    我们用了两章文章 从 SQL Server 到 MySQL(一):异构数据库迁移 / 从 SQL Server 到 MySQL(二):在线迁移,空中换发动机 介绍我们遇到问题和解决方案. 不管是离线全 ...

  6. MySQL(二):MySQL性能优化

    [目录] MySQL(一):MySQL中的事务 MySQL(二):MySQL性能优化 [前言] 在对MySQL的事务进行了学习总结之后,继续对MySQL的性能优化进行学习并进行总结,将自己在工作中的性 ...

  7. MySQL(一):MySQL中的事务

    [目录] MySQL(一):MySQL中的事务 MySQL(二):MySQL性能优化 [前言] MySQL中的事务是MySQL中重要的一部分内容:虽然之前用了很久不过这次再用的时候仍然发现自己存在一些 ...

  8. php无法连接mysql(selinux)

    php无法连接mysql(selinux) 注意: 有什么不对的地方请大神们多多指教!!! 今天发布代码的时候,使用小伙伴搭建的lamp环境遇到这样的一个问题: 使用Thinkphp5,连接mysql ...

  9. 在Fedora 11中安装Apache2+PHP5+MySQL(LAMP)

    在Fedora 11中安装Apache2+PHP5+MySQL(LAMP) LAMP是Linux, Apache, MySQL, PHP的缩写.这篇教程将教你如何在一台Fedora 11服务器上安装A ...

最新文章

  1. C语言中的union
  2. openssl之BIO系列之1---抽象的IO接口
  3. hikaridatasource 加密后登陆不上_渗透测试 | 突破前端JS加密限制
  4. Windows下的搜索神器 —— everything
  5. caffe报错:Check failed: width <= datum_width (28 vs. 17)
  6. 【转】Python中的运算符
  7. (4)FPGA面试题同步逻辑和异步逻辑
  8. hbase数据读取优化_read读取优化_HBase最佳实践_HBase开发指南_云数据库 HBase - 阿里云...
  9. j2ee 现在已经改名为java ee_Java EE 已经正式更名为 Jakarta EE(雅加达)
  10. 重装mysql 失败_重装MySQL最后一步失败的解决办法
  11. 在GlassFish中应用Hibernate
  12. JavaWeb实现快递物流查询
  13. 《共同警戒区》观后感(r10笔记第97天)
  14. 基于FPGA打地鼠游戏的设计与实现
  15. 网络模块与RJ45水晶头接线方法
  16. C++/C输出素数,满某个数就换行
  17. 为知共享——让工作更轻松
  18. 求职经验贴-描述笔者当时找工作情形
  19. CSS控制页面展开/关闭
  20. tensorflow中的一些基本函数

热门文章

  1. 定制个性化App 引领企业跨入互联网时代
  2. 关于阿里云对象存储OSS流量包说明
  3. 超实用!轻松几步修复灰蒙蒙的情侣合照!
  4. 你的人生,就是从这一刻开始毁掉的
  5. 苹果设置显示连接到服务器,iPhone升级更新至iOS9后显示连接到iCloud服务器错误现象的解决办法...
  6. 大都会人寿线下培训第九天-通关了
  7. 律师向公安部举报称微软黑屏是最大***行为
  8. 斐波那契数列之不死神兔 14
  9. 怎么导出微信语音【亲测有效】
  10. 基于ONVIF协议的(IPC)客户端程序开发-10 设备校时