MySQL高级查询(一)
本随笔你将看到:
一.对于数据库表中数据的增删改查
二.数据库中常用函数(聚合函数,日期函数,字符串函数,数字函数)
一.对于数据库表中数据的增删改查
mysql中对于表的操作:
1.创建表:
create table '表名'(
'列名' 数据类型 字段属性索引约束注释 ;
)
2.修改表:
修改表名:alter table '旧表名' rename '新表名';
在原表中添加某一列:alter table '表名' add ‘列名’ 数据类型 是否为空等属性;
修改列名: alter table ‘表名’ change ‘原列名’ `新列名` 数据类型 属性;
删除列名:alter table ‘列名’ drop ‘列名’;
添加主键:
alter table 表名 add constraint 主键名
primary key 表名(主键字段);
注意:主键名要写成pk_主键字段(列名),主键字段就是被设置为主键的列名
添加外键:
alter table 表名 add consteraint 外键名
foreign key (外键字段)
references 主键名(主键列名);
注意:外键名要设为fk_外键名_主键名 如:fk_student_sex
增:
dml语句插入数据:插入单条数据记录
insert into ‘表名’(字段名列表)values(值列表)
如:
insert into
‘student’(‘name’,'sex_id','gread_id')
values('莉莉',‘0’,‘01’);
注:添加多条数据时只需在values括号外加入‘,’即可,注意最后的结尾要加分号
如
insert into
‘sex’(‘sex_name’,‘sex_id’)
values('拉拉',‘0’),('嘉佳',‘1’);
增 查:
dml语句 将查询结果加入新表:
1.需要自己建表创列表
insert into 新表( 字段1,字段2)
select 字段1,字段2
from 原表;
‘翻译’:将原表中查询(select)到的列表加入(insert into)新表的字段中
注:和sql selver 中的插入多表数据相同
2.系统自动生成表格并添加
create table 新表
(select 字段1,字段2
into 新表
from 原表) ;
'翻译':将原来表中的数据查询(select)并且添加到新表中。create table 是指添加新表(创建新表)的意思
删改:
DML语句 数据更新:
update 表名
set 字段1 = 值1,字段2 = 值2
where 条件
‘翻译’:将某表中的一些值经过where条件判断成立后,修改为set后面的值
删除:
delete from 表名 where 条件
‘翻译’:满足where后面的条件后删除表中某些东西
truncate table 表名
‘翻译’:删除某表中的数据
注意:truncate删除后将重置自增列,表结构及字段,约束,索引保持不变(delete也是),查询速度比delete快
mysql在查询语句中相比sql selver 可以使用 limit 子句限制结果集(分页查询)
如:limit(4,4)从第四个元素开始查,要查询4行。
语法:
select 要查询列表
from 表名
where 查询条件
group by 要分组的列表
order by 要排序的列名(asd 或 desc倒叙)
limit (从哪个字符开始查,查询多少行)
Q:如果每页有20条数据,要求显示5页数据如何操作?
A: 这里有一个好用公式:limit((n-1*a),a)。n表示要查询的页数,a表示要查询多少行
注意:limit字句是从0开始计算。
//mysql大部分函数是从1开始
sql selver 大部分函数是从1开始
Java中的数组计算是从0开始
limit 子句查询从0开始
二.数据库中常用函数(聚合函数,日期函数,字符串函数,数字函数)
常用函数: 聚合函数
avg() 返回某字段平均值
count() 返回某字段行数
max() 返回某字段对大值
min() 返回某字段最小值
sum() 返回某字段的和
字符串函数:
函数名 作用 举例
concat(str1,str2...) 字符串连接 select concate(‘as’,‘d’,‘f’)
返回:asdf
insert(ab,b,c) 字符串替换 select insert(‘aaaab’,‘a’,‘b’)
返回:bbbbb
lower(aaa) 将字符串转化为小写 select lower('ASDF')
返回:asdf
upper(ddd) 将字符串转化为大写 select upper(‘asdf’)
返回:ASDF
substring(sdf,we,asd) 字符串截取 select substring(‘qwer',2,2)
返回:we
时间,日期函数:
函数名 作用 举例
curdate() 截取当前日期 select curdate();
返回:2020/4/30
curtime() 截取当前时间 select curtime();
返回: 21:49
now() 截取当前时间和日期 select now();
返回:2020/4/30 21:49
week(date) 返回日期date为一年中的 select week('2000-12-5');
第几周 返回:48
year(date) 返回日期date的年份 select year(now());
返回:2020
hour(time) 返回时间time的小时值 select hour(now())
返回:21
datediff(date1,date2) 返回时间参数date1 select datediff(now(),'2001-4-16')
和date2之间相隔天数 返回:6954
adddate(date,n) 计算日期参数加上n select adddate(now(),5)
天后的日期 返回:2020-5-5
数学函数:
ceil(x) 返回大于或等于数值x的最小整数 select ceil(5.6);
返回:6
floor(x) 返回小于或等于数值x的最大整数 select floor(5.6);
返回:5
rand(x) 返回0~1之间的随机数 select rand();
返回:0.12598
okk~~
end