Mysql数据库-基本表操作

1.表操作

  1. 创建表:CREATE TABLE table_name ( field1 datatype, field2 datatype, field3 datatype ) character set 字符集 collate 校验规则 engine 存储引擎;
    field 表示列名
    datatype 表示列的类型
    character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准
    collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准
    示例:create table users ( id int, name varchar(20) comment '用户名', password char(32) comment '密码是32位的md5值', birthday date comment '生日' ) character set utf8 engine MyISAM;

  2. 查看表结构:desc 表名;

  3. 修改某个表的结构,比如字段名字,字段大小,字段类型,表的字符集类型,
    表的存储引擎等等
    示例1:在users表添加一个字段,用于保存图片路径
    alter table users add assets varchar(100) comment '图片路径' after birthday;
    示例2:修改name,将其长度改成60
    alter table users modify name varchar(60);
    示例3:删除password列,删除字段及其对应的列数据都没了
    alter table users drop password;

  4. 删除表:drop table t1;

2.增

1.插入数据
表结构如图
在这里插入图片描述
单行数据 + 全列插入:INSERT INTO students VALUES (100, 10000, '唐三藏', NULL);
多行数据 + 指定列插入:INSERT INTO students (id, sn, name) VALUES (102, 20001, '曹孟德'), (103, 20002, '孙仲谋');
2.插入冲突:
由于 主键 或者 唯一键 对应的值已经存在而导致插入失败:INSERT INTO students (id, sn, name) VALUES (100, 10010, '唐大师') ON DUPLICATE KEY UPDATE sn = 10010, name = '唐大师';
由于数据冲突,使用ON DUPLICATE KEY UPDATE sn = 10010, name = '唐大师' 更新数据
3.替换
主键 或者 唯一键 没有冲突,则直接插入;
主键 或者 唯一键 如果冲突,则删除后再插入
REPLACE INTO students (sn, name) VALUES (20001, '曹阿瞒');
–将一张表的查询结果插入到另一张表:insert into no_duplicate_table (select distinct*from duplicate_table);
在这里插入图片描述

3.删

–删除孙悟空同学的考试成绩:delete from exam_result where name='孙悟空';
在这里插入图片描述
–删除整张表数据(慎用):delete from for_delete;
只是删除表中数据,表还在
在这里插入图片描述
–截断表(慎用):

  1. 只能对整表操作,不能像 DELETE 一样针对部分数据操作;
  2. 实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事
    物,所以无法回滚
  3. 会重置 AUTO_INCREMENT 项
TRUNCATE for_truncate;

截断整表数据,注意影响行数是 0,所以实际上没有对数据真正操作
再插入一条数据,自增 id 在重新增长
在这里插入图片描述

4.改

–将孙悟空同学的数学成绩变更为 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;

5.查

表结构如图
在这里插入图片描述
–全列查询:select *from exam_result;
在这里插入图片描述
–指定列查询:SELECT id, name, english FROM exam_result;
在这里插入图片描述
指定列名不按照表中的顺序来也可以,可自行调整:SELECT name,id, english FROM exam_result;
在这里插入图片描述
–查询字段为表达式:SELECT id, name, english + 10 FROM exam_result;在这里插入图片描述
SELECT id, name, chinese + math + english FROM exam_result;
在这里插入图片描述
–为查询结果指定别名:select id,name,math+chinese+english as 总分 from exam_result;
as可以省略
在这里插入图片描述
– 结果去重:SELECT distinct math FROM exam_result;
在这里插入图片描述
在这里插入图片描述
带条件查找(WHERE 条件)
比较运算符
在这里插入图片描述
=不支持NULL的比较,要比较NULL需要用到<=>、IS NULL、IS NOT NULL
图中两个比较的结果不同
在这里插入图片描述
逻辑运算符
在这里插入图片描述
–语文成绩在 [80, 90] 分的同学及语文成绩:select name,chinese from exam_result where chinese>=80 and chinese <=90;
select name,chinese from exam_result where chinese between 80 and 90;
在这里插入图片描述
在这里插入图片描述
–数学成绩是 78 或者 79 或者 98 或者 99 分的同学及数学成绩:数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
或:select math from exam_result where math in(78,79,98,99);
在这里插入图片描述
在这里插入图片描述
–查询姓孙的同学 及 孙某同学
(模糊匹配)查询姓孙的同学:select name from exam_result where name like '孙%';
% 匹配任意多个(包括 0 个)任意字符
在这里插入图片描述
(严格匹配)查询孙某同学:select name from exam_result where name like '孙_';
_ 匹配严格的一个任意字符
在这里插入图片描述
– 语文成绩好于英语成绩的同学:select name ,chinese ,english from exam_result where chinese>english;
在这里插入图片描述
–语文成绩 > 80 并且不姓孙的同学:select name ,chinese from exam_result where chinese>80 and name not like '孙%';
在这里插入图片描述
– 孙某同学,否则要求总成绩 > 200 并且 语文成绩 < 数学成绩 并且 英语成绩 > 80:select name ,chinese+math+english as 总分 from exam_result where (chinese+math+english>200) and (chinese<math) and (english>80) or name like '孙_';
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/de7aba7ec22548c184ab2b06ff2828d8.png
–查询 qq 号已知的同学姓名:SELECT name, qq FROM students WHERE qq IS NOT NULL;
–查询 qq 号已知的同学姓名:SELECT name, qq FROM students WHERE qq IS NULL;
查询结果排序:
– ASC 为升序(从小到大,默认)
– DESC 为降序(从大到小)
若查询结果不进行排序,则返回的顺序是未定义的
NULL 视为比任何值都小,降序出现在最下面
–查询同学及数学成绩,按数学成绩升序显示:select name,math from exam_result math order by math asc;
–查询同学及数学成绩,按数学成绩降序显示:select name,math from exam_result math order by math desc;
在这里插入图片描述
–查询同学各门成绩,依次按 数学降序,英语升序,语文升序的方式显示:select name,math,english,chinese from exam_result order by math desc , english asc , chinese asc; 在这里插入图片描述
–查询同学及总分,由高到低:select name,math+english+chinese as 总分 from exam_result order by 总分 desc;
ORDER BY 子句中可以使用列别名
在这里插入图片描述
– 查询姓孙的同学或者姓曹的同学数学成绩,结果按数学成绩由高到低显示:select name,math from exam_result where name like '孙%' or name like '曹%' order by math desc;
在这里插入图片描述
筛选分页结果
从 0 开始,筛选 n 条结果:limit n
从 s 开始,筛选 n 条结果:limit s,n
从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用:limit n offset s;
–按 id 进行分页,每页 3 条记录,分别显示 第 1、2、3 页:select id,name from exam_result order by id limit 3 offset 0;
select id,name from exam_result order by id limit 3 offset 3;
select id,name from exam_result order by id limit 3 offset 6;
在这里插入图片描述
–查找总分前三的同学,并降序显示:select id,name,chinese+math+english as 总分 from exam_result order by 总分 desc limit 6 offset 0;
注意:要先排序再分页
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/527809.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VP牛客小白月赛88(A---F)(收获很多)

感觉难度梯度有点大&#xff0c;前4个都十分基础&#xff0c;E和F比较的难&#xff0c;直接看题&#xff08;按照个人的收获从大到小排&#xff09; 可以用启发式合并但是太菜了还不会&#xff08;等以后来填坑&#xff09;&#xff0c;这里用map并查集的思想来十分巧妙地化解。…

LabelImg:一个简单易用的图像标注工具

目录 LabelImg是什么&#xff1f; 如何使用LabelImg进行图像标注&#xff1f; LabelImg的优势和应用场景 在哪里下载它 随着人工智能技术的不断发展&#xff0c;机器学习和深度学习在图像识别、目标检测等领域中得到了广泛的应用。而要训练一个有效的模型&#xff0c;通常需…

Apache服务的搭建与配置

一、apache安装 systemctl stop firewalldsystemctl disable firewalldsetenforce 0yum -y install httpdsystemctl start httpdnetstat -ntlp | grep 80 二、认识主配置文件 # vim /etc/httpd/conf/httpd.conf ServerRoot "/etc/httpd" #定义工作目…

复制表

目录 复制表 将部门 30 的所有员工信息保存在 emp30 表中 将复杂查询结果创建为表 只将 emp 表的结构复制为 empnull 表 从入门到总裁:​​​​​​https://blog.csdn.net/weixin_67859959/article/details/135209645 复制表 严格来说&#xff0c;复制表不是复制操作&am…

Intel® Extension for PyTorch*详细安装教程

最近在研究Intel的pytorch的加速拓展Intel Extension for PyTorch*,但是发现官网的文档全是英文的&#xff0c;不太好找安装教程。所以特此分享Intel Extension for PyTorch*的详细安装教程。 文章目录 一、安装所需系统要求1.1 硬件需求1.2 软件需求 二、准备2.1 安装驱动程序…

Kafka 面试题及答案整理,最新面试题

Kafka中的Producer API是如何工作的&#xff1f; Kafka中的Producer API允许应用程序发布一流的数据到一个或多个Kafka主题。它的工作原理包括&#xff1a; 1、创建Producer实例&#xff1a; 通过配置Producer的各种属性&#xff08;如服务器地址、序列化方式等&#xff09;来…

Spring Boot整合MyBatis Plus配置多数据源

Spring Boot 专栏&#xff1a;https://blog.csdn.net/dkbnull/category_9278145.html Spring Cloud 专栏&#xff1a;https://blog.csdn.net/dkbnull/category_9287932.html GitHub&#xff1a;https://github.com/dkbnull/SpringBootDemo Gitee&#xff1a;https://gitee.com/…

[Angular 基础] - 表单:模板驱动表单

[Angular 基础] - 表单&#xff1a;模板驱动表单 之前的笔记&#xff1a; [Angular 基础] - routing 路由(上) [Angular 基础] - routing 路由(下) [Angular 基础] - Observable Angular 内置两种表单的支持&#xff0c;这篇写的就是第一种&#xff0c;即模板驱动表单 (Tem…

vue学习笔记22-组件传递多种数据类型props效验

组件传递多种数据类型 通过props传递数据&#xff0c;不仅可以传递字符串类型的数据&#xff0c;还可以是其他类型&#xff0c;例如&#xff1a;数字、对象、数组等&#xff0c;但实际上任何类型的值都可以作为props的值被传递&#xff08;即组件与组件之间的传递是没有限制的…

MySQL-----存储过程

▶ 介绍 存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合&#xff0c;调用存储过程可以简化应用开发人员的很多工作&#xff0c;减少数据在数据库和应用服务器之间的传输&#xff0c;对于提高数据处理的效率是有好处的。 存储过程思想上很简单&#xff0c;…

[金三银四] 系统调用相关

2.36 系统调用的详细流程 Linux 在x86上的系统调用通过 int 0x80 实现&#xff0c;用系统调用号来区分入口函数。操作系统实现系统调用的基本过程是&#xff1a; 应用程序调用库函数&#xff08;API&#xff09;&#xff1b;API 将系统调用号存入寄存器&#xff08;EAX&#…

Git分支管理(Git分支的原理、创建、切换、合并、删除分支)

系列文章目录 文章一&#xff1a;Git基本操作 文章目录 系列文章目录前言一、Git分支是什么二、Git分支的原理三、创建分支四、切换分支五、合并分支六、删除分支 前言 在上一篇文章中&#xff0c;我们学习了如何使用Git的一些基本操作&#xff0c;例如安装Git、创建本地仓库…