mySQl数据库和Redis数据库

mysql卸载

  1. 先在mysql安装目录下找到my.ini文件找到datadir=" ";这个代码复制路径
  2. 卸载MySQL
  3. 找到复制的路径 在目录下删除MySQL文件夹

mySQL命令

MySQL服务启动
使用管理员打开cmd
* net start mysql :启动服务
* net stop mysql :关闭服务
MySQL登录

  1. mysql -uroot -p密码
  2. mysql -h(ip) -uroot -p连接目标密码
    MySQL退出
  3. exit
  4. quit
表操作
DML:增删该表中数据
  1. 添加数据
    1. 语法: insert into 表名(列名1,列名2,…)values(值1,值2,…);
    2. 注意
      1. 列名和值要一一对应
      2. 如果表名后,不定义列名则默认给所有列添加 insert into 表名 values(值1,值2,…)
      3. 除了数字类型,其他类型需要用引号
  2. 删除数据
    1. 语法: delete from 表名 where 条件
    2. 注意:
      1. 如果不添加条件则删除表所有数据
      2. 如果要删除所有记录推荐 TRUNCATE TABLE 表名
  3. 修改数据
    1. 语法:update 表名 set 列名1=值1,列名2=值2 where 条件
    2. 注意:如果不加条件则将表中所有记录全部修改

DQL:单表查询表中数据

查询全部信息

select * from  表名

在这里插入图片描述
查询姓名和年龄(查询某一些字段)

select  name , age from 表名( select 字段1 ,字段2  from 表名)

查询某些字段并去除重复值

select  distinct  字段名1,字段名2 from 表名

计算math和English分数和

select  math , english ,math+english  from 表名( select 字段1 ,字段2 , 字段1+字段2  from 表名)

如果有null值参与运算则将null替换为0 在计算

select  math , english ,math+ifnull(english ,0 )from 表名( select 字段1 ,字段2 , 字段1+ifnull(字段2 , 0)from 表名)ifnull(参数1,参数2 ) 该方法参数1为要判断是否为null的字段  参数2为要替换的值

给字段起别名

select name As 姓名 from 表名(select 字段名 As 字段的别名 from 表名)AS可以用空格替换

查询年龄大于(>,<,=,>=,<=)20(查询某一个范围)

select * from 表名 where  age>20select 字段名 from 表名  where  范围条件)

查询年龄大于等于20小于等于30的内容

select * from 表名 where age>20 and age<30select 字段名 from 表名  where  范围条件1 and 范围条件2

或者

select * from 表名 where age between 20 and 30select 字段名1 from 表名  where  字段名1 between 范围条件1 and 范围条件2between 20 and 30 表示包含2030的范围即 [20 ,30]

查询年龄22和19的信息(查询满足条件1或者条件2)

select * from 表名 where age=22 or age=19  (select 字段名 from 表名 where 条件1 or 条件2 )

或者

select * from 表名 where age in(22,19)  (select 字段名 from 表名 where  字段名 in(条件1 , 条件2) )

查询内容为空null

select * from 表名 where 字段名 is null

查询内容不为空null

select * from 表名 where 字段名 is not null

模糊查询
like _ 表示一个占位符 %表示多个占位符
查询姓名第一个字为马的人

select * from 表名 where name  like '马%'select * from 表名 where 字段名  like '马%'

同理查询姓名中包含马的人

select * from 表名 where name  like '%马%'select * from 表名 where 字段名  like '%马%'

排序查找(如果多个字段作为条件则按照第一个字段排序查找如果第一个相同则按照第二字段)
降序查找

select * from 表名 order by 字段名1 desc ,字段名2 desc
desc为降序排列方式(第二个字段排序方式可以与第一个字段排序方式不一样)

升序查找

select * from 表名 order by 字段名1 asc ,字段名2 asc
asc为降序排列方式 (如果不写排序方式则默认为升序排序)

聚合函数(计算时会排除null值):将一列数据作为一个整体进行纵向的计算

  1. count:计算某一列个数
select count(列名) from 表名
  1. max:计算最大值
select max(列名) from 表名
  1. min:计算最小值
select min(列名) from 表名
  1. sum :计算和
select sum(列名) from 表名
  1. avg:计算平均值
select avg(列名) from 表名

分组查询

  • where在分组之前进行限定不满足则不参与。where后面不能跟聚会函数判断
  • having 在分组之后进行限定不满足则不显示出结果。having后面能跟聚会函数判断
    分别查询男女同学平均分
select sex, avg(math) from 表名 group by sex;
(select 分组字段 ,聚合函数(可以有多个) from 表名 group by 分组字段(即按什么分组))

分别查询男女同学平均分并且只有分数大于70才参与

select sex, avg(math) from 表名 where math>70 group by sex;
(select 分组字段 ,聚合函数(可以有多个) from 表名 where 限定条件 group by 分组字段(即按什么分组))

分别查询男女同学平均分并且只有分数大于70才参与并且分组后人数要大于2个

select sex, avg(math) from 表名 where math>70 group by sex having count(id)>2;
(select 分组字段 ,聚合函数(可以有多个) from 表名 where 限定条件 group by 分组字段(即按什么分组) having 分组后限定条件)

分页查询

select * from 表名 limit 开始索引((当前页码-1*每一页显示个数) , 每一页显示的个数;

DQL:多表查询表中数据 方便查询可以给表起别名

查询两张表对应信息

select * from 表名1,表名2 where 表名1.id=表名2.id;
(查询表1和表2对应id(该相同id分别时两张表的主键和外键)相同的内容)

查询两张表中部分数据

select1.列名 ,2.列名 from 表名1,表名2 where 表名1.id=表名2.id;
(查询 表1中指定列名和表2指定列名 对应id(该相同id分别时两张表的主键和外键)相同的内容)

外链接查询

  1. 左外连接(查询的时左表所有数据以及起交集部分):
    1. 语法:
select 字段列表 from1 left [outer] join2 on 条件(表名1.id=表名2.id)(为两张表的主键和外键)
  1. 右外连接(查询的时右表所有数据以及起交集部分):
    1. 语法
select 字段列表 from1 right [outer] join2 on 条件(表名1.id=表名2.id)(为两张表的主键和外键)

子查询
在查询语句中嵌套查询
不同情况

  • 子查询的结果时单行单列的(一个查询语句可以作为另一个查询语句的条件并且使用运算符(< ,>,)来判断)
  • 子查询的结果时多行单列的(一个查询语句可以作为另一个查询语句的条件并且使用in()来判断)
  • 子查询的结果时多行多列的(子程序可以作为一张虚拟表然后用多表查询进行查询)

Redis

概念: redis是一款高性能的NOSQL系列的非关系型数据库
目前为止Redis支持的键值数据类型如下:

  1. 符串类型 string
  2. 哈希类型 hash
  3. 列表类型 list
  4. 集合类型 set
  5. 有序集合类型 sortedset

redis的应用场景

  1. 缓存(数据查询、短连接、新闻内容、商品内容等等)
  2. 聊天室的在线好友列表
  3. 任务队列。(秒杀、抢购、12306等等)
  4. 应用排行榜
  5. 网站访问统计
  6. 数据过期处理(可以精确到毫秒 • 分布式集群架构中的session分离)

下载安装

  1. 官网:https://redis.io
  2. 中文网:http://www.redis.net.cn/
  3. 解压直接可以使用: * redis.windows.conf:配置文件 * redis-cli.exe:redis的客户端 * redis-server.exe:redis服务器端

命令操作

  1. redis的数据结构:
    • redis存储的是:key,value格式的数据,其中key都是字符串,value有5种不同的数据结构
    • value的数据结构:
      1. 字符串类型 string
      2. 哈希类型 hash : map格式
      3. 列表类型 list : linkedlist格式。支持重复元素
      4. 集合类型 set : 不允许重复元素
      5. 有序集合类型 sortedset:不允许重复元素,且元素有顺序
  2. 字符串类型 string
			1. 存储: set key value 
					127.0.0.1:6379> set username zhangsan OK (ip地址:端口号>set 键名 值)
			2. 获取: get key
				 127.0.0.1:6379> get username "zhangsan" 
			3. 删除: del key 
				127.0.0.1:6379> del age
				 (integer) 1
  1. 哈希类型 hash
 		1. 存储: hset key field value
		 	127.0.0.1:6379> hset myhash username lisi
		  (integer) 1 
		    127.0.0.1:6379> hset myhash password 123
		   (integer) 1
		2. 获取:
		  	1. hget key field: 获取指定的field对应的值 
		    	127.0.0.1:6379> hget myhash username "lisi" 
		 	2.  hgetall key:获取所有的field和value
		  		127.0.0.1:6379> hgetall myhash 
		 			1. "username" 
		 			2.  "lisi" 
		 			3. "password"
		 			4.   "123" 
		3. 删除: hdel key field 
		 	 127.0.0.1:6379> hdel myhash username 
		 	 (integer) 1 
  1. 列表类型 list:可以添加一个元素到列表的头部(左边)或者尾部(右边)
	1. 添加:
		1. lpush key value: 将元素加入列表左表
		2. rpush key value:将元素加入列表右边
		127.0.0.1:6379> lpush myList a
 			(integer) 1 
 		127.0.0.1:6379> lpush myList b
  			(integer) 2 
  		127.0.0.1:6379> rpush myList
   			c (integer) 3
   	2. 获取:
   		* lrange key start end :范围获取 
   		127.0.0.1:6379> lrange myList 0 -1 
   			 1. "b" 
   			 2. "a"
   			 3. "c" 
   	3. 删除:
   		* lpop key: 删除列表最左边的元素,并将元素返回 
   		*  rpop key: 删除列表最右边的元素,并将元素返回
  1. 集合类型 set : 不允许重复元素
	1. 存储:sadd key value 
   		127.0.0.1:6379> sadd myset a
   		 (integer) 1 
   		 127.0.0.1:6379> sadd myset a 
   		 (integer) 0 
   	2. 获取:smembers key:获取set集合中所有元素
   		  127.0.0.1:6379> smembers myset 
   		  	 "a"
   	3. 删除:srem key value:删除set集合中的某个元素
   		  127.0.0.1:6379> srem myset a 
   		  (integer) 1 
  1. 有序集合类型 sortedset:不允许重复元素,且元素有顺序.每个元素都会关联一个double类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。
 1. 存储:zadd key score value 
   	127.0.0.1:6379> zadd mysort 60 zhangsan 
   		(integer) 1 
   	127.0.0.1:6379> zadd mysort 50 lisi 
   		(integer) 1
   	127.0.0.1:6379> zadd mysort 80 wangwu
   		 (integer) 1
 2. 获取:zrange key start end [withscores] 
   	127.0.0.1:6379> zrange mysort 0 -1 
   		 1. "lisi" 
   		 2.  "zhangsan"
   		 3.  "wangwu" 
   		 		 
  	127.0.0.1:6379> zrange mysort 0 -1 withscores 
  		1. "zhangsan"
  		2.  "60" 
  		3.  "wangwu"
  		4.  "80"
  		5.   "lisi" 
  		6. "500"
3. 删除:zrem key value
	127.0.0.1:6379> zrem mysort lisi
		(integer) 1 
  1. 通用命令
   1. keys * : 查询所有的键 
   2. type key : 获取键对应的value的类型 
   3.  del key:删除指定的key value
  1. 持久化
    1. redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据 持久化保存到硬盘的文件中。
    2. redis持久化机制:
      1. RDB:默认方式,不需要进行配置,默认就使用这种机制
        在一定的间隔时间中,检测key的变化情况,然后持久化数据
        1. 编辑redis.windwos.conf文件
 		#after 900 sec (15 min) if at least 1 key changed 
		save 900 1
		#after 300 sec (5 min) if at least 10 keys changed 
		save 300 10
		#after 60 sec if at least 10000 keys changed 
		save 60 10000 
             2. 用cmd重新启动redis服务器,并指定配置文件名称 
				例如:D:\JavaWeb2018\day23_redis\资料\redis\windows-64\redis-2.8.9>redis-server.exe redis.windows.conf
  1. AOF:日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据
    1. 编辑redis.windwos.conf文件
 				appendonly no(关闭aof) --> appendonly yes (开启aof)
		   		#appendfsync always : 每一次操作都进行持久化
		   		appendfsync everysec : 每隔一秒进行一次持久化
		   		#appendfsync no : 不进行持久化
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值