目录
- 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,删除之后表和数据都没有了.
 



















