MYSQL|MYSQL基础

目录
一、数据库的数据类型
1.数值类型
2.字符串类型
3.日期类型
二、数据库基本操作
1.数据库操作
1.1创建数据库
1.2查看所有数据库
1.3使用指定数据库
1.4删除数据库(非常危险)
三、数据表的基本操作
1.简单表操作
1.1创建表
1.2查看所有表
1.3查看指定表结构
1.4删除表(非常危险)
2.插入操作
2.1.全列插入
2.2指定列插入
2.3一次插入多条记录
3.查询
3.1全列查询
3.2 指定列查询
3.3查询字段为表达式
3.4查询字段并指定别名
3.5去重查询
3.6排序
3.7条件查询
3.8分页查询
4. 修改
5.删除


一、数据库的数据类型 使用MySQL数据库存储数据时,不同的数据类型决定了 MySQL存储数据方式的不同。为此,MySQL数据库提供了多种数据类型,其中包括整数类型、浮点数类型、定点 数类型、日期和时间类型、字符串类型、二进制…等等数据类型。
1.数值类型 分为整型和浮点型:

数据类型 大小 说明 对应Java类型 对应C类型
BIT [ (M) ] M指定位数,默认为1 二进制数,M范围从1到64,存储数值范围从0到2^M-1 常用Boolean对BIT,此时默认位数是1位,即只能存0和1 char[ ]
TINYINT 1个字节 都是整型,但字节大小依次增大 Byte signed char
SMALLINT 2个字节 Short short int
INT 4个字节 Integer int
BIGINT 8个字节 Long long long
FLOAT(M,D) 4个字节 单精度,M指定长度,D指定小数位数,会发生精度丢失 Float float
DOUBLE(M,D) 8个字节 双精度,M指定长度,D指定小数位数,会发生精度丢失 Double double
DECIMAL(M,D) M/D 最大值+2 双精度,M指定长度,D指定小数位数,精度数值 BigDecimal char[ ]
NUMERIC(M,D) M/D 最大值+2 双精度,M指定长度,D指定小数位数,精度数值 BigDecimal char[ ]
对于整型类型的范围:
1. 有符号范围: -2 ^ (类型字节数*8-1) 到 2^ (类型字节数*8-1) -1,如 int 是4个字节,就是 -2^31到2^31-1
2.无符号范围: 0到 2^ (类型字节数*8-1) -1, 如 int 就是2^32-1
尽量不使用 unsigbed,对于int类型可能存放不了的数据, unsigned int 同样可能存放不了,与其如此,还不如设计的时候,将int类型提升为bigint类型
2.字符串类型
数据类型 大小 说明 对应Java类型 对应C类型
VARCHAR(SIZE) 0-65,535字节 可变长度字符串 String char[ ]
TEXT 0-65,535字节 长文本数据 String char[ ]
MEDIUMTEXT 0-16,777,215字节 中等长度文本数据 String char[ ]
BLOB 0-65,535字节 二进制形式的长文本数据 byte[ ] char[ ]
3.日期类型
数据类型 大小 说明 对应Java类型 对应C类型
DATETIME 8个字节 范围从1000年到9999年,不会进行时区的检索及转换 java.util.Data、
java.sql.Timestamp
MYSQL_TIME
TIMESTAMP 4个字节 范围从1970年到2038年,自动检索当前时区并进行转换 java.util.Data、
java.sql.Timestamp
MYSQL_TIME
二、数据库基本操作
----单行注释 #--单行注释 /*...*/--多行注释

在cmd中的复制粘贴:选中内容,Enter 键复制,鼠标右键 粘贴
1.数据库操作 1.1创建数据库
create database [数据库名];

MYSQL|MYSQL基础
文章图片


1.2查看所有数据库
show databases;

MYSQL|MYSQL基础
文章图片


1.3使用指定数据库
use [数据库名];

MYSQL|MYSQL基础
文章图片


1.4删除数据库(非常危险)
drop database [数据库名];

MYSQL|MYSQL基础
文章图片


三、数据表的基本操作
1.简单表操作 1.1创建表
create table [表名] (若干个列名);

MYSQL|MYSQL基础
文章图片

MYSQL|MYSQL基础
文章图片



1.2查看所有表
show tables;

MYSQL|MYSQL基础
文章图片


1.3查看指定表结构
desc [表名];

MYSQL|MYSQL基础
文章图片


1.4删除表(非常危险)
drop table [表名];

MYSQL|MYSQL基础
文章图片

2.插入操作 2.1.全列插入
insert into [表名] values(对应的列数据);

MYSQL|MYSQL基础
文章图片

2.2指定列插入
insert into [表名] (若干个指定列) values (对应的列数据); -- 没有被插入的列会被默认填充为NULL

MYSQL|MYSQL基础
文章图片

--select * from 表示全列查找

2.3一次插入多条记录
insert into [表名] values (对应的列数据),(对应的列数据),(对应的列数据)....;

MYSQL|MYSQL基础
文章图片


3.查询 3.1全列查询
select * from [表名];

MYSQL|MYSQL基础
文章图片

3.2 指定列查询
select [列名], [列名]... from [表名];

MYSQL|MYSQL基础
文章图片


3.3查询字段为表达式
select [表达式] from [表名];

MYSQL|MYSQL基础
文章图片


表达式计算得到的结果类型不一定和原来的列类型完全一致,会尽可能保证数据是正确的.
3.4查询字段并指定别名
select [列名/表达式] as [别名] from [表名]; --as可以省略

MYSQL|MYSQL基础
文章图片

3.5去重查询
单列
select distinct [列名] from [表名];

对这一列相等的数据进行去重(原来的表不受影响)MYSQL|MYSQL基础
文章图片


多列
select distinct [列名], [列名] ... from [表名]; --指定的列完全相同才会被合并在一起

MYSQL|MYSQL基础
文章图片


使用distinct的时候,必须把对应的列都放到distinct之后,
所有的select操作都不会对原来的表造成任何改变.基于原来的表,生成一个结果表
想要修改,得用insert,update,dalete....
3.6排序
单列
select [列名],[列名]... from [表名] order by [列名] asc; --升序

MYSQL|MYSQL基础
文章图片


select [列名],[列名]... from [表名] order by [列名] desc; --降序

MYSQL|MYSQL基础
文章图片


字段为表达式
select [表达式] from [表名] order by [表达式] desc; --降序

MYSQL|MYSQL基础
文章图片


使用别名
select [表达式] as [别名] from [表名] order by [别名] desc; --降序

MYSQL|MYSQL基础
文章图片

多个列
列越靠前,优先级越高
select * from [表名] order by [列名1] desc, [列名2] desc... ; --先按[列名1]排序,如果相等,再按照[列名2]进行排序

MYSQL|MYSQL基础
文章图片


如果有空值NULL,则NULL会被认为是最小的.
MYSQL|MYSQL基础
文章图片

3.7条件查询
[特别重要]:WHERE
比较运算符:
运算符 说明
>,>=,<,<= 大于,大于等于,小于,小于等于
= 等于(不是赋值),NULL不安全,例如NULL = NULL的结果是NULL
<=> 等于,NULL安全,例如NULL <=> NULL的结果是TRUE(1)
!=,<> 不等于
BETWEEN x AND y 表示当值在[x,y]闭区间之间,就返回TRUE(1)
IN(若干个选项) 当值与其中任意一个匹配,就返回TRUE(1)
IS NULL 是NUL
IN NOT NULL 不是NULL
LIKE 模糊匹配,%表示任意多个(包括0个)任意字符; _表示任意一个字符
逻辑运算符:
运算符 说明
AND 逻辑与,多个条件必须都为TRUE(1),结果才是TRUE(1)
OR 逻辑或,任意一个条件为TRUE(1),结果就为TRUE(1)
NOT 逻辑取反,条件为TRUE(1),结果为FALSE(0)
select * from [表名] where [语句];

1. where条件可以使用表达式,但不能使用别名。
2. and的优先级高于or,在同时使用时,需要使用小括号()包裹优先执行的部分

例:
a)查找chinese为NULL的同学信息
MYSQL|MYSQL基础
文章图片


MYSQL|MYSQL基础
文章图片

b) 查找英语成绩不及格的同学信息
MYSQL|MYSQL基础
文章图片

c)查找数学成绩>语文的同学信息
MYSQL|MYSQL基础
文章图片

d)查找总分在250以下的同学信息
MYSQL|MYSQL基础
文章图片


e)查询语文成绩大于80 并且英语成绩也大于80 的同学信息
MYSQL|MYSQL基础
文章图片

f)查询语文成绩在[80, 90]的同学信息
MYSQL|MYSQL基础
文章图片

--不能把前后两个数字写反

MYSQL|MYSQL基础
文章图片

g)查询语文成绩是84.8, 85.7或者72.3的同学信息
MYSQL|MYSQL基础
文章图片

h)查询所有姓张的同学信息
MYSQL|MYSQL基础
文章图片

MYSQL|MYSQL基础
文章图片



--like 操作要搭配通配符来使用 --%:匹配多个任意字符 --_:匹配一个任意字符

i)查询所有同学中语文成绩为 7 开头的同学信息
MYSQL|MYSQL基础
文章图片

3.8分页查询
-- 起始下标为 0 -- 从 0 开始,筛选 n 条结果 select ... from [表名] [where ...] [order by ...] limit n; -- 从 s 开始,筛选 n 条结果 select ... from [表名] [where ...] [order by ...] limit s, n; -- 从 s 开始,筛选 n 条结果,比第二种用法更明确,建议使用 select ... from [表名] [where ...] [order by ...] limit n offset s;

a)查找同学信息中总分最高的前3名.
MYSQL|MYSQL基础
文章图片

b)查找同学信息中总分最高的 4 -> 6名
MYSQL|MYSQL基础
文章图片

如果limit后面的数字太大,会超出记录的数目,但是返回结果不会有任何的错误
如果 offset后面的数字超出记录的数目,就会得到一个空值
MYSQL|MYSQL基础
文章图片

4. 修改
update [表名] set [列名] = [修改的值],[列名] = [修改的值] ... [where...];

a)将ID为3的英语成绩改成90
MYSQL|MYSQL基础
文章图片

update每次修改几行记录路是不确定的 ,具体取决于where中的条件怎么写,得看where过滤之后剩下多少记录
b)将张灵玉的语文改为60,数学改为70,英语改为80
MYSQL|MYSQL基础
文章图片

c)将所有同学的语文成绩都减10
MYSQL|MYSQL基础
文章图片



d)将总成绩倒数3名的同学的语文
MYSQL|MYSQL基础
文章图片

修改完的值不能超过指定列的数据类型的范围
在MYSQL中,NULL做任何的运算之后,还是为NULL
5.删除
delete from [表名] [where ...];

a)删除张之维同学的信息
MYSQL|MYSQL基础
文章图片

b)删除所有信息
MYSQL|MYSQL基础
文章图片

【MYSQL|MYSQL基础】

    推荐阅读