当前位置: 首页 > news >正文

MySQL基础操作指南:第一篇

MySQL基础操作指南

一、数据库操作

1.1 概念阐述

基本操作语法结构
创建数据库create database 数据库名 character set utf8;
删除数据库drop database 数据库名
选择数据库use 数据库名;
查看当前选择的数据库select database();
查看当前数据库包含的数据表show tables;
查看数据库建表语句show create database 数据库名;

1.2 相关代码

# 创建数据库
create database mark_test character set utf8;
# 查看数据库建表语句
show create database mark_test;
# CREATE DATABASE `mark_test` /*!40100 DEFAULT CHARACTER SET utf8 */
# 切换数据库
use mark_test;
# 查看数据库表
show tables;
# 查看当前所在的数据库
select database();
# 删除数据库
drop database mark_test;


二、数据库表操作

2.1 概念阐述

基本操作语法结构
创建表create table表名[列及类型];
查看表结构desc 表名;
修改表alter table 表名 add[change]drop 列名;
修改表名称rename table 原名 to 新名;
查看表的创建语句show create table 表名;
删除表drop table 表名;

2.2 数据表约束条件

约束条件说明
primary key主键(唯一、不能为空)
not null不为空
null允许为空
auto_increment自增长(一般和主键结合使用)
unique唯一,不能重复
foreign key外键,指向另一个表的主键

2.3 相关的代码

# 创建表
create table sutdent(id int primary key auto_increment,name varchar(20),bothday datetime,sex char(1)
)charset =utf8;# 查看表结构
desc sutdent;# 修改表
# 1.添加字段
alter table sutdent add tel int(11);
alter table sutdent add class int after id;
desc sutdent;
# 2. 修改数据类型
alter table sutdent modify class varchar(10);
desc sutdent;
# 3. 删除字段
alter table sutdent drop class;
desc sutdent;
# 4. 修改字段名
alter table sutdent change bothday birthday datetime;
desc sutdent;
# 5. 表重命名(2法)
alter table sutdent rename studen;
desc studen;
rename table studen to student;
desc student;# 删除表
drop table student;
desc student;

2.4 alter表字段操作

  • 添加字段(add)
    • alter table 表名 add 字段名 数据类型;
    • alter table 表名 add 字段名 数据类型 first;
    • alter table 表名 add 字段名 数据类型 after 字段名; # 在那个字段名之后添加
  • 删除字段(drop)
    • alter table 表名 drop字段名;
  • 修改数据类型(modify)
    • alter table 表名 modify 字段名 新数据类型;
  • 修改字段名(change)
    • alter table 表名 change 旧字段名 新字段名 新数据类型;
  • 表重命名(rename)
    • alter table 表名 rename 新表名;

2.5 练一练

作业要求:

  • 1、创建老师表
  • 2、给教师表添加 tel char (11) not null 这个字段;
  • 3、在age之后添加height字段;
  • 4、删除height字段;
  • 5、修改age字段为最小的整数字段;
  • 6、把sex字段改成gender;
  • 7、把老师表改名。
# 创建老师表
create table LaoShi(id int primary key auto_increment,name varchar(20) not null,sex char(1) not null
)charset = utf8;
desc LaoShi;
# 添加tel字段
alter table LaoShi add tel char(11) not null;
# 添加age字段
alter table  LaoShi add age int not null after sex;
# 添加height
alter table LaoShi add height float not null after age;
# 修改age类型
alter table LaoShi modify age TINYINT;
# 修改sex字段名为gender
alter table LaoShi change sex gender char(5);
# 修改表名
alter table LaoShi rename teachers;


三、数据库DML操作

3.1 DML基本操作

  • 插入数据(增)
    • 全列插入:insert into 表名 values(值1,值2,…);
    • 缺省插入:insert into 表名(列1,列2,…) values(值1,值2,…);
    • 批量插入:insert into 表名 values (值1,值2,…), (值1,值2,…), …;
  • 更新数据(改)
    • update 表名 set 列1=值1,… where 条件;
  • 删除数据(删)
    • delete from 表名 where 条件;
    • delete from 表名;
    • truncate table 表名;

3.2 相关代码

create table students(id int primary key auto_increment,age int not null,name varchar(10)
)engine =innodb charset =utf8;# 查看表结构
desc students;
# 插入数据# 1、 全列插入
insert into students values(0, 15, "小明"); # 要与表字段名一一对应
select *from students;# 查看表已有数据# 2、 缺省插入
alter table students modify age int; # 修改约束
insert into students(id, name) values(0, "小芳");# 3、 批量插入
insert into students values(0, 13, "张三"),(0, 14,"李四"),(0, 18,"王五");# 更新数据
update students set age=18 where age>=14;
update students set age=5 where name="小芳";
# 删除数据
delete from students where age<=5;
select *from students;


四、数据库DQL操作

4.1 数据库数据表常见查询语句

  • 全部查询

    select *from 表名
    
  • 条件查询

  • select *from 表名 where 条件;
    
  • 算法运算符:+、-、*、/、%(求余)…

  • 比较运算符:>、<、=、!= <>(不等于)、<= ,>=, between(两者之间) and … ,in…

  • 逻辑运算符:and,or,not/! ,…

  • 位运算符:&,|,^,!,<<,>>

4.2 其他查询

  • 模糊查询

  • 分页查询

  • 排序查询

4.3 题目练习

4.3.1 常见查询操作练习

创建学生表,并插入数据

# 创建表
create table student(id int auto_increment primary key ,age int,sid char(20),sex bit,name char(20),isDelete bit default 0
)engine =innodb charset =utf8;
# 查看表结构
desc student;
# 插入数据
insert into student(age, sid, sex, name) values
(18, "0001", 1, "liudehua"),
(20, "0002", 0, "zhanghuimei"),
(23, "0003", 1, "daotang"),
(15, "0004", 0, "yunduo"),
(30, "0005", 1, "zhangxueyou"),
(32, "0006", 1, "zhangguorong"),
(22, "0007", 0, "liruotong"),
(40, "0008", 1, "zhongminghgiu"),
(50, "0009", 1, "zhouxingchi"),
(30, "0010", 1, "zhazhahui"),
(60, "0011", 1, "renxiaoqi");# 缺省插入
insert into student(age,sex,name) values(18, 1, "liudehua");
insert into student(age,sid, sex,name) values(18, '', 1, "liudehua");
insert into student(age,sex,name) values(36, 1, "高磊"),(20, 1, "高鹏鹏"),(30, 1, "高子龙"),(20, 1, "高兴") ;
insert into student(age,sex,name) values(34, 1, "高%");
insert into student(age,sex,name) values(34, 1, "高%1"),(34, 1, "高%2"),(34, 1, "高%3");

1、查询年龄在30岁以下的学生信息

2、查询年龄在20~30岁之间的学生信息(包含)

3、查询学生年龄小于20岁或大于30岁的学生信息

4、查询学生id为1,3,5的学生信息。

5、查询学生sid不为空的学生信息

# 全部查找
select *from student;# 1、查询年龄在30岁以下的学生信息
select *from student where age<=30;# 2、查询年龄在20~30岁之间的学生信息(包含)
select * from student where age between 20 and 30;
select * from student where age>=20 and age<=30;
# 3、查询学生年龄小于20岁或大于30岁的学生信息
select *from student where age<20 or age>30;
# 4、查询学生id为1,3,5的学生信息。
select *from student where id in(1,3,5);
# 5、查询学生sid不为空的学生信息
select *from student where sid is not null;  # 会把空字符的也保留下来。
select *from student where sid !=''; # 应该使用这种形式查看非空信息

4.3.2 时间查询操作练习

  • 时间类型相关概述
类型大小(字节)范围格式用途
date31000-01-01~9999-12-31YYYY-MM-DD日期值
time3-838:59:59’ ~ 838:59:59’HH:MM:SS时间值或持续时间
year11901~2155YYYY年份值
datetime81000-01-01 00:00:00 ~9999-12-31 23:59:59’YYYY-MM-DD HH:MM:SS混合日期和时间值
timestamp41970-01-01 00:00:00 ~2038结束时间是第2147483647秒,北京时间2038-1-18 11:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳
  • 时间日期函数:

    • now()返回服务器当前时间,格式对应datetime
    • curdate()返回当前日期,格式对应date
    • curtime()返回当前时间,格式对应time
  • 时间操作

  • 日期运算:select *from 表名 where 字段名 运算符(时间-interval 时间 间隔单位)

练习1

'''
题目要求:1、创建马拉松表 marathon2、编号,姓名,注册时间,成绩;id int, name varchar(32), registDateTime, score time3、给表添加数据,注册时间分别 now、curdate、curtime。对比效果。
'''
# 建表
create table marathon(id int auto_increment primary key ,name varchar(32),regist datetime,score time
)engine =innodb charset =utf8;
desc marathon;# 插入数据
insert into marathon values(0, "aaa", now(),now());
insert into marathon values (0, "bbb", curdate(),curdate());
insert into marathon values (0, "ccc", curtime(),curdate());
select *from marathon;

练习2:在练习1的基础上增加操作

"""
题目要求:1、向表marathon中添加一些数据,查询马拉松成绩大于2:30分的人(两种写法)2、查找马拉松表距现在一周以内的报名信息。
"""
# 添加一些数据
insert into marathon(id, name, regist, score) values
(null, "ddd", "2022-12-01", "20:50:30"),
(null, "eee", "2022-11-01", "20:50:25"),
(null, "fff", "2022-12-03", "20:50:30"),
(null, "ggg", "2022-12-14", "20:10:30"),
(null, "mmm", "2023-03-03", "20:10:00"),
(null, "ggg", "2022-03-04", "20:40:20");
select *from marathon;# 查找马拉松成绩时间大于2:30分的人
select * from marathon where score>='2:30:00';
select * from marathon where score>(time('3:00:00') - interval 30 minute );# 查找马拉松表距现在一周以内的报名信息。
select *from marathon where regist>(now() - interval 7 day);

4.3.3 其他查询操作练习

题目要求:在之前创建的学生表中,完成以下操作:

​ 1、查询姓高的学生信息
​ 2、查询姓高并且姓名由两个汉字组成的学生信息
​ 3、查询学生姓名为高%的学生信息
​ 4、查询前5条学生信息
​ 5、查询名字不为空,sid不为空的所有学生信息,按照年龄降序输出。

# 1、查询姓高的学生信息
select * from student where name like '高%'; # %代表以”高“开头的任意字符
# 2、查询姓高并且姓名由两个汉字组成的学生信息
select *from student where name like '高_'; # _代表以”高“开头的一个字符
# 3、查询学生姓名为高%的学生信息
select * from student where name='高%';
# 4、查询前5条学生信息
select * from student limit 5;
# 5、查询名字不为空,sid不为空的所有学生信息,按照年龄降序输出。
select *from student where name!='' and sid!='' order by age desc;

相关文章:

MySQL基础操作指南:第一篇

MySQL基础操作指南 一、数据库操作 1.1 概念阐述 基本操作语法结构创建数据库create database 数据库名 character set utf8;删除数据库drop database 数据库名选择数据库use 数据库名&#xff1b;查看当前选择的数据库select database();查看当前数据库包含的数据表show ta…...

C#中包含?的运算符使用汇总

总目录 文章目录总目录前言一、使用概述二、使用说明1.可空类型修饰符2.三目运算符3.空合并运算符4.NULL 检查运算符结语前言 本文将含有&#xff1f;运算符的各种使用进行汇总&#xff0c;方便系统性记忆和知识回顾。 一、使用概述 用法描述?可空类型修饰符?:三目运算符?…...

剑指 Offer 56 - I. 数组中数字出现的次数

剑指 Offer 56 - I. 数组中数字出现的次数 难度&#xff1a;middle\color{orange}{middle}middle 题目描述 一个整型数组 numsnumsnums 里除两个数字之外&#xff0c;其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n)&#xff0c;空间复杂度…...

MySQL事务日志

1.概述 事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢? 事务的隔离性由 锁机制 实现而事务的原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证 REDO LOG 称为 重做日志&#xff0c;提供再写入操作&#xff0c;恢复…...

极速开发,无限可能,2023网易低代码大赛全新赛季启动

去年火爆的低代码大赛还犹在目&#xff0c;近800人用轻舟低代码平台畅享开发乐趣。这不&#xff0c;2023网易低代码大赛即刻启动&#xff0c;3月6日至3月27日限时开放报名&#xff0c;全新角逐&#xff0c;正式展开&#xff01;1\ 获胜者可得万元大奖、猪厂工作机会 /Low Code …...

C++ | 详细介绍缺省参数的作用

文章目录一、前言1、缺省参数概念2、缺省参数的使用规则二、全缺省参数【备胎是如何使用的♿】1、四种实参传递方式说明2、疑难细究三、半缺省参数【⭐】1、错误用法示范2、正确用法示范&#x1f525;实参缺省与形参缺省的混合辨析&#x1f525;3、小结四、缺省参数的实际应用 …...

【sdx62】sdx62分析代码中Serial Number的寄存器地址及获取Serial Number的方法

计算Serial Number寄存器地址 查看Serial Number ./boot_images/boot/QcomPkg/SocPkg/Library/XBLLoaderLib/boot_info_log.c /* Array of raw fuse addresses and names to be logged during boot loginitialization. Array must be null terminated. */ static struct boot_…...

MATLAB的快速入门

第一部分&#xff1a;基础知识常用命令&#xff1a;clc %清除命令行窗口 clear %清空工作区数据 cd %显示或改变工作目录 clf %清除图形窗口 help %打开帮助文档 save %保存内存变量到指定文件 hold %保持图形 close %关闭当前图窗 quit %退出变量&#x…...

Python中赋值、引用、深浅拷贝的区别和联系

文章目录一、对象的唯一id二、赋值三、可变对象和不可变对象四、函数的参数传递五、深拷贝和浅拷贝六、举个栗子6.1 不可变对象的拷贝6.2 可变对象的拷贝6.3 可变对象改变外层元素6.4 可变对象改变内层元素七、总结一、对象的唯一id python中的所有对象都有自己的唯一id&#…...

春招冲刺(十一):前端面试之网络总结

网络总结 Q1: GET和POST的请求的区别 应用场景&#xff1a;Get是一个幂等请求&#xff0c;一般用于请求资源。post不是幂等请求&#xff0c;一般用于修改资源。缓存&#xff1a;Get请求一般缓存&#xff0c;Post一般不缓存报文格式&#xff1a;Get请求体一般为空&#xff0c;…...

Mybatis插件

插件使用 动手实现plugin 首先我们需要实现一下这个Interceptor&#xff0c;其中plugin和setProperties方法可以不实现&#xff0c;plugin是因为已经有了完善的逻辑&#xff0c;而setProperties&#xff0c;如果不需要在intercept()中使用属性&#xff0c;也可以不设置。然后…...

计算机学科专业基础综合科目(408)

文章目录408 第一章 数据结构数据是客观事物的符号表示&#xff0c;是对现实世界的事物采用计算机能够识别&#xff0c;存储和处理的形式进行描述的符号的集合。 数据元素是数据的基本单位。一个数据元素由若干个数据项组成。数据项又成为简单数据项及复合数据项两种。简单数据…...

centos7安装教程

1.点击文件–新建虚拟机 2.根据图片一直下一步或者做一些改动 3. 点击自定义硬件&#xff0c;点击浏览选中下载好的ISO文件 4.配置完成后启动虚拟机 5.选择语言&#xff0c;中英文都可&#xff0c;按需求选择 6.进行设置目标位置&#xff0c;配置分区 7.选择网络和主机名 8.配置…...

Kafka 重平衡

Kafka 重平衡协调者RebalanceRebalance 条件Rebalance 避免Rebalance : 让单 Group 下所有的 Consumer 怎么消费订阅主题的所有分区Rebalance 时 , 所有 Consumer 要共同参与 (无法消费)&#xff0c;在协调者 (Coordinator) 协调下&#xff0c;完成订阅主题分区的分配 协调者…...

PTA:L1-022 奇偶分家、L1-023 输出GPLT、L1-024 后天(C++)

目录 L1-022 奇偶分家 问题描述&#xff1a; L1-023 输出GPLT 问题描述&#xff1a; 实现代码&#xff1a; L1-024 后天 问题描述&#xff1a; 实现代码&#xff1a; 简单题&#xff0c;没写题解&#xff0c;看代码就能看懂 L1-022 奇偶分家 问题描述&#xff1a; 给…...

IDEA插件开发入门.02

前言许久没更新IDEA插件开发系列了。最近刚好在汇总日常开发中常见的代码“异味”&#xff0c;共享文档复制黏贴略显麻烦&#xff0c;所以想着是否可以搞一个IDEA插件来帮忙收集常见代码&#xff0c;毕竟IDEA作为后端程序员必备的开发工具&#xff0c;显然会方便很多。于是&…...

如何用 23 种编程语言说“Hello World”

在编程的世界里&#xff0c;" Hello World " 往往是开发者开始学习一种新语言时写的第一个程序。这个简单的程序会将 “Hello World“ 输出在我们的屏幕上。看似很简单的行为&#xff0c;实际上对于每一个新学习编程语言的人来说&#xff0c;它代表着新的起点。那么&…...

【Linux快速入门】文件目录操作

文章目录概念1. Linux文件系统概述2. Linux文件目录结构3. Linux文件和目录操作3.1 文件操作3.1.1 创建文件3.1.2 复制文件3.1.3 移动文件3.1.4 删除文件3.1.5 查看文件3.1.6 输出指令3.1.7 >和>>指令3.2 目录操作3.2.1 创建目录3.2.2 复制目录3.2.3 移动目录3.2.4 删…...

字体反爬慢慢总结破解方式

什么是字体反爬 网页开发者自己创造一种字体&#xff0c;因为在字体中每个汉字都有其代号&#xff0c;那么以后再网页中不会直接显示这个文字的效果。而是显示其代号&#xff0c;因此即使获取了网页的文本内容。也只是获取到文字的代号&#xff0c;而不是文字本身。 简单来说&…...

Kafka 位移提交

Kafka 位移提交自动提交手动提交Consumer 的消费位移 : 记录 Consumer 下一条消息的消费位移 如 : Consumer 已消费 5 条消息 (位移: 0 - 4) , 此时 Consumer 位移 5 : 指向下一条消息的位移 提交位移 (Committing Offsets) : Consumer 向 Kafka 汇报位移数据 Consumer 能同…...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

第25节 Node.js 断言测试

Node.js的assert模块主要用于编写程序的单元测试时使用&#xff0c;通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试&#xff0c;通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...

现代密码学 | 椭圆曲线密码学—附py代码

Elliptic Curve Cryptography 椭圆曲线密码学&#xff08;ECC&#xff09;是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础&#xff0c;例如椭圆曲线数字签…...

三体问题详解

从物理学角度&#xff0c;三体问题之所以不稳定&#xff0c;是因为三个天体在万有引力作用下相互作用&#xff0c;形成一个非线性耦合系统。我们可以从牛顿经典力学出发&#xff0c;列出具体的运动方程&#xff0c;并说明为何这个系统本质上是混沌的&#xff0c;无法得到一般解…...

Xen Server服务器释放磁盘空间

disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...

Java + Spring Boot + Mybatis 实现批量插入

在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法&#xff1a;使用 MyBatis 的 <foreach> 标签和批处理模式&#xff08;ExecutorType.BATCH&#xff09;。 方法一&#xff1a;使用 XML 的 <foreach> 标签&#xff…...

C++.OpenGL (20/64)混合(Blending)

混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

Python竞赛环境搭建全攻略

Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型&#xff08;算法、数据分析、机器学习等&#xff09;不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...

2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案

一、延迟敏感行业面临的DDoS攻击新挑战 2025年&#xff0c;金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征&#xff1a; AI驱动的自适应攻击&#xff1a;攻击流量模拟真实用户行为&#xff0c;差异率低至0.5%&#xff0c;传统规则引…...