mysql 存储过程
#table_a为表名
#注意分号
#存储过程
create procedure cuncu(num int) #创建存储过程,名字为cuncu
begin
#定义循环变量(声明变量)
declare i int;
#给循环变量赋值
set i=num;
while i<500 #whlie i<num+500 插入500条数据,可以选择从输入的num序号添加
do inser into table_a values(i,concat('user',i); #concat函数,拼接字符串与数字
set i=i+1;
end while;#结束循环
end
call cuncu(数据量) #要插入的数据量
insert into select
mysql,postgrelsql___sql语句_创建上亿数据也很快
insert into table select 'a','b','c','d' from Table;
insert into table select 'a','b','c','d' from table;
#用此方法往数据库里面插入数据
前提条件: 此数据库中Table表中有数据
第一步:确定table中有多少字段,如sql语句中 只有4个字段,依次按照字段的结构插入对应的值。
一般搭配随机数
rand()
时间函数
now()
SUBSTRING()函数截取浮点数的一部分
字符串连接符号
||
例如:'userid'||'abc' = 'useridabc'
case when
CASE WHEN SCORE = 'A' THEN '优'
WHEN SCORE = 'B' THEN '良'
WHEN SCORE = 'C' THEN '中' ELSE '不及格' END
数据增长呈2的幂次方增长
id,name为table中的字段(table1中有数据)
insert into table1 select id+rand(1000)*1000,concat(name,substring(rand(),3,6)) from table1
ps:
select into from 和 insert into select 都是用来复制表
两者的主要区别为: select into from 要求目标表不存在,因为在插入时会自动创建;insert into select from 要求目标表存在
sql语句_mangodb
MongoDB的优点:
1、弱一致性(最终一致),更能保证用户的访问速度
2、文档结构的存储方式,能够更便捷的获取数据
对于一个层级式的数据结构来说,如果要将很多的数据使用扁平式的、表状的结构来保存数据,这不管是在查询还是获取数据时都会很困难。
3、第三方支持丰富。
这是它跟其它的NoSQL相比,MongoDB也具有的优势,因为现在网络上的很多NoSQL开源数据库完全属于社区型的,没有官方支持,给使用者带来了很大的风险。
而开源的文档数据库MongoDB背后有商业公司为它提供商业培训和支持。
4、性能优越
在使用场合下,千万级别的文档对象,近10G的数据,对有索引的ID的查询不会比mysql慢,而对非索引字段的查询,则是全面胜出。 mysql实际无法胜任大数据量下任意字段的查询,而mongodb的查询性能可以,同时它的写入性能也很厉害,可以写入百万级别的数据
mangodb
1.批量更新数据
将集合test中名字为ming的数据的age更新为18
db.test.update({name:'ming'},{$set:{'age':'18'}},{'multi':true});
2.查询
查找test集合下result下面message为mango学习的数据
db.test.find({"result.message":"mango学习"})
3.删除
db.test.remove({"result.message":"mango学习"})
4.插入
db.collection.insertOne() 单条
db.collection.insertMany() 多条
详情请查看菜鸟教程:https://www.runoob.com/mongodb/mongodb-query.html
sql语句_mysql
优点:
体积小、速度快、总体拥有成本低,开源;
支持多种操作系统;
是开源数据库,提供的接口支持多种语言连接操作 ;
MySQL的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和C语言实现的mysql能很容易充分利用CPU;
MySql有一个非常灵活而且安全的权限和口令系统。当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证;
支持ODBC for Windows, 支持所有的ODBC 2.5函数和其他许多函数, 可以用Access连接MySql服务器, 使得应用被扩展;
支持大型的数据库, 可以方便地支持上千万条记录的数据库。作为一个开放源代码的数据库,可以针对不同的应用进行相应的修改;
拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性;
MySQL同时提供高度多样性,能够提供很多不同的使用者介面,包括命令行客户端操作,网页浏览器,以及各式各样的程序语言介面,例如C+,Perl,Java,PHP,以及Python。你可以使用事先包装好的客户端,或者干脆自己写一个合适的应用程序。MySQL可用于Unix,Windows,以及OS/2等平台,因此它可以用在个人电脑或者是服务器上
select 查询内容 from 表 where 条件
select 内容 from 表1 left/right join 表2 on 条件(一般是2个表都有的项) group by 。。。
select 内容 from 表 where group by 工作,部门等 having 条件
create table 表名 values(id int,name varchar(10) 等等)或者在表名后面指定 表项。 int 整数 unsigned 无符号的 varchar 字符。date 时间 decimal(7,2)精确度,一共7位数。小数2位。整数5位。
describe 表名 或者desc 表名。查看表的一些相关信息。
show create table 表 查看建表语句。 (primary key 主键 unique 唯一。not null 非空。)在 int varchar 后面。foreign key(谁的外键)references 表(表的列)参照某表的列,就是取的值只能是这列里的才行。
alter table 表 add 列名 (类型int或varchar) 给表加列 first结尾 则放到第一列
alter table 表 add 列1 字符 after 列2. 将列1 加到列2后面
alter table 表 modify 列 类型 修改列的类型
alter table 表 drop 列。删除列
alter table 表change 列1 列2 字符 把列1修改为列2
alter table 表alter 列 set default ‘’。 修改默认值
alter table 表 alter 列 drop default 删除此列的默认值
drop table 表 删除表 rename table 表 to表1 将表修改为表1
alter table 表1 rename to 表2 将表1修改为表2
alter table 表 add primary key/unique() 给括号里加主键或唯一性。
alter table 表 modify 列 字符 not null 添加非空
alter table 表add foreign key(列) references 表1(某列) 给某列添加外键 参照表以的某列
alter table 表 drop primary key 删主键
alter table 表 drop foreign key 外键的约束名。 删外键需加上外键的约束名
alter table 表 drop index 列 删除列的唯一性
alter table 表 modify 列 字符 null 删除非空约束
create view v1 as select 。。。。 将查询到的内容作为一个视图 保存的是一个查询语句而不是数据 可以 select * from v1(也可以当表一样查数据)修改视图里的数据 也就相当于修改表的数据
create or replace view v1 as select 修改视图保存的查询语句 drop view v1 删除视图
create index ind1 on 表(列) 创建一个索引 ind1 show index from 表 看表的索引
explain select * from emp where sal>2000 使用explain 看这个查询是否使用了索引
create index ind2 on 表(列1,列2) 指定多列为一个索引
CREATE PROCEDURE adddept(IN n int)
DECLARE i int DEFAULT 1; #定义一个变量i,初始值1
while i<=n DO
INSERT INTO dept(dname,loc) VALUES('testdname','testloc');
set i = i+1;
end while
insert into 表 values() 给表加一栏 括号里顺序跟表走。
insert into 表(指定顺序) values(跟指定顺序走)
insert into 表 select 查询的内容 将查询的内容加到表中
update 表 set 改的内容 where 给谁改。不加where 给全部改
delete from 表 where删的内容。 不加where 全部删
truncate table 表 删整张表
limit 数量,查多少行。
order by 排序
group by 分组
having 过滤 一般结合group by使用,不能结合where使用
事务
select @@autocommit 看事务是否开启。1是自动提交
想不自动提交可以
先begin;
然后 内容
commit; 就提交 rollback;撤销输的内容
左连接:左边表的字段全展示出来,右边没有的展示成null
右连接:与左连接相反
select * from table_a a left join table_b b on a.id=b.id
全连接
union/union all
(select id,name,age from table_a) union (select id,name,age from table_b)
union查出来的数据会去重,union all 不会去重
#生成一个32位的随机id
select replace (uuid(),"-","")
sql语句_postgresql
PostgreSQL主要优势:
1. PostgreSQL完全免费,而且是BSD协议。
2. 与PostgreSQl配合的开源软件很多,有很多分布式集群软件,如pgpool、pgcluster、slony、plploxy等等,很容易做读写分离、负载均衡、数据水平拆分等方案,而这在MySQL下则比较困难。
3. PostgreSQL源代码写的很清晰,易读性比MySQL强太多了,怀疑MySQL的源代码被混淆过。所以很多公司都是基本PostgreSQL做二次开发的。
4. PostgreSQL在很多方面都比MySQL强,如复杂SQL的执行、存储过程、触发器、索引。同时PostgreSQL是多进程的,而MySQL是线程的,虽然并发不高时,MySQL处理速度快,但当并发高的时候,对于现在多核的单台机器上,MySQL的总体处理性能不如PostgreSQL,原因是MySQL的线程无法充分利用CPU的能力
postgresql与mysql语法很类似不过对双引号,单引号很敏感
语句中需带上schema
select * from schema.table
详情查看:https://www.runoob.com/postgresql/postgresql-select.html
sql_redis
当前 Redis 已经成为了主要的 NoSQL 工具,其原因如下。
1)响应快速
Redis 响应非常快,每秒可以执行大约 110 000 个写入操作,或者 81 000 个读操作,其速度远超数据库。如果存入一些常用的数据,就能有效提高系统的性能。
2)支持 6 种数据类型
它们是字符串、哈希结构、列表、集合、可排序集合和基数。比如对于字符串可以存入一些 Java 基础数据类型,哈希可以存储对象,列表可以存储 List 对象等。这使得在应用中很容易根据自己的需要选择存储的数据类型,方便开发。
对于 Redis 而言,虽然只有 6 种数据类型,但是有两大好处:一方面可以满足存储各种数据结构体的需要;另外一方面数据类型少,使得规则就少,需要的判断和逻辑就少,这样读/写的速度就更快。
3)操作都是原子的
所有 Redis 的操作都是原子的,从而确保当两个客户同时访问 Redis 服务器时,得到的是更新后的值(最新值)。在需要高并发的场合可以考虑使用 Redis 的事务,处理一些需要锁的业务。
4)MultiUtility 工具
Redis 可以在如缓存、消息传递队列中使用(Redis 支持“发布+订阅”的消息模式),在应用程序如 Web 应用程序会话、网站页面点击数等任何短暂的数据中使用。
正是因为 Redis 具备这些优点,使得它成为了目前主流的 NoSQL 技术,在 Java 互联网中得到了广泛使用。
一方面,使用 NoSQL 从数据库中读取数据进行缓存,就可以从内存中读取数据了,而不像数据库一样读磁盘。现实是读操作远比写操作要多得多,所以缓存很多常用的数据,提高其命中率有助于整体性能的提高,并且能减缓数据库的压力,对互联网系统架构是十分有利的。
另一方面,它也能满足互联网高并发需要高速处理数据的场合,比如抢红包、商品秒杀等场景,这些场合需要高速处理,并保证并发数据安全和一致性
redis 分布式缓存,高并发,查询速度快,主从模式
redis数据类型 ===查看key类型 type key
string类型 :常说的key,value
查询 get key
插入 set key
hash类型:
查询 hget key field ====field是中文的话需带上引号
插入 HSET key field value
set类型:
查询
smembers key
向集合添加一个或多个成员
SADD key member1 [member2]
list
查询=获取列表指定范围内的元素
lrange key start stop ===start --stop 取的是下标 从0开始
例如: lrange key 0 -1 取全部
将一个或多个值插入到列表头部
LPUSH key value1 [value2]
有序set
向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZADD key score1 member1 [score2 member2]
返回集合中的所有成员
SMEMBERS key
详情查看:https://www.runoob.com/redis/redis-sets.html