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

mysql基本用法

mysql基本用法

</h1> <div class="clear"></div> <div class="postBody"> <div id="cnblogs_post_body" class="blogpost-body cnblogs-markdown">

Mysql是一个关系型数据库管理系统,关系数据库是表组成的。sql语句方便在一个表以及多个表之前做非常复杂的数据查询。非关系型数据库是以键值的方式存储的。

mysql特点是开源 免费 使用范围广,跨平台,提供了多种语言调用的API,是学习互联网公司数据库的首选。

数据库操作

创建数据库:

复制create database python_test_01 charset=utf8;

删除数据库:

复制drop database python_test_01;

选择数据库:

复制use python_test_01;

mysql数据类型

mysql支持多种类型,大郅可以分为三类:数值,日期/时间和字符串(字符)类型

  1. 整形

    mysql数据类型含义(有符号)
    tinyint(m)一个字节 范围(-128~127)
    smallint(m)2个字节 范围(-32768~32767)
    mediumint(m)3个字节
    int(m)4个字节
    bigint(m)8个字节
  2. 浮点型(float double)

    mysql数据类型含义
    float(m,d)单精度浮点型 m总个数,d小数位
    double(m,d)双精度浮点型 m总个数,d小数位
  3. 定点数

    浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值

    decimal(m,d)参数 m <65 是总个数,d<30 且d<m是小数位

utf-8

一个英文字符等于一个字节,一个中文三个字节

mysql数据类型含义
char(n)固定长度,最多255个字符
varchar(n)固定长度,最多65535个字符
tinytext可变长度
text可变长度
mediumtext可变长度
longtext可变长度

char和varchar:

  1. char(n)若存入字符数小于n,则以空格不起,查询时再将空格去掉,所以char类型存储的字符串末尾时不能有空格
  2. char(n)固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节
  3. char类型的字符串检索速度要比varchar类型的快

日期时间类型

mysql数据类型含义
date日期'2021-4--7'
time时间'15:25:13'
datetime日期时间'2021-4-7 15:26:52'
timestamp自动存储记录修改时间

若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间

数据类型的属性

mysql关键字含义
NULL数据列可以包含NULL值
not null数据列不允许包含null值
default默认值
primary key主键
auto_increment自动递增
unsigned无符号
character set name指定一个字符集

数据库操作

查看数据库下有哪些表

use 数据库名;

查看当前数据库下有哪些表

show tables;

查看表结构

desc 表名;

插入数据

insert into 表名 values()

insert into classes values(0,'学前班')

查询数据

select * from 表名;(查询所有记录)

select id ,name from 表名(查询指定字段)

主键相关操作

删除主键

-- alter table test01 change id id int
-- alter table test01 drop primary key

创建主键及复合主键

create table test(
id int auto_increment not null,
name varchar(30),
primary key(id,name)
)

创建表后加主键

create table test02(
id int,
name varchar(30)
);

alter table test02 add primary key(id);
alter table test02 change id id int auto_increment;

查询

使用as给字段起别名(给长的字段取别名)

select id as c from student;

可以通过as给表起别名(用在连表查询里,表名比较长的情况)

select stu.id,stu.name from students as stu;

在select后面列前使用distinct可以消除重复的行

select distinct name from student;

我们想查找一下名字为张三的学生?

select * from students where name='张三';

条件查询

使用where对表中的数据筛选,结果为true的行会出现在结果集中

where后面支持多种运算符,进行条件的处理

比较运算符

逻辑运算符

模糊查询

范围查询

空判断

语法格式

复制select 字段1,字段2from表名 where 条件; selectid,namefromclasswherename ='小哈';

比较运算符

例1:查询编号大于3的学生

select id,name,age from student where id>3;

例2:查询编号不大于4的学生

select id , name from student where id <=4;

例3:查询姓名不是‘'小儿'的学生

select * from students where name !='小儿';

例4:查询没删除的学生

select * from students where id_Delete =0;

逻辑运算符

and or not

例5:查询编号大于3的女同学

select * from student where id >3 and gender ='女';

例6:查询编号小于4或没被删除的学生

select * from students where id<4 or is_delete -0;

例7:查询年龄不为空的学生

select * from students where age is not null;

范围查询

between .....and (相当于 <= 和>=)

查询年龄在20岁到30岁之间的学生

select name from students where age between 20 and 30

模糊查询

like

%表示任意多个任意字符

例7:查询姓张的学生

select * from student where name like '张%';

例8;查询姓张,名是一个字的学生;

select * from student where name like '张_';

例9:查询姓王或柳的学生

select name from students where name like '王%' or name like '柳%';

范围查询

in 表示在一个非连续的范围内

例10:查询编号是1或3或8的学生

select * from students where id in (1,3,8);

例11:查询编号为3至8的学生

select * from students where id between 3 and 8;

例12:查询编号为3至8的男生

select * from students where (id between 3 and 8) and gender =1;

优先级

优先级由高到低的顺序为:小括号,not,比较运算符,逻辑运算符, and比or先运算。如果同时出现并希望先算or,需要结合()使用。

修改删除数据

修改数据语法结构

update 表名 set 字段名 =’值', 字段名=‘值’ where 条件;

如果不加where全部更新,更新时一定要加where条件;

删除数据语法结构

delete from 表名; 删除全部数据

删除名字是一年级的班

delete from class where name='一年级';

根据条件删除

delete from students where id =1;

排序

倒序

(asc(正序),desc(倒序))

select * from sutdents order by age desc;

聚合函数

为了快速得到统计数据,经常会用到如下5个聚合函数

总数

count(*)表示计算总数

例1:查询学生总数

select count(id) from students;

最大值

max(*)

查询女生编号的最大值

select max(id) from students where gender =2;

最小值

min(*)

查询编号最小

select min(id) from students;

求和

sum() 表示求例的总和

select sum(id) from students;

平均值

avg()

例:求男生平均编号值

select avt(id) from students;

分组

group by

将查询结果按照一个或多个字段进行分组,字段值相同的为一组

group by + having

group by 可以加where条件,where条件剥削加以 group by前面

having作用和where 一样,但having只能用于group by

连接查询

mysql支持三种类型的连接查询

内连接查询:查询的结果为两个表匹配到的数据(inner join)

select 字段 from 表名 inner join 表名2 on 关联条件

select * from teacher as a inner join students as b on a.id=b.id;

右连接查询(right join:右表持有的数,对于左表中不存在数据使用null填充

左连接查询(left join ):左表持有的数据,对于右表中不存在的数据使用null填充

事务

事务四大特性(ACID)

  • 原子性(atomicity)
  • 一致性(consistency)
  • 隔离性(isolation)
  • 持久性(durabilty)

个很好的事务处理系统,必须具备这些标准特性:

原子性(atomicity)
一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性

一致性(consistency)
数据库总是从一个一致性的状态转换到另一个一致性的状态。(在前面的例子中,一致性确保了,即使在执行第三、四条语句之间时系统崩溃,支票账户中也不会损失200美元,因为事务最终没有提交,所以事务中所做的修改也不会保存到数据库中。)

隔离性(isolation)
通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见的。(在前面的例子中,当执行完第三条语句、第四条语句还未开始时,此时有另外的一个账户汇总程序开始运行,则其看到支票帐户的余额并没有被减去200美元。)

持久性(durability)
一旦事务提交,则其所做的修改会永久保存到数据库。(此时即使系统崩溃,修改的数据也不会丢失。)

索引

当数据库中数据量很大时,查找数据会变得很缓慢

优化方案:索引

索引是一种特殊的文件,它们包含着对数据表里所有记录的引用指针。更通俗的说,数据库索引好比是一本书的目类,能加快数据库的查询速度。

索引的目的在于提高查询速度,可以类比字典,如果要查'mysql'这个词,我们肯定要定位到m字母,再找剩下的ysql.

它们的原理都是一样的,通过不断地缩小想要或地数据地范围来筛选处最终想要地结果,同时把随机地事件变成顺序地事件

要注意的是,建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。对于一个经常需要更新和插入的表格,就没有必要为一个很少使用的where字句单独立索引会占用磁盘空间建立索引了,对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。
主键,唯一,普通,联合

三范式

  • 第一范式(确保每列保持原子性)
  • 第二范式(确保没列都和主键相关)
  • 第三范式(确保每列都和主键列直接相关,而不是间接相关)
分类: Mysql
<div class="post-meta-item post-meta-disclaimer"> 免责声明:本内容来自平台创作者,博客园系信息发布平台,仅提供信息存储空间服务。 </div>
<div id="blog_post_info">
好文要顶 关注我 收藏该文 微信分享
乐乐乐乐乐乐樂
粉丝 -4关注 -0
+加关注
0
0
<a href="https://www.cnblogs.com/luckyletop/p/14623578.html" class="p_n_p_prefix">« </a> 上一篇: <a href="https://www.cnblogs.com/luckyletop/p/14623578.html">posted @2021-04-07 17:14乐乐乐乐乐乐樂 阅读(72) 评论(0) 收藏 举报
</div>
http://www.jsqmd.com/news/474311/

相关文章:

  • 针对YOLOv11进行fp16和int8量化,显著提升推理速度(C++) (包含完整模型转换流程和代码)
  • Alpamayo-R1-10B实战落地:物理仿真+VLA联合调试长尾场景的完整工作流
  • 【死锁】死锁的产生条件与解决方案(全方位结构化详解)
  • AI教材编写秘籍大公开!低查重AI写教材工具,快速打造专业教材!
  • some notes about new conception 1-4
  • Llama-3.2V-11B-cot在Qt桌面应用中的集成:开发跨平台AI助手
  • YOLO12快速上手:3步完成图片检测,实时标注结果可视化
  • Step3-VL-10B实战教程:WebUI插件开发+自定义工具函数集成方法
  • 2026金丝楠木优质供应商TOP5专业推荐:金丝楠排行、金丝楠推荐、金丝楠木排行、金丝楠木推荐、金丝楠厂家、金丝楠木厂家选择指南 - 优质品牌商家
  • Python基于flask-django学生选课成绩管理系统的设计与实现
  • 光通信颠覆性跨越!我国光子芯片异质集成技术突破581Gbps速率纪录
  • 表情密文翻译器源码HTML源码
  • 【游戏开发】全新 100 条 3D 游戏开发 AI 提示词系列第二弹之高级图形与着色器篇
  • 三菱PLC药片自动装瓶机控制系统设计:探索电气控制的奇妙世界
  • 判断企业是否需要WMS的核心标准
  • 2026食品级碳酸氢铵生产企业优质推荐榜:农用碳铵/农用级碳酸氢铵/农用级碳铵/工业碳铵生产企业/工业级碳酸氢铵生产企业/选择指南 - 优质品牌商家
  • OFA-Image-Caption模型部署与Java后端集成实战:SpringBoot服务构建指南
  • 云端部署 OpenClaw 通过插件操作本机浏览器
  • Qwen2.5-VL-7B-Instruct部署案例:Kubernetes集群中多模态服务编排
  • 使用 NEURAL MASK 与 Python 爬虫构建自动化图像素材增强流水线
  • LeetCode 3296. 移山所需的最少秒数 技术解析(含完整可运行代码)
  • 2026新建公路路口哨兵高性价比供应商推荐:雷达测速仪安装、雷达测速仪生产厂家、固定式雷达测速仪、平安路口弯道哨兵选择指南 - 优质品牌商家
  • HFSS建模仿真实战:从基础设置到T形波导优化
  • Nunchaku-flux-1-dev辅助Agent系统开发:任务规划与执行
  • 线性方程组迭代解法实战:雅可比、Gauss-Seidel与SOR算法的MATLAB实现与性能对比
  • 低显存也能玩Qwen-Image-Layered?优化配置让24G显卡流畅运行
  • 因子图 vs 图优化:傻傻分不清?本文彻底讲透两者的本质区别
  • 运营同学不用愁了!输入 URL 几分钟搞定专业宣传视频
  • GLM-OCR开源模型部署详解:对比传统软件安装的优势
  • Qt开源背后的那些秘密