MySQL数据库和表基础操作

2023-11-04

目录

一、数据库的基本操作

二、表的基本操作

1. 表结构操作

 2. 表数据操作(CRUD增删查改


一、数据库的基本操作

创建数据库: create database [数据库名];
切换数据库: use [数据库名];
删除数据库: drop database [数据库名];
查询所有数据库: show databases;
查询当前所在数据库: select database();

二、表的基本操作

命名⼤⼩写和规范的问题:

MySQL 忽略⼤⼩写匹配,但创建数据库和表的时候⼀定要注意,默认采⽤全部⼩写的⽅式来操
作,防⽌编写的 sql 不通⽤。
表名采⽤下划线连接,⽐如学⽣成绩表,可使⽤ student_score,⽽⾮ java 的中的 studentScore。

1. 表结构操作

1.1 创建表: 

        create table 表名(
                属性1,
                属性2,
                属性3
        );
可以使⽤ comment 增加字段说明。
示例:
create table stu_test ( 
    id int, name varchar(20) comment '姓名',
    password varchar(50) comment '密码', 
    age int, 
    sex varchar(1), 
    birthday timestamp, 
    amout decimal(13,2), 
    resume text 
);
1.2 删除表 :
        drop table 表名;
        或者  drop table if exists 表名;
1.3 查看表结构 :
        desc 表名 ;
如果desc 查看不到说明信息,可以使⽤另⼀种查询表结构的⽅法:
        show create table student;
或者使⽤ show full columns from 表名;
查询⼀张表的所有字段信息,效果如下:

 查看所有表:

        show tables;

1.4 修改表结果 :

1.4.1 添加列 :

        alter table 表名 add column 列名 数据类型;

1.4.2 删除列:

        alter table 表名 drop column 列名;

1.4.3 修改列 :

列已经有数据了,不能删除,只能修改,可以使⽤ change 语句,具体语法如下:

        alter table 表名 change 原字段名 新字段名 类型 [约束];

1.4.4 修改表名:

        alter table 旧表名 rename 新表名;

1.4.5 修改某个表编码格式(⽀持中⽂):
         alter table table_name convert to character set utf8mb4;

 2. 表数据操作(CRUD增删查改)

2.1 新增 :

2.1.1 单行数据 + 全列插入 :

  insert into score values(1,'刘备','85.5','20','80'); 

2.1.2 多行数据 + 指定列插入 :

    insert into score(id,name,math) values(5,'⼤乔',60), (6,'张⻜',70);

扩展:表和表数据的存储⽬录:
show variables like '%dir%';

也可以使⽤: select @@datadir;

2.2 查询 :

2.2.1 全列查询:

-- 通常情况下不建议使用 * 进行全列查询
-- 1. 查询的列越多,意味着需要传输的数据量越大
-- 2. 可能会影响到索引的使用。
    

    select * from exam_result;

2.2.2 指定列查询:

-- 指定列的顺序不需要按定义表的顺序来

    select id, name, english from exam_result;

2.2.3 表达式查询:

-- 表达式不包含字段
    select id, name, 10 from exam_result;
-- 表达式包含一个字段
    select id, name, english + 10 from exam_result;
-- 表达式包含多个字段
    select id, name, chinese + math + english from exam_result;

2.2.4 别名:

为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称,语法:
-- 结果集中,表头的列名=别名
        select id, name, chinese + math + english 总分 from exam_result;

2.2.5 去重:

使用 DISTINCT 关键字对某列数据进行去重:
select distinct math from exam_result;
2.2.6 排序:
-- ASC 为升序(从小到大)
-- DESC 为降序(从大到小)
-- 默认为 ASC
1. 没有 ORDER BY 子句的查询,返回的顺序是未定义的,永远不要依赖这个顺序
2. NULL 数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面
-- 查询同学姓名和 qq_mail ,按 qq_mail 排序显示
select name, qq_mail from student order by qq_mail;
select name, qq_mail fromstudent  order by qq_mail desc;
3. 使用 表达式 别名 排序
-- 查询同学及总分,由高到低
select name, chinese + english + math from  exam_result order by chinese + english + math desc ;
select  name, chinese + english + math total from  exam_result order by  total desc ;
4. 可以对多个字段进行排序,排序优先级随书写顺序
-- 查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示
select name, math, english, chinese from exam_result
order by  math desc , english, chinese;

2.2.7 条件查询 :where

比较运算符:

 逻辑运算符:

1. WHERE 条件可以使用表达式,但不能使用别名。
2. AND 的优先级高于 OR ,在同时使用时,需要使用小括号 () 包裹优先执行的部分

● 基本查询:

-- 查询英语不及格的同学及英语成绩 ( < 60 )
SELECT name, english FROM exam_result WHERE english < 60 ;
-- 查询语文成绩好于英语成绩的同学
SELECT name, chinese, english FROM exam_result WHERE chinese > english;
-- 查询总分在 200 分以下的同学
SELECT name, chinese + math + english 总分 FROM exam_result WHERE chinese + math + english < 200 ;

● ANDOR

-- 查询语文成绩大于 80 分,且英语成绩大于 80 分的同学
SELECT * FROM exam_result WHERE chinese > 80 and english > 80 ;
-- 查询语文成绩大于 80 分,或英语成绩大于 80 分的同学
SELECT * FROM exam_result WHERE chinese > 80 or english > 80 ;
-- 观察 AND OR 的优先级:
SELECT * FROM exam_result WHERE chinese > 80 or math> 70 and english > 70 ;
SELECT * FROM exam_result WHERE (chinese > 80 or math> 70 ) and english > 70 ;

● 范围查询:

1. BETWEEN ... AND ...
查询语文成绩在 [80, 90] 分的同学及语文成绩
SELECT name, chinese FROM exam_result WHERE chinese BETWEEN 80 AND 90 ;
-- 使用 AND 也可以实现
SELECT name, chinese FROM exam_result WHERE chinese >= 80 AND chinese <= 90 ;
2. IN
-- 查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
SELECT name, math FROM exam_result WHERE math IN ( 58 , 59 , 98 , 99 );
-- 使用 OR 也可以实现
SELECT name, math FROM exam_result WHERE math = 58 OR math = 59 OR math = 98 OR math = 99 ;

● 模糊查询:LIKE

-- % 匹配任意多个(包括 0 个)字符
SELECT name FROM exam_result WHERE name LIKE ' %' ; -- 匹配到孙悟空、孙权
-- _ 匹配严格的一个任意字符
SELECT name FROM exam_result WHERE name LIKE ' _' ; -- 匹配到孙权

● NULL 的查询:IS [NOT] NULL

-- 查询 qq_mail 已知的同学姓名
SELECT name, qq_mail FROM student WHERE qq_mail IS NOT NULL ;
-- 查询 qq_mail 未知的同学姓名
SELECT name, qq_mail FROM student WHERE qq_mail IS NULL;

2.2.8 分页查询 :LIMIT

-- 1
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3
OFFSET 0 ;
-- 2
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3
OFFSET 3 ;
-- 3 页,如果结果不足 3 个,不会有影响
SELECT id, name, math, english, chinese FROM exam_result ORDER BY id LIMIT 3 OFFSET 6 ;

2.3. 修改 :

-- 将孙悟空同学的数学成绩变更为 80
UPDATE exam_result SET math = 80 WHERE name = ' 孙悟空 ' ;
-- 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70
UPDATE exam_result SET math = 60 , chinese = 70 WHERE name = ' 曹孟德 ' ;
-- 将总成绩倒数前三的 3 位同学的数学成绩加上 30
UPDATE exam_result SET math = math + 30 ORDER BY chinese + math + english LIMIT
3 ;
-- 将所有同学的语文成绩更新为原来的 2
UPDATE exam_result SET chinese = chinese * 2 ;

2.4. 删除:

-- 删除孙悟空同学的考试成绩
DELETE FROM exam_result WHERE name = ' 孙悟空 ' ;
-- 删除整张表数据
-- 准备测试表
DROP TABLE IF EXISTS for_delete;
CREATE TABLE for_delete (
id INT ,
name VARCHAR ( 20 )
);
-- 插入测试数据
INSERT INTO for_delete (name) VALUES ( 'A' ), ( 'B' ), ( 'C' );
-- 删除整表数据
DELETE FROM for_delete;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL数据库和表基础操作 的相关文章

  • 数据聚合和缓存:如何按时间间隔快速绘制大型时间序列数据集的图表

    我有一个巨大的时间序列数据集 我想绘制图表 时间序列可以追溯到 5 年前 从后端的角度来看 以各种分辨率 间隔 显示这些数据的常用方法是什么 本质上我想绘制这样的数据图表 https bitcoinwisdom com markets bi
  • 在上下文中提取搜索字符串

    我正在尝试执行 MySQL 查询 在上下文中提取搜索字符串 因此 如果搜索是 mysql 我想从 body 列返回类似的内容 下载后只需几分钟MySQL安装程序即可使用 这就是我现在得到的 但它不起作用 因为它只是从正文字段中获取前 20
  • 如何使用wireshark清晰捕获mysql查询sql

    因为我们使用远程开发Mysql服务器 所以不能轻易检查查询sql 如果使用本地服务器可以tail f general log file查看调用某个http接口时执行了哪些sql 所以我安装了一个wireshark捕获这些从本地发送的查询sq
  • 无法在 .net core 2 中从 MySQL 构建“日期”类型列

    我已经开始了一个新的 net core 2 项目 我正在尝试将 MySQL 数据库导入实体框架 我使用此命令来搭建数据库 Scaffold DbContext server localhost port 3306 user id user
  • 从对象定义生成数据库表

    我知道有几种 自动 方法可以创建数据访问层来操作现有数据库 LINQ to SQL Hibernate 等 但我有点厌倦了 我相信应该有更好的做事方式 比如 在 Visio 中创建 更改表 使用 Visio 的 更新数据库 创建 更改数据库
  • MySQL - 多个结果集

    我正在使用 NET Connector 连接到 MySQL 在我的应用程序中 很少有线程使用相同的连接 因此如果 MySQLDataReader 尚未关闭并且某个线程正在尝试执行查询 则会出现该错误 已经有一个打开的 DataReader
  • AWS RDS MySql - 如何在设置“公开可用”后允许访问

    刚刚使用默认设置和用户 密码创建了新的 AWS RDS MySql 实例 我也将其设置为publicly available并在此过程中创建新的 VPC 目前无法从我的笔记本电脑连接到此 RDS mysql h endpoint u myu
  • MySQL 左连接 WHERE table2.field = "X"

    我有以下表格 pages Field Type Null Key Default Extra page id int 11 NO PRI NULL auto increment type varchar 20 NO NULL
  • 在同一查询中选择 Count of ip 和 Count of DISTINCT ip

    我有一个这样的表结构 TABLE NAME counter id datetime url ip 1 2013 04 12 13 27 09 url1 ip01 2 2013 04 13 10 55 43 url2 ip02 3 2013
  • 如何在查询语句之外从mysql查询中获取值?

    这是下面的函数console log function quo value value connection query SELECT role from roles where id 1 function error results fi
  • 连接到 OpenShift (Redhat Paas) mysql 实例

    我正在尝试将我的 C 应用程序与 openshift 数据库连接 但我得到了这个例外conn Open Eccezione gt MySql Data MySqlClient MySqlException 0x80004005 Unable
  • NHibernate - 无法执行查询 - 输入字符串的格式不正确

    我已经为此摸不着头脑有一段时间了 我不知道出了什么问题 概述 我的 MySQL 数据库中有两个表 两者都正确映射到数据库 我可以加载数据 并且我能够查询一个表 但不能查询另一个表 我研究过的解决方案 表和 C 代码之间的类型转换问题 映射问
  • 插入具有只读主键列的表

    我正在使用一个使用 sql server 数据库的应用程序 我试图在表中插入一行 如下所示 该表有一个主键 prodNum 这是自动生成的密钥 当我尝试向表中插入一行时 如下所示 在行中intResult oSglProdTableAdap
  • JDBC 错误:在结果集开始之前[重复]

    这个问题在这里已经有答案了 我在 Java Eclipse 中收到错误消息 我在 MySql 中有一个数据库 它有列 String user name int id time int id desk int user password 我想
  • Mysql带限制的删除语句

    我试图从表中删除行 但出现错误 DELETE FROM chat messages ORDER BY timestamp DESC LIMIT 20 50 我在 50 时收到此错误 您的 SQL 语法有错误 检查与您的 MySQL 服务器版
  • “修改列”与“更改列”

    我知道 我们不能使用重命名列MODIFY COLUMN语法 但我们可以使用CHANGE COLUMN syntax 我的问题是 主要用途是什么modify syntax 例如 ALATER TABLE tablename CHANGE co
  • 使用 Flyway 和 Hibernate 的 hbm2ddl 在应用程序的生命周期中管理数据库模式

    我正在开发 Spring Hibernate MySql 应用程序 该应用程序尚未投入生产 我目前使用 Hibernatehbm2ddl该功能对于管理域上的更改非常方便 我也打算用Flyway用于数据库迁移 在未来的某个时候 该应用程序将首
  • Tomcat 6找不到mysql驱动

    这里有一个类似的问题 但关于类路径 ClassNotFoundException com mysql jdbc Driver https stackoverflow com questions 1585811 classnotfoundex
  • SQLite 仅当值不为空时更新列

    Query UPDATE item table SET field1 field1 spanish field2 field2 spanish 问题 我怎样才能更新field1 with field1 spanish ONLY if fie
  • 使用 MYSQL 将 h:mm pm/am 时间格式插入数据库

    我正在尝试将以 h mm am pm 格式写入的时间插入到存储为标准 DATETIME 格式 hh mm ss 的数据库中 但我不知道如何将发布的时间转换为标准格式所以数据库会接受它 这是我到目前为止一直在尝试的 title POST in

随机推荐

  • 下载网页视频并自动合成视频

    本人博客已迁移至 https nasdaqgodzilla github io 1 首先使用Chrome打开网页 单击F12打开开发者工具 开始视频播放 在F12出来的界面中单击Network 在Network中有文件列表 检查当中是否存在
  • 星星之火-48:在LTE中,66.67us的符号发送时间是怎么来的呢?

    66 67us符号的发送时间是怎么来的呢 这就涉及到 发送一个符号所需的时间 即符号周期是怎么来的 1 先从频率的角度看子载波的频率 频分复用 1 LTE基带信号的带宽 1 4MHz 3MHz 5MHz 10MHz 15MHz 20MHz等
  • 企业微信回调接口验签

    文章目录 一 企业微信配置参数 二 验签 三 企业微信客户联系回调 四 相关工具类 企业微信提供了回调接口 允许企业服务商和企业应用接收到企业微信的事件通知和用户操作通知 在接收到回调通知时 需要进行验签操作 以确保通知的安全性和有效性 官
  • html+css+js

    2021年3月16日 一 标签内容 1 声明为HTML5文档 1 用于游览器正确显示网页 2
  • react项目搭建 (eslint+prettier)

    1 安装nodejs 安装git 安装vscode 安装yarn 2 npm install create react app yarn g 在yarn中安装react脚手架 3 在系统资源中配置path 在指定目录下create reac
  • JAVA面试(三)

    1 什么是本地调用 java编译器将包含本地方法的class对应的方法添加ACC NATIVE标识 而JVM负责将动态库加载到内存 Java执行引擎执行到本地方法时找到对应的函数 完成本地方法的调用 2 多线程 3 线程同步怎么实现 1 s
  • MFCC特征值详解

    看了网上的很多MFCC 依然没能够学号MFCC 因此糊了一段时间详细的看了下MFCC的内容 现在也算是对于MFCC有了更深入的理解了 不管是语音识别还是其他的一系列的识别大体都分为三个步骤 1 输入信号的预处理2 特征值提取3 相关算法的识
  • 薪资16K,在阿里外包工作是一种什么体验...

    我17年毕业于一个普通二本学校 电子信息工程学院 是一个很不出名的小本科 大学期间专业知识也没有去认真的学习 所以毕业的时候就随便找了一份工作 在一个小公司做功能测试 记得那时候税前薪资大概是7k左右 因为是在工厂 工作环境很差 也很危险
  • Fabric CA 1.4 官方文档中文版

    链接 Fabric CA中文文档 目录 概述 Fabric CA概述 快速上手 安装前提条件 安装软件 使用Fabric CA命令行 配置软件 Fabric CA 服务器 初始化服务器 启动服务器 配置数据库 配置LDAP 搭建集群 搭建多
  • moviepy快速切分视频并保存片段

    文章目录 1 直接使用ffmepg 2 使用moviepy本身 moviepy安装最新版本 pip install moviepy pre upgrade 版本是v2 0 0 dev2 有两种方法一种快速的 1 直接使用ffmepg fro
  • 基于STM32的DMX512开发笔记

    首先基本了解一下DMX512的基本协议 一 DMX512协议 DMX 是Digital MultipleX 的缩写 意为多路数字传输 DMX512控制协议是美国舞台灯光协会 usITT 于1990年发布的灯光控制器与灯具设备进行数据传输的工
  • 使用小波变换对图像进行去噪

    使用小波变换对图像进行去噪 实现效果 代码 import matplotlib pyplot as plt from skimage restoration import denoise wavelet estimate sigma fro
  • GAN_Unet模型实现

    文章目录 摘要 一 GAN 1 1 输入 输出 1 2 优化目标 1 3 缺点 1 4 CGAN 1 5 LSGAN 1 6 C LSGAN实现 1 7 判别器 总代码 二 Unet 2 1 编码器 2 2 编码器 2 3 效果 2 4 模
  • 深度学习(自编码器)

    深度学习目录 自适应线性单元 Widrow and Hoff 1960 神经认知机 Fukushima 1980 GPU 加速 卷积网络 Chellapilla et al 2006 深度玻尔兹曼机 Salakhutdinov and Hi
  • MVC笔记 初识模型(二)

    1 在视图中创建窗口 新建一个View视图 添加视图 选中复选框 创建强类型视图 需要输入的地方可以用MVC内置的HTML辅助方法来生成字段 需要显示标题的地方可以用 方法 需要显示文本的地方可以使用 方法 在MVC中 可以利用Html B
  • FPGA/IC 秋招笔试/面试题总结(续)

    请根据目录浏览 觉得有用三连支持一下也是一种鼓励 打印版半价半价 联系微信 Crazzy M 原创不易 100页 未经允许 请勿转载 FPGA IC 秋招笔试 面试题总结 目录展示 点击查看 内容展示 FPGA IC 秋招笔试 面试题总结
  • webpack-使用html-webpack-plugin和ejs-loader将侧栏、头部、底部公共html做成模板,并生成合并后的html页面...

    在学习前端自动化之前一直使用 PHP JSP 将在每个页面将头部 侧栏 底部等部分引入 现在前端 娱乐圈 一直噼里啪啦的每天出新东西 自从接触了前端自动化我就觉得这种工作可以交给前端了但一直没时间研究一下 最近有时间看一下 踩了好多坑终于成
  • 10:00面试,10:06就出来了,问题问的实在有点变态

    从小厂出来 没想到在另一家公司又寄了 到这家公司开始上班 加班是每天必不可少的 看在钱给的比较多的份上 就不太计较了 没想到8月一纸通知 所有人不准加班 加班费不仅没有了 薪资还要降30 这下搞的饭都吃不起了 还在有个朋友内推我去了一家互联
  • SVN经典目录结构说明

    SVN经典目录结构说明 SVN的经典目录包含trunk tags branches trunk trunk是主干 也就是主要工作的地方 也是最新的代码存放的地方 branches branches是分支的意思 分支开发和主线开发是可以同时进
  • MySQL数据库和表基础操作

    目录 一 数据库的基本操作 二 表的基本操作 1 表结构操作 2 表数据操作 CRUD增删查改 一 数据库的基本操作 创建数据库 create database 数据库名 切换数据库 use 数据库名 删除数据库 drop database