sql学习笔记

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




    


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值