mysql如何只取前100⾏数据?
1.select top 100 * from 表名 order by 列名 desc (升序asc 降序desc)
(这条不⾏就按下⾯的)
2.select a.* from table a where id =370 fetch first 100 rows only
(这⼀条适⽤于db2)
3.select * from bdcqzs_fr where djsj>=‘2020-11-30’ limit 10
(这是mysql)
也可以:
SELECT * FROM bdcqzs_fr WHERE id BETWEEN 1 AND 10000000000
(between和and组合的数字 你可以⾃⼰加,⾃定义就好了,这条均适⽤db2和mysql)
其他:
查询全部的记录: 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;
db2在这⽅⾯就不太优秀,你⽐如查询100-200,得这么写:
select
T.id form Table T
where
T.id not in (
select
id
from
Table
fetch first 100 rows only
) fetch first 100 rows only
扩展笔记:
(以下均是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
#
#dubbometadataservice
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 查询
php显示在浏览器中打开# 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,条件三);
mysql语句分类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;
十六进制125转换成二进制# ⽤法
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;
只复制表结构
tcp和ip的含义create table t1 select * from test where 1=2;
db2 不讲武德,偷袭 我九零后的⽼年⼈,年轻⼈耗⼦尾汁。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论