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 时间查询操作练习
- 时间类型相关概述
类型 | 大小(字节) | 范围 | 格式 | 用途 |
---|---|---|---|---|
date | 3 | 1000-01-01~9999-12-31 | YYYY-MM-DD | 日期值 |
time | 3 | -838:59:59’ ~ 838:59:59’ | HH:MM:SS | 时间值或持续时间 |
year | 1 | 1901~2155 | YYYY | 年份值 |
datetime | 8 | 1000-01-01 00:00:00 ~9999-12-31 23:59:59’ | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
timestamp | 4 | 1970-01-01 00:00:00 ~2038结束时间是第2147483647秒,北京时间2038-1-18 11:14:07 | YYYY-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 数据库名;查看当前选择的数据库select database();查看当前数据库包含的数据表show ta…...

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

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

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

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

C++ | 详细介绍缺省参数的作用
文章目录一、前言1、缺省参数概念2、缺省参数的使用规则二、全缺省参数【备胎是如何使用的♿】1、四种实参传递方式说明2、疑难细究三、半缺省参数【⭐】1、错误用法示范2、正确用法示范🔥实参缺省与形参缺省的混合辨析🔥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的快速入门
第一部分:基础知识常用命令: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的请求的区别 应用场景:Get是一个幂等请求,一般用于请求资源。post不是幂等请求,一般用于修改资源。缓存:Get请求一般缓存,Post一般不缓存报文格式:Get请求体一般为空,…...

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

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

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

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

PTA:L1-022 奇偶分家、L1-023 输出GPLT、L1-024 后天(C++)
目录 L1-022 奇偶分家 问题描述: L1-023 输出GPLT 问题描述: 实现代码: L1-024 后天 问题描述: 实现代码: 简单题,没写题解,看代码就能看懂 L1-022 奇偶分家 问题描述: 给…...

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

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

【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 删…...

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

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

kubernetes--监控容器运行时:Falco
目录 Falco介绍 Falco架构 Falco的安装 告警规则示列 威胁场景测试: 监控容器创建的不可信任进程(自定义规则) Falco支持五种输出告警方式falco.yaml: Falco告警集中化展示: Falco介绍 Falco是一个Linux安全工具…...

HTTP协议详解(上)
目录 前言: 认识URL HTTP协议方法 通过Fiddler抓包 GET和POST之间典型区别 header详解 HTTP响应状态码 常见状态码解释 状态码分类 HTTP协议报文格式 小结: 前言: HTTP协议属于应用层协议,称为超文本传输协议ÿ…...

java性能-原生内存-内存分析
原生内存最佳实践 内存占用 jVM使用的原生内存和堆内存总和就是一个应用程序的总内存——操作系统角度 jvm启动时候加载的类路径下的jar文件相关的内存和系统其他进程共享资源的可能 测量内存占用 线程是个例外——每当创建一个线程操作系统都会分配一些原生内存存储线程栈…...

c++类与对象
🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章 🔥座右铭:“不要等到什么都没有了,才下定决心去做” …...

Java并发编程与API详解
文章目录前言操作系统——进程和线程进程进程组成进程状态进程控制进程创建进程终止进程阻塞和唤醒进程通信线程线程组成线程状态线程控制线程的实现方式用户线程内核线程混合方式CPU调度调度的层次调度的实现调度器调度的时机、切换与过程进程调度的方式闲逛进程两种线程的调度…...

【冲刺蓝桥杯的最后30天】day5
大家好😃,我是想要慢慢变得优秀的向阳🌞同学👨💻,断更了整整一年,又开始恢复CSDN更新,从今天开始更新备战蓝桥30天系列,一共30天,如果对你有帮助或者正在备…...

大厂与小厂招人的区别,看完多少有点不敢相信
前两天在头条发了一条招人的感慨,关于大厂招人和小公司招人的区别。 大厂:有影响力,有钱,能够吸引了大量的应聘者。因此,也就有了筛选的资格,比如必须985名校毕业,必须35岁以下,不能…...

前端ES5对象特性
ES5对象特性 对象和函数的原型 JS中每一个对象都有一个特殊的内置属性,这个特殊的对象可以指向其他的对象 我们通过引用对象的属性key来获取一个value时,它会触发 Get 的操作首先检查该对象是否有对应的属性,如果有的话就使用对象内的如果…...

Linux入门介绍及Linux文件与目录结构
前言 本文小新为大家带来 Linux 入门介绍及Linux 文件与目录结构 相关知识,具体内容包括Linux入门介绍(包括:Linux概述,Linux与Windows区别,CentOS 下载地址),Linux文件与目录结构等进行详尽介绍…...

超赞,用python实现流媒体服务器功能,寥寥几句搞定。
步骤: 要使用Python将实时摄像机传送流写入H5页面,可以使用以下步骤。 1、安装必要的软件包。您需要安装OpenCV和Flask以及gunicorn 与 gevent 。您可以通过在终端中运行以下命令来执行此操作。 pip install opencv-python pip install Flask pip ins…...