一文搞定mysql基础增删改查

目录

(一)数据库操作

(1)显示数据库

(2)创建数据库

(3)使用数据库

(4)删除数据库

(二)表操作

(1)创建表

(2)查看表结构

(3)删除表

(三)常用数据类型总结

(1)数值类型

(2)字符串类型

(3)日期类型

(四)新增

(1)单行全列插入

(2)多行指定列插入

(五)查询

(1)全列查询(危险操作)

(2)指定列查询

(3)查询字段为表达式

(4)别名

(5)去重(distinct)

(6)排序

6.1asc升序

6.2desc降序 

6.3多字段排序

 (7)WHERE:条件查询

7.1运算符汇总

7.2简单用例 

(8)LIMIT:分页查询

(六)修改(update set)

(七)删除(delete)


(一)数据库操作

写在前面:本文只写到数据库中基本的CRUD,其他如联合查询,外内自链接,数据库约束并未提及,为避免浪费读者时间,请寻找其他文章

(1)显示数据库

显示所有数据库

show databases;

(2)创建数据库

如果没有名为test的数据库则创建一个名为test的数据库,并用utf8mb4数据集

create database if not exists test character set utf8mb4;

(3)使用数据库

使用test数据库

 use test

(4)删除数据库

删除test数据库(危险操作

drop database test;

(二)表操作

想要进行表操作需要先进入数据库(use 数据库名)后才能进行

(1)创建表

创建一个名为student的表,字段有id,name,password,age,棕色字段为数据类型,comment为对字段添加的说明,相当于注释

create table student(id int,

name varchar(15) comment '名字',

password varchar(30) comment '密码',

age int

);

(2)查看表结构

查看student表的结构

desc student;

(3)删除表

删除student表

--删除student表

drop table student;

--如果存在student表则删除student表

drop table if exists student;

(三)常用数据类型总结

数据类型为设置字段时,需要指定的类型

(1)数值类型

数据类型大小解释java中对应类型
bit[(M)]M指定位数,默认是1二进制数,M范围从1到64(64位系统)数值范围为2^M-1常用Boolean对应bit用来表示,此时默认1位,用来表示true和false
tinyint1字节Byte
smallint2字节Short
int4字节Integer
bigint8字节Long
float(M,D)8字节单精度浮点数,M指定长度,D指定小数位数,会发生精度丢失Float
double(M,D)8字节Double
decimal(M,D)M或D中的最大值+2双精度,M指定长度,D指定小数点位数。精确数值BigDecimal
numeric(M,D)M或D中的最大值+2同decimalBigDecimal

(2)字符串类型

数据类型大小解释对应java类型
varchar(size)0-65535字节可变长字符串String
text0-65535字节长文本数据String
mediumtext0-16777215字节中等长度文本数据String
blob0-65535字节二进制形式长文本数据byte[]

(3)日期类型

数据类型大小解释对应java类型
datetime8字节范围1000-9999年,不会进行时区的检索及转换

java.util.Date,

java.sql.timestamp

timestamp4字节范围1970-2038年,自动检索当前时区并转换

java.util.Date,

java.sql.timestamp

(四)新增

此处新增指的是对表中字段的操作

假设我们创建了一个表,表中字段有姓名,年龄,性别,学号,和自增id,如下

CREATE TABLE student (  
    id SERIAL PRIMARY KEY, --自动生成唯一id
    student_id VARCHAR(20) NOT NULL UNIQUE, -- 学号,假设是VARCHAR类型,且每个学号都是唯一的  
    name VARCHAR(100) NOT NULL, -- 姓名  
    age INT CHECK (age >= 0), -- 年龄,假设不允许负数  
    gender ENUM('male', 'female', 'other') NOT NULL -- 性别,使用ENUM类型限制可能的值  
);  
  

(1)单行全列插入

就是插入一行,将所有字段都插入进去

 insert into student values(1,'54221332','张三',20,'male');

(2)多行指定列插入

表中只指定student_id,name,age字段进行插入,没有指定id和gender,但因为id是自增类型,会自动填充,gender是枚举类型,会自动将性别设置为默认的值,若是其他普通字段,未插入的部分默认值为null.

insert into student(student_id,name,age) values('12345','李四',21);

(五)查询

此处查询依然以上方的student表为模板

(1)全列查询(危险操作)

查询student表中的所有列

select * from student

(2)指定列查询

只查询姓名和年龄

 select name,age from student;

(3)查询字段为表达式

查询姓名和年龄+10

select name,age + 10 from student;

(4)别名

将student_id的列设置别名为code

select student_id as code ,name from student;

结果:

(5)去重(distinct)

下图是有年龄重复的student表

对age重复的进行去重查询 

select distinct age from student;

结果:

(6)排序

注意:null数据视为比其他任何数据都小

6.1asc升序

将查询结果按照年龄升序排序

 select * from student order by age asc;

结果:

6.2desc降序 

将查询结果按照年龄降序排序

 select * from student order by age desc;

结果:

6.3多字段排序

对多个字段进行排序,排序优先级随书写顺序

首先对age进行降序排序,再对id进行升序排序

  select * from student order by age desc ,id asc;

 (7)WHERE:条件查询

7.1运算符汇总

运算符说明
>,>=,<,<=大于,大于等于,小于,小于等于
=等于,null不安全,null = null结果是null
<=>等于,null安全,null<=>null结果为true
!=,<>不等于
between a0 and a1范围匹配,[a0,a1],如果a0<=value<=a1,返回true
in(option,....)如果是option中的任意一个,返回true
is null是null 返回true
is not null不是null返回true
like模糊匹配,%表示任意多个任意字符(包括0个),_表示任意一个字符
and多个条件都是true,结果才为true
or任意一个条件为true,结果就是true
not条件是false,结果才是true

7.2简单用例 

 查询name为李四,age大于10的结果(and, = ,>)

select * from student where name = '李四' and age>10;

查询年龄在10到20之间的数据(between  and)

select * from student where age between 10 and 20;

 查询年龄是21,10,15的数据(in)

select * from student where age in(21,15,10);

模糊查询 (like)

 查询姓王的二字的人的数据

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

查询姓王的人的数据

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

查询年龄不是20岁的数据 (not)

 select * from student where not age  = 20;

(8)LIMIT:分页查询

如果一个表中的数据很多,如果一下查出来完可能会导致数据库卡死,所以需要对查出来的数据进行分页操作,保证一次查到的数据不会太多

(由于需要的测试用例原因,我把表名从student,改成了students)

查询数据库中十条数据,并显示第一页的内容

limit 10 :意思是查询十条数据

offset 0:意思是从第一条数据开始(0,就像数组下标一样,第一个是0,然后是1,2,3)

如果你想看第二页的offset应该是 10,因为一页10个数据,从第11个数据开启第二页

 select * from students limit 10 offset 0;

(六)修改(update set)

将students 表中姓王的学生的年龄都改成20岁

update students set age = 20 where name like '王%';

(七)删除(delete)

删除表中的数据

删除表中年龄大于20的学生的数据

delete from students where age >20;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值