初始数据库(mysql)

这篇博客介绍了MySQL数据库的基础知识,包括数据库的概念、数据类型如数值、字符串和日期类型,以及增删改查的基本操作。详细讲解了如何使用SQL进行数据操作,并提供了各种示例,如条件查询、分页查询和时间戳的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初识数据库(MYSQL)

数据库是什么?

数据库是用来组织数据,提供功能:增删改查 。数据库来进行对数据的管理。使用的是SQL语言。Mysql只是一种具体的工具。

数据库都有哪些?

Oracle:(甲骨文)数据库领域一哥,收费。Mysql被收购 --》开发MariaDB

SQlite:安卓机内置。

SQL Server :微软 和windows平台进行捆绑

Redis: Hbase: MongoDB: NoSql 数据库 非关系型数据库

关系型数据库:对数据库的约束比较严格使用表来存储。

非关系型数据库:对数据的约束不够强,通过文档结构来存储。

mysql的服务器是本体用来存储数据

客户端是用户和数据库之间沟通的桥梁

mysql 和 sql有什么区别 mysql是一种软件 sql是一种编程语言

数据库是一类软件依赖很多数据结构 数据结构一种学科 更加抽象

数据库中的类型 每一列都有自己的类型

数据库数据类型

数值类型

BIT【M】 m指定位数 默认为1 二进制从1到64

TINYINT 1字节 byte

SMALLINT 2字节 short

INT 4字节 int

BIGINT 8字节 long

FLOAT(M,D)4字节 M长度 D小数位数 float(不够精确)IEEE754标准

DOUBLE(M,D)8字节 double

DECIMAL(M,D)(M/D最大值+2)双精度 M指长度 D小数位数

NUMERIC(M,D) 和DECIMAL一样

字符串类型

VAECHAR(SIZE) 0-65535字节 可变长度 String

TEXT 0-65535字节 长文本数据 String

MEDIUMTEXT 0-16777215字节 中度长度文本 string

BLOB 0-65535 字节 二进制形式文本 byte[]

日期类型

DATETIME 8字节 1000-9999 不进行时区转换 java.util.Date java.sql.Timestamp

TIMESTAMP 4字节 1970-2038 自动检索时区进行转换 java.util.Date java.sql.Timestamp

时间戳:占用空间小 方便计算 (日志)

增删改查(基础)

数据库的使用

显示数据库:show databases;

创建数据库: CREATE DATABASE 【IF NOT EXISTS】 db_test2 【CHARACTER SET utf8mb4】;

使用数据库: use db_test2;

删除数据库:drop database if exists db_test2;

表的使用

先选中数据库:use 数据库名;

创建表:

create table [IF not EXISTS] 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
    );
可以使用comment增加字段说明 --

查看表的结构:desc 表名;

删除表: drop table if exists 表名;

默认表名列名不能使用关键字,但可以使用反引号引起来` `;

针对表的增删改查

**新增:**INSERT 【INTO】 表名 VALUES (100, 10000, ‘唐三藏’, NULL);

单行插入 数据类型必须和列匹配

指定列多行新增:

INSERT 【INTO】 表名 (id, sn, name) VALUES

(102, 20001, ‘曹孟德’),

(103, 20002, ‘孙仲谋’);

在插入时间的时候 insert into 表名 values(1,now());插入当前时间

insert into 表名 values(1,‘2021-05-29 10:75:00’);

也可以只插入日期 不能插入时间

设计表的时候 设置成为 datetime 不用timestamp 更不用字符串 datetime 会进行合法性校验

**查询:**全列查询 SELECT * FROM 表名; (临时表并不会存储在磁盘)

指定列查询 SELECT id, name, english FROM 【表名】;

查询字段表达式:SELECT id, name, chinese + math + english FROM 表名;(新的列的类型和之前不同)

别名 :通过AS来起别名

SELECT id, name, chinese + math + english 【as 】totle FROM 表名;

去重:DISINCT 多个行重复了 去掉重复的 去除多列则相当于按组查询 去除每一列重复的

SELECT DISTINCT math ,english FROM exam_result;

排序 ORDER BY

ASC 升序 DESC 降序

select * from 表名 order by 列名 desc; 默认升序

多列排序 先按照第一列排序 如果相同按照第二列 以此类推。

条件查询 where+具体的查询条件

运算符

= null=null 结果是null 不安全 <=> null<=>null 结果是true

不相等!= <>

BETWEEN a AND b [a,b]

is null is not null 空和非空

like 模糊匹配 %表示多个包括(0)任意字符 _任意一个字符

AND 多个条件必须是true or 任意一个为true NOT 条件为true 结果为false

AND优先级高于or

总分小于200分

SELECT name, chinese + math + english 总分 FROM exam_result WHERE chinese + math + english < 200;

(where 语句中不能使用别名)

查询语文成绩大于80分,且英语成绩大于80分的同学

SELECT * FROM exam_result WHERE chinese > 80 and english > 80;

查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩

SELECT name, math FROM exam_result WHERE math IN (58, 59, 98, 99);

SELECT name FROM exam_result WHERE name LIKE ‘孙%’;-- 匹配到孙悟空、孙权

SELECT name FROM exam_result WHERE name LIKE ‘孙_’;-- 匹配到孙权

查询空置<=> is null

分页查询(目的和条件查询类似 防止大数据太多 导致数据库卡死) LIMT

select * from 表名 limit 3 0开始检索3条

select * from 表名 order by Chinese asc limit 2 ,3 select * from 表名 order by Chinese asc limit 3 offset 2; 语文成绩按照升序从第二个开始检索3条

修改

UPDATE 表名 set 列名 =值 加上条件【where 】 【order by 】【limit】

将总成绩倒数前三的 3 位同学的数学成绩加上 30 分

UPDATE exam_result SET math = math + 30 ORDER BY chinese + math + english LIMIT 3;

多列修改 用逗号隔开。

删除

DELETE FROM 表名 [WHERE …] [ORDER BY …] [LIMIT …]

删除整张表 不写where字句 但是和drop table 表名不一样 前者表的本身还在 后者整张表都不在了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

力争做大牛的小王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值