批量查询数据sql

批量查询:

  1. select top 100 * from 表名 order by 列名 desc (升序asc 降序desc)
  2. select * from bdcqzs_fr where djsj>=‘2020-11-30’ limit 10
  3. SELECT * FROM xxxxx WHERE id BETWEEN 1 AND 10000

其他:

  • 查询全部的记录: select * from test_limit ;
  • 查第一条记录: select * from test_limit limit 1;
  • 查前面两条记录: select * from test_limit limit 0,2;
  • 查第二和第三条记录: select * from test_limit limit 1,2;
  • 查最后一条记录: select * from test_limit order by id DESC limit 1;

扩展笔记:

(以下均是mysql语句,db2并未尝试,有兴趣的小伙伴可以尝试,但是慎用修改语句。)

select distinct * from '表名' where '限制条件'  group by '分组依据' having '过滤条件' order by  limit '展示条数'
执行顺序
from       -- 查询
where      -- 限制条件
group by   -- 分组
having     -- 过滤条件(和group by并用)
order by   -- 排序
limit      -- 展示条数
distinct   -- 去重
select     -- 查询的结果

备份数据库


#mysqldump -uroot -p密码 数据库名 > D:/备份文件名.sql
恢复备份的数据库
#首先在mysql里建好数据库名
#mysql -uroot -p密码 数据库名 < D:/备份文件名.sql

1.单表约束


#主键约束:PRIMARY KEY              要求被装饰的字段:唯一和非空
#唯一约束:UNIQUE               要求被装饰的字段:唯一,
#                             .联合唯一:在结尾:unique(字段1,字段2)
#非空约束:NOT NULL             要求被装饰的字段:非空
#外键约束:FOREIGN KEY          某主表的外键
#自动增加:AUTO_INCREMENT       自动增加(需要和主键 PRIMARY KEY 同时用)
#设置默认值:DEFAULT             为该属性设置默认值
# 在int、char中:zerofill            不足位数默认填充0
#
# 

2.常用数据类型


int        #整型,4个字节  一般不需要指定宽度,(8):只是显示为8位,默认有负号设置无负号: unsigned
double     #浮点型,例如double(5,2),标识最多5位,其中2位为小数,即最大为999.99
varchar        #可变长度字符串类型。例如:varchar(10) 'aaa' 占3位
char       #固定长度字符串类型。例如:char(10) 'aaa' 占10位
text       #大文本字符串类型。
blob       #字节类型。例如:
datetime   #日期时间类型。例如:datetime(yyyy-MM-dd hh:mm:ss)
date       #日期类型。例如:date(yyyy:MM:dd)
time       #时间类型。例如:time(hh:mm:ss)
timestamp  #时间戳类型。例如:timestamp(yyyy-MM-dd hh:mm:ss)  会自动赋值
enum       #枚举 多选一 enum('male','female'),default为默认值
例如:sex enum('male','female') not null default 'male'
set            #集合 多选多,可以选一个 set('read','DJ','DBJ','run')
注:字符串类型和时间类型都要用单引号括起来,空值为null

3.查看数据列表


show databases; -- 查看所有数据库
use 数据库名字
show create table 表名; -- 查看表的创建细节
desc 表名; -- 查看表结构

#CREATE DATABASE 数据库名
CREATE DATABASE Python_7; 
CREATE DATABASE pyrhon_7 charset utf8

# 修改数据库编码
alter database db1 charset gbk;

删除数据库
#drop database 需要删除的数据库名
drop database 表名;

查看所有的存储引擎
show engines;

查看不同存储引擎存储表结构文件特点
create table t1(id int)engine=innodb; -- MySQL默认的存储引擎,支持事务,支持行锁,支持外键。有且只有一个主键,用来组织数据的依据
create table t2(id int)engine=myisam; -- 不支持事务,不支持外键,支持全文索引,处理速度快。
create table t3(id int)engine=blackhole; -- 黑洞,写入它的任何内容都会消失
create table t4(id int)engine=memory;-- 将表中的数据存储在内存中。表结构以文件存储于磁盘。
(这个黑洞引擎有点意思,有兴趣可以看一下我搜集整理的另一篇文章,传送门:

)

表相关:

创建表
create table class(
      id INT PRIMARY KEY AUTO_INCREMENT,
  name varchar(32) UNIQUE,
  age varchar(32) NOT NULL
);

修改表本身
alter table 表名 add 字段名 类型(长度) [约束]; -- 添加列
alter table 表名 modify 字段名 类型(长度) [约束]; -- 修改列的类型长度及约束
alter table 表名 change 旧字段名 新字段名 类型(长度) [约束]; -- 修改列表名
alter table 表名 drop 字段名; -- 删除列
alter table 表名 character set 字符集; -- 修改表的字符集
rename table 表名 to 新表名; -- 修改表名
创建外键:
一对多(Foreign Key)
# foreign key(需要关联的本字段) references 需要关联对表的表(需要关联对表的字段)

#根据已有的表创建新表
**create table 新表 like 旧表  -- 使用旧表创建新表
create table 新表 as select 字段1 字段2... from definition only -- 使用自定义值去新建表**

数据相关

增加数据
insert into 表(字段名1,字段名2..) values(值1,值2..);-- 向表中插入某些列
insert into 表 values(值1,值2,值3..); -- 向表中插入所有列

删除数据
delete from 表名  -- 删除表中所有记录
delete from 表名 where 条件 -- 删除符合 where条件的数据
delete操作会删除数据,但会保留表结构,并且在之后需要时可以回滚数据。此外,delete操作还可以加一些其它的where条件,如上,比如删除确定的记录。
drop 操作会删除所有的数据以及表结构
-- 把表直接drop掉,重新建表,auto_increment将置为零。删除的数据不能找回。执行速度比delete快
TRUNCATE TABLE 语句用于删除表的所有数据(截断表)。其语句格式如下:
TRUNCATE TABLE  <table_name>;

数据的简单查询
select * from 表名; -- 查询所有列
select 字段名1,字段名2,字段名3.. from 表名; -- 查询指定列

like 的用法
A:% 包含零个或多个字符的任意字符串:
1、like'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。
2、like'%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。
3、like'%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。

B:_(下划线) 任何单个字符:
  like'_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。

C:[ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符: 
  1,like'[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。
  2、like'[M-Z]inger' 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。

D:[^] 不属于指定范围 ([a-f]) 或集合 ([abcdef]) 的任何单个字符:
  like'M[^c]%' 将搜索以字母 M 开头,并且第二个字母不是 c 的所有名称(如MacFeather)。

where 查询
# between 在...之间
select id,name from emp where id >= 3 and id <= 6;
相当于:
select *  from emp where id between 3 and 6;  

# or 或者
select *  from emp where id >= 3 or id <= 6;

# in,后面可以跟多个值
select * from 表名 where 字段名 in (条件1,条件2,条件三); 

group by
select 查询字段1,查询字段2,... from 表名
      where 过滤条件
      group by分组依据  # 分组后取出的是每个组的第一条数据
举几个例子明白:
max 最大值
# 每个部门的最高工资
select post,max(salary) from emp group by post;

# min 最小值
# 每个部门的最低工资
select post,min(salary) from emp group by post;

# avg 平均值
# 每个部门的平均工资
select post,avg(salary) from emp group by post;
# 每个部门的工资总和

# sum 求和
select post,sum(salary) from emp group by post;

# count(需要计数字段) 计数
# 每个部门的人数
select post,count(id) from emp group by post;
(实际应用中,count用的居多)

**having 过滤查询**
# having的语法格式与where一致,只不过having是在分组之后进行的过滤,即where虽然不能用聚合函数,但是having可以!

distinct 去重
# 对有重复的展示数据进行去重操作
select distinct 需取重字段 from 表名;

order by 排序
select * from emp order by salary asc; #默认升序排
select * from emp order by salary desc; #降序排

# 多条件排序
#先按照age降序排,在年轻相同的情况下再按照薪资升序排
select * from emp order by age desc,salary asc;

limit 限制展示条数
# 限制展示条数
select * from emp limit 3;
# 查询工资最高的人的详细信息
select * from emp order by salary desc limit 1;

# 分页显示
select * from emp limit 0,5;  # 第一个参数表示起始位置,第二个参数表示的是条数,不是索引位置
select * from emp limit 5,5;
# 用法
select 查询字段1,查询字段2,... from 表名
      where 过滤条件1
      group by分组依据
having avg(过滤条件2) > 10000;
# like (见上18)
# char——length()  取字符长度
select * from 表名 where char_length(需要获取长度的字段名) = 4;


not 配合使用
表复制
复制表
create table t1 select * from test;
只复制表结构
create table t1 select * from test where 1=2;
------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容