数据库 MySQL入门(基本的增删改查)
Posted WhiteShirtI
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库 MySQL入门(基本的增删改查)相关的知识,希望对你有一定的参考价值。
mysql属于关系型数据
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
常见数据库:MySQL,Oracle等
优点:
1、易于维护:都是使用表结构,格式一致
2、使用方便:SQL语言通用,可用于复杂查询
3、复杂操作:支持SQL,可用于一个表以及多个表之间复杂的查询
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写
2、固定的表结构,灵活度稍欠
3、对于传统关系型数据库来说,在高并发读写需求下,硬盘I/O是一个很大的瓶颈
非关系型数据库严格上是一种数据结构化存储方法的集合,可以是文档或者键值对等
常见数据库:NoSQL,redis,mongodb等
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
2、速度快:非关系型数据库l可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
3、高扩展性;
4、成本低:非关系型数据库部署简单,基本都是开源软件
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠
注意事项:
- 每一条数据库操作语句都以;结尾,因为mysql支持换行操作
- mysql数据库中对大小写不敏感
- 创建的库、表、字段名都不能以数字开头,且都应该避免与关键字的冲突,如果非要使用,可以用两个反引号 `` 将名字括起来
库的操作
1)查看mysql数据库所有的库
show databases;
2)创建一个数据库
//db_test为库名
create database db_test;
//创建数据库之前可以判断库名是否存在
//存在就不创建,不存在则创建
create database if not exists db_test;
3)删除一个数据库
//db_test为库名
drop database db_test;
4)选择你要使用的数据库
use db_test
5)查看当前所使用的数据库
select database();
mysql中的常用的数据类型
数值类型
数据类型 | 大小 | 备注 |
---|---|---|
INT | 4字节 | 整形 |
DECIMAL(M,D) | M/D最大值+2 | 双精度,M指定长度,D表示小数点位数,整数部分长度M-D,小数部分如果超过D会保留D位小数 |
字符串类型
数据类型 | 大小 | 备注 |
---|---|---|
VARCHAR(SIZE) | 0~65535字节 | 可变长度字符串string |
TEXT | 0~65535字节 | 长文本数据string |
日期类型
数据类型 | 大小 | 备注 |
---|---|---|
DATETIME | 8字节 | 范围从1000到9999年,不会进行时区的检索及转换 |
TIMESTAMP | 4字节 | 范围从1970到2038年,自动检索当前时区并进行转换 |
表的操作
1)查看库中的所有表
show tables;
2)创建一个表
CREATE TABLE table_name (
//属性名在前 属性类型名在后
field1 datatype,
field2 datatype,
field3 datatype
);
//tb_stu为表名
create table tb_stu(
id int,
name varchar(32),
age int,
chinese decimal(3,1),
math decimal(3,1),
birth datetime
);
//也可以先判断库中是否存在同名的表
//存在则不创建,不存在再创建
create table if not exists tb_stu(
...
);
3)查看表的结构
desc tb_stu;
4)删除一个表
drop table tb_stu;
增删改查(CRUD)
一)添加数据 insert
1、指定列的插入
//[]中的命令可忽略
insert [into] tb_stu(id, name, age, chinese, math, birth)
values(1, "WhiteShirtI", 22, 90.6, 95.5, "1999-09-23 12:12:12");
2、全列插入
//插入的数据要与表中字段的顺序相同
insert tb_stu
values(2, "ChenHuanGuang", 22, 92.6, 96.5, "1999-09-23 12:12:12");
3、多行插入
insert tb_stu
values(3, "NiuYaNan", 22, 99.5, 92.5, "1999-12-12 12:12:12"),
(4, "KeLe", 5, 35.6, 59.9, now());
二)查询数据 select
1、全列查询
select * from tb_stu;
2、指定列查询
select name, age from tb_stu;
3、排序查询
//默认是升序排序
//将数学成绩由低到高排序并输出
select * from tb_stu order by math [asc];
//将数学成绩由高到低排序并输出
select * from tb_stu order by math desc;
//多列排序-在第一列相同的情况下针对第二列进行排序
//将语文成绩由高到低排序并输出
//如果语文成绩相同,则将相同的字段按数学成绩由低到高排序
select * from tb_stu order by chinese desc, math asc;
4、分页查询(通常搭配排序一起使用)
//查询前两条数据
select * from tb_stu limit 2;
//查询表中数学成绩最低的两门同学
select * from tb_stu order by math limit 2;
//按数学成绩由低到高中第2位同学开始,数学成绩最低的1名同学
select * from tb_stu order by math limit 1 offset 1;
//每页显示10条数据,如何查询第五页的数据
select * from tb_stu limit 10 offset 50;//50是10*5得来的
5、查询字段为表达式
//查询每个人的总分
select name, chinese + math from tb_stu;
//修改字段的别名
select *, chinese + math sum from tb_stu;
6、去重查询
//根据某个字段进行去重,查看去重后这个字段的数据
select distinct birth from tb_stu;
7、条件查询 where
比较运算符 | 说明 |
---|---|
>,>=,<,<= | 大于,大于等于, 小于,小于等于 |
= | 等于,用于判断数据是否相同(存在的前提下) |
<=> | 等于,判断字段数据是否为NULL |
!=, <> | 不等于 |
IS NULL | 查询某字段为NULL的字段 |
IS NOT NULL | 查询某字段不为NULL的字段 |
IN | 查询指定字段中符合要求的记录 |
BETWEEN…AND… | 查询某个字段在结余两个值之间的记录 |
LIKE | 模糊匹配。% 表示任意多个(包括 0 个)任意字符;_ 表示任意一个字符 |
//查询id大于3的记录
select * from tb_stu where id > 3;
//查询id不等于3的记录
select * from tb_stu where id <> 3;
select * from tb_stu where id != 3;
//查询数学成绩不为NULL的记录
select * from tb_stu where math IS NOT NULL;
//查询年龄为22和5的记录
select * from tb_stu where age IN(22,5);
//查询数学成绩在55-95之间的记录
select * from tb_stu where math BETWEEN 55 AND 95;
//查询名字含有a的记录
select * from tb_stu where name like "%a%";
//查询名字以c开头的记录
select * from tb_stu where name like "c%";
逻辑运算符 | 说明 |
---|---|
AND | 与 |
OR | 或 |
NOT | 非 |
//查询数学成绩在55-95之间的记录
select * from tb_stu where (math>55 AND math<95);
//查询数学成绩或者语文成绩在95分以上的记录
select * from tb_stu where (math>95 OR chinese>95);
//查询成绩低于60分的记录
mysql> select * from tb_stu where NOT math>60;
三)修改数据 update
修改通常搭配条件where来使用
//修改id为3的记录,将其年龄改为18
update tb_stu set age=18 where id = 3;
四)删除数据 delete
删除通常搭配条件where来使用
//删除年龄为1的记录
delete from tb_stu where age = 1;
推荐阅读
以上是关于数据库 MySQL入门(基本的增删改查)的主要内容,如果未能解决你的问题,请参考以下文章