目录
- 1.MySQL的安装
- 2.MySQL的基本操作
- 2.1 展示数据库
- 2.2 创建数据库
- 2.3 选中数据库
- 2.4 删除数据库
- 2.5 常用数据类型
- 2.5.1 整形
- 2.5.2 浮点数
- 2.6 创建表
- 2.7 查看表
- 2.7 查看表结构
- 2.8 删除表
- 3.数据库增删改查
- 3.1 单行插入
- 3.2 多行插入
- 3.3 插入日期
- 3.4 select查询
- 3.4.1 select
- 3.4.2 查询一列或多列
- 3.4.3 查询字段为表达式
- 3.4.4 查询字段指定别名
- 3.4.5 查询结果去重
- 3.4.6 排序
- 3.4.7 where筛选
- 3.4.8 模糊查询:like
- 3.4.9 NULL 的查询:IS [NOT] NULL
- 4.分页查询
- 5.update
- 6.delete删除
- 6.1 delete和drop的区别
1.MySQL的安装
可以参考这篇博客:https://blog.51cto.com/aiilive/2116476
安装包放在下方链接:
链接: https://pan.baidu.com/s/1JYlUx0Hv6kpm384qw1VwYA 提取码: ybbb
2.MySQL的基本操作
MySQL是一个“客户端-服务器”结构的程序.
网络通信的时候,通信双方,主动发起请求的一方,称为客户端.
被动接受请求的一方,称为服务器.
客户端给服务器发送的数据称为请求,服务器给客户端返回的数据,称为响应.
安装好了MySQL,相当于既是安装了客户端,也是安装了服务器,客户端和服务器之间是通过网络来通信的
2.1 展示数据库
SQL语句单词之间要有空格,最后别忘记加一个分号;
show databases;
databases少写了一个s就会报错
2.2 创建数据库
create database 数据库名字;
注意:这里的database不用加s
2.3 选中数据库
选中数据库后就可以对其进行操作
use 数据库名字;
2.4 删除数据库
drop database 数据库名字;
2.5 常用数据类型
2.5.1 整形
TINYINT,SMALLINT,INT,BIGINT对应java的byte,short,int,long
2.5.2 浮点数
Float为单精度,M指定长度,表示有效数字,D指定小数位数。会发生精度丢失.
DECIMAL为双精度,M指定长度,D表示小数点位数,平时提到的float和double类型是根据IEEE754标准来使用的,基于这个标准表示的浮点数,有些数字可能无法精确表示一个小数,比如在算钱的时候,两个浮点数比较的时候,不能使用大于小于,而是要作差比较.
2.6 创建表
create table 表名 (
字段名字 字段类型,
字段名字 字段类型,
字段名字 字段类型.....
);
create table teacher(
id int,
name varchar(50),
age int
);
2.7 查看表
需要先选中数据库,之后才能查看表.
show tables;
2.7 查看表结构
查看某个表里面有几列,每一列都是啥类型,每一列是啥名字.
desc 表名;
2.8 删除表
drop table 表名
3.数据库增删改查
3.1 单行插入
INSERT INTO 表名 VALUES(属性 类型)
insert 进行插入的时候 可以只插入其中的某一列或者某几个列的.此时其他的列将采用默认值
3.2 多行插入
多行插入的效率是比单个分别插入效率高的,如果分开来一个个插入数据,客户端把sql语句包装成请求发送给服务器,服务器收到后作出响应再把数据传回来,这样要返回多次,而一次性把sql语句都传过去,就可以减少响应次数.
3.3 插入日期
如果某一列是 datetime,此时如何进行插入呢?
1)通过指定格式的字符串来插入一个指定时间
2)通过 now0函数来插入一个当前系统时间
3.4 select查询
首先创建表,将表中插入数据
create table exam(id INT,
-> name VARCHAR(20),
-> chinese DECIMAL(3,1),
-> math DECIMAL(3,1),
-> english DECIMAL(3,1));
insert into exam values (1,'唐三藏', 67, 98, 56),
-> (2,'孙悟空', 87.5, 78, 77),
-> (3,'猪悟能', 88, 98.5, 90),
-> (4,'曹孟德', 82, 84, 67),
-> (5,'刘玄德', 55.5, 85, 45),
-> (6,'孙权', 70, 73, 78.5),
-> (7,'宋公明', 75, 65, 30);
3.4.1 select
最基础的查找全列查找直接把一个表的所有的列,和所有的行都查询出来
select * from 表名;
其中* 为通配符,表示一个表的所有列,把一个表里面的所有的行和所有的列都查找到,查找的结果是一个“临时表”之前咱们说的数据库的表都是在硬盘上的,而此处的这个查询结果临时表不是在硬盘上而是在内存中,随着进行了输出之后,数据也就被释放了
3.4.2 查询一列或多列
指定列查询,查询出自己想要的列
select 列名 from 表名;
查询结果,只是一个临时表.(在客户端内存临时保存的一个数据表,随着打印的进行,内存就释放了),临时表的结果对于数据库服务器的原始数据没有任何影响.
3.4.3 查询字段为表达式
临时表中的结果的数据类型不一定和原始的表的数据类型完全一致。
临时表的类型会自动的适应,保证计算结果是正确的.
3.4.4 查询字段指定别名
查询字段指定别名,相当于是给查询结果的临时表,指定新的列名,as最好不要省略,查询语句一多可能会混淆
3.4.5 查询结果去重
如果是针对多个列来进行去重,就得这多个列的值都相同的时候才视为相同.
3.4.6 排序
排序会针对查询结果(临时表) 进行排序(不会影响到数据库服务器上的原始据的),order by 有升序(asc)和降序(desc),asc如果省略不写,默认也是升序.如果有的表中是带NULL的,在排序的时候,NULL是最小的(升序就排在最前面,降序就排在最后面)
select 列名 from 表名 order by 列名 asc/desc;
根据别名来排序
排序的时候还可以通过 order by 来指定多个列进行排序,先根据第一个列进行排序.如果第一个列结果相同,相同结果之间再通过第二个列排序…,先按照数学排序.如果数学成绩相同,再按照英语排序,多个列排序的时候是有明确优先级的~~,先进行筛选,如果where子句条件不成立,前面的select就不会执行
3.4.7 where筛选
where条件就会针对查询结果进行筛选,服务器就会遍历表中的每一条记录,如果记录符合条件,就返回给客户端.如果不符合条件,就跳过
where子句不能使用别名
表达式里如果有 and 和 or, 先计算 and 后计算 or ,如果要想打破优先级,就需要加( )
select 列名 from 表名 where 列名 between 值 and 值
between and 两边的值是闭区间的.
只要数学成绩是()中的任意的值,都可以被查询出来
3.4.8 模糊查询:like
% 匹配任意多个(包括0个)字符, _ 匹配严格的一个任意字符
3.4.9 NULL 的查询:IS [NOT] NULL
上述的sql语句是有问题的,NULL表示不可知不确定,NULL不与任何值相等(包括其本身),返回为false,所以就没有执行,在使用NULL要使用<=>NULL 或者 is NULL.
4.分页查询
在使用百度搜索的时候,搜索结果会分页显示出一页中最多显示多少个结果,假设一页显示 20 条记录.第一页就显示1-20,第二页就显示21-40,第三页就显示41-60.SQL中可以通过 limit 来实现分页查询,假设一页里面就显示3条记录.
select 列名 from 表名 limit 数字
下图就是显示3条记录
offset 3的意思是从下标为 3 的记录开始(下标从0开始)再往后找 3 条.
5.update
update是会修改数据库服务器上的原始数据的
update 表名 set column = expr [, column = expr ...] [WHERE ...] [ORDER BY ...] [LIMIT ...]
-- 将孙悟空同学的数学成绩变更为 80 分
-- 将曹孟德同学的数学成绩变更为 60 分,语文成绩变更为 70 分
-- 将总成绩倒数前三的 3 位同学的数学成绩加上 30 分
-- 将所有同学的语文成绩更新为原来的 1/2 倍
6.delete删除
DELETE FROM table_name [WHERE ...] [ORDER BY ...] [LIMIT ...]
-- 删除孙悟空同学的考试成绩
6.1 delete和drop的区别
delete主要是删除数据,数据没有了,但是表还在.
drop主要用于删除结构,例如删除数据库:drop database XX,删除表 drop table XX,删除之后表和数据都没有了.