DDL操作数据库、表

  1. 操作数据库:CRUD

    1. C(Create):创建

      • 创建数据库:

        • create database 数据库名称;
      • 创建数据库,判断不存在,再创建:
        • create database if not exists 数据库名称;
      • 创建数据库,并指定字符集

        • create database 数据库名称 character set 字符集名;
      • 练习: 创建db4数据库,判断是否存在,并制定字符集为gbk

        • create database if not exists db4 character set gbk;
    2. R(Retrieve):查询
      • 查询所有数据库的名称:

        • show databases;
      • 查询某个数据库的字符集:查询某个数据库的创建语句
        • show create database 数据库名称;
    3. U(Update):修改
      • 修改数据库的字符集

        • alter database 数据库名称 character set 字符集名称;
    4. D(Delete):删除
      • 删除数据库

        • drop database 数据库名称;
      • 判断数据库存在,存在再删除
        • drop database if exists 数据库名称;
    5. 使用数据库
      • 查询当前正在使用的数据库名称

        • select database();
      • 使用数据库
        • use 数据库名称;
  2. 操作表

    1. C(Create):创建

      1. 语法:
        create table 表名(
        列名1 数据类型1,
        列名2 数据类型2,
        ....
        列名n 数据类型n
        );

        • 注意:最后一列,不需要加逗号(,)
        • 数据库类型:

          1. int:整数类型

            • age int,
          2. double:小数类型
            • score double(5,2)
          3. date:日期,只包含年月日,yyyy-MM-dd
          4. datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
          5. timestamp:时间错类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss

            • 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
          6. varchar:字符串

            • name varchar(20):姓名最大20个字符
            • zhangsan 8个字符 张三 2个字符
      2. 创建表
        create table student(
        id int,
        name varchar(32),
        age int ,
        score double(4,1),
        birthday date,
        insert_time timestamp
        );

      3. 复制表:
        • create table 表名 like 被复制的表名;
    2. R(Retrieve):查询
      • 查询某个数据库中所有的表名称

        • show tables;
      • 查询表结构
        • desc 表名;
    3. U(Update):修改
      1. 修改表名
        alter table 表名 rename to 新的表名;
      2. 修改表的字符集
        alter table 表名 character set 字符集名称;
      3. 添加一列
        alter table 表名 add 列名 数据类型;
      4. 修改列名称 类型
        alter table 表名 change 列名 新列别 新数据类型;
        alter table 表名 modify 列名 新数据类型;
      5. 删除列
        alter table 表名 drop 列名;
    4. D(Delete):删除
      • drop table 表名;
      • drop table if exists 表名 ;

DML:增删改表中数据

  1. 添加数据:

    • 语法:

      • insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
    • 注意:
      1. 列名和值要一一对应。
      2. 如果表名后,不定义列名,则默认给所有列添加值
        insert into 表名 values(值1,值2,...值n);
      3. 除了数字类型,其他类型需要使用引号(单双都可以)引起来
  2. 删除数据:
    • 语法:

      • delete from 表名 [where 条件]
    • 注意:
      1. 如果不加条件,则删除表中所有记录。
      2. 如果要删除所有记录
        1. delete from 表名; -- 不推荐使用。有多少条记录就会执行多少次删除操作
        2. TRUNCATE TABLE 表名; -- 推荐使用,效率更高 先删除表,然后再创建一张一样的表。
  3. 修改数据:

    • 语法:

      • update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
    • 注意:

      1. 如果不加任何条件,则会将表中所有记录全部修改。

DQL:查询表中的记录

  • select * from 表名;

  • 语法:
    select
    字段列表
    from
    表名列表
    where
    条件列表
    group by
    分组字段
    having
    分组之后的条件
    order by
    排序
    limit
    分页限定

  • 基础查询

    1. 多个字段的查询
      select 字段名1,字段名2... from 表名;

      • 注意:

        • 如果查询所有字段,则可以使用*来替代字段列表。
    2. 去除重复:
      • distinct
    3. 计算列
      • 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
      • ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
        • 表达式1:哪个字段需要判断是否为null
        • 如果该字段为null后的替换值。
    4. 起别名:
      • as:as也可以省略
  • 条件查询

    1. where子句后跟条件
    2. 运算符

      • > 、< 、<= 、>= 、= 、<>
      • BETWEEN...AND
      • IN( 集合)
      • LIKE:模糊查询
        • 占位符:

          • _:单个任意字符
          • %:多个任意字符
      • IS NULL
      • and 或 &&
      • or 或 ||
      • not 或 !

        -- 查询年龄大于20岁

        SELECT * FROM student WHERE age > 20;

        SELECT * FROM student WHERE age >= 20;

        -- 查询年龄等于20岁
        SELECT * FROM student WHERE age = 20;

        -- 查询年龄不等于20岁
        SELECT * FROM student WHERE age != 20;
        SELECT * FROM student WHERE age <> 20;

        -- 查询年龄大于等于20 小于等于30

        SELECT * FROM student WHERE age >= 20 && age <=30;
        SELECT * FROM student WHERE age >= 20 AND age <=30;
        SELECT * FROM student WHERE age BETWEEN 20 AND 30;

        -- 查询年龄22岁,18岁,25岁的信息
        SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
        SELECT * FROM student WHERE age IN (22,18,25);

        -- 查询英语成绩为null
        SELECT * FROM student WHERE english = NULL; -- 不对的。null值不能使用 = (!=) 判断

        SELECT * FROM student WHERE english IS NULL;

        -- 查询英语成绩不为null
        SELECT * FROM student WHERE english IS NOT NULL;

        -- 查询姓马的有哪些? like
        SELECT * FROM student WHERE NAME LIKE '马%';
        -- 查询姓名第二个字是化的人

        SELECT * FROM student WHERE NAME LIKE "_化%";

        -- 查询姓名是3个字的人
        SELECT * FROM student WHERE NAME LIKE '___';

        -- 查询姓名中包含德的人
        SELECT * FROM student WHERE NAME LIKE '%德%';

MySQL笔记02(黑马)的更多相关文章

  1. mysql笔记02 创建高性能的索引

    创建高性能的索引 1. 索引(在MySQL中也叫做"键(key)")是存储引擎用于快速找到记录的一种数据结构. 2. 索引可以包含一个或多个列的值.如果索引包含多个列,那么列的顺序 ...

  2. MySQL笔记 02

    SQL对表中数据的CRUD操作: 插入数据: insert into 表名 (列名1,列名2,....) values (值1,值2,....): 插入部分: insert into xuesheng ...

  3. Java:并发笔记-02

    Java:并发笔记-02 说明:这是看了 bilibili 上 黑马程序员 的课程 java并发编程 后做的笔记 3. 共享模型之管程-1 本章内容-1 共享问题 synchronized 线程安全分 ...

  4. webug4.0 打靶笔记-02【完结】

    webug4.0打靶笔记-02 3. 延时注入(时间盲注) 3.1 访问靶场 3.2 寻找注入点 貌似一样的注入点: ?id=1' --+ 3.3 判断输出位置 同前两关一样的位置,时间盲注应该不是这 ...

  5. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  6. 《30天自制操作系统》笔记(02)——导入C语言

    <30天自制操作系统>笔记(02)——导入C语言 进度回顾 在上一篇,记录了计算机开机时加载IPL程序(initial program loader,一个nas汇编程序)的情况,包括IPL ...

  7. 《The Linux Command Line》 读书笔记02 关于命令的命令

    <The Linux Command Line> 读书笔记02 关于命令的命令 命令的四种类型 type type—Indicate how a command name is inter ...

  8. MySQL笔记汇总

    [目录] MySQL笔记汇总 一.mysql简介 数据简介 结构化查询语言 二.mysql命令行操作 三.数据库(表)更改 表相关 字段相关 索引相关 表引擎操作 四.数据库类型 数字型 字符串型 日 ...

  9. 强化学习读书笔记 - 02 - 多臂老O虎O机问题

    # 强化学习读书笔记 - 02 - 多臂老O虎O机问题 学习笔记: [Reinforcement Learning: An Introduction, Richard S. Sutton and An ...

随机推荐

  1. 关于PHP动态的接收传递的GET,POST和COOKIE变量

    0x01 我们知道 PHP 接收的变量最常用的是 GET,POST,COOKIE 这三个变量.GET变量是附在 url 后传输的,而 POST 变量是放在 http 包中传输的,COOKIE 则是浏览 ...

  2. SMTP、POP3和IMAP邮件协议

    目录 SMTP POP IMAP 总结 DNS记录中的MX记录 今天入职第一天,公司让配置个人的内网.外网邮箱,这可把我给搞晕了,本来以前就对邮箱这块不是很了解,平时也不怎么用邮箱,顶多有个QQ邮箱而 ...

  3. 【python】Leetcode每日一题-删除有序数组中的重复项

    [python]Leetcode每日一题-删除有序数组中的重复项 [题目描述] 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现一次 ,返回删除后数组的新长度. 不要 ...

  4. linux安装MySQL报 error while loading shared libraries: libtinfo.so.5 解决办法

    MySQL服务启动报错 error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No ...

  5. SQLyog连接数据库报错 plugin caching_sha2_password could not be loaded

    错误如图所示: 问题描述: 下载新版的 mysql 8.0.11 安装. 为了方便安装查看,我下载了sqlyog 工具 连接 mysql. 配置新连接报错:错误号码 2058 问题分析: mysql ...

  6. 【TensorFlow】使用Object Detection API 训练自己的数据集报错

    错误1:  训练正常开始后,能正常看到日志输出,但中途报错 ResourceExhaustedError (see above for traceback): OOM when allocating ...

  7. 手写一个LRU工具类

    LRU概述 LRU算法,即最近最少使用算法.其使用场景非常广泛,像我们日常用的手机的后台应用展示,软件的复制粘贴板等. 本文将基于算法思想手写一个具有LRU算法功能的Java工具类. 结构设计 在插入 ...

  8. 发布 .NET 5 带运行时单文件应用时优化文件体积的方法

    自 .NET 发布起,.NET Framework 运行环境就是其摆脱不掉的桎梏.后来有了 .NET Core ,微软终于将自带运行时和单文件程序带给了我们.即便如此,大部分情况下开发者仍然不太满意: ...

  9. MindSpore保存与加载模型

    技术背景 近几年在机器学习和传统搜索算法的结合中,逐渐发展出了一种Search To Optimization的思维,旨在通过构造一个特定的机器学习模型,来替代传统算法中的搜索过程,进而加速经典图论等 ...

  10. react+antd 使用脚手架动态修改主题色

    最近做了一个需求,后台管理系统添加一个可以动态修改ant-design主题色.查询了大多数的文章,发现基本都是抄来抄去,而且文章记录的也一点也不详细.刚刚把这个功能做完了,顺便记录一下如何去修改主题色 ...