mysql
查询当前mysql所以数据库
show databases
创建数据库
create database 数据库名 charset 字符集名称 [collate 校对规则名];
字符集名类似这些: utf8, gbk, gb2312, big5, ascii等。推荐用utf8。
创建
create database dadesss charset utf8;
查看数据库创建信息
show create database dadessssa;
删除数据库
drop database dadesss;
修改现有数据库
alter database 数据库名 charset 新的字符集名称 collate 新的校对规则名
选择使用哪个数据库
use 数据库名;
创建表
create table biaoge (id int, name varchar(10), age int);
添加字段
alter table 表名 add 字段名 字段类型
修改字段
alter table 表名 change 旧字段名 新字段名 字段类型
删除字段
alter table 表名 drop 要删除的字段名;
修改表名
alter table 表名 rename 新的表名;
修改表字符集
alter table 表名 charset=新的字符集;
清空表
truncate 表名;
查看所有表
show tables;
查看表结构
desc biaoming;
查看表创建语句
show create table biaoming;
删除数据表
drop table biaoming;
增删改查
增
insert into dade_order_goods(name,price,state,stock,items,richtext,dade) values ($name,$price,$state,$stock,$items,$richtext,$date);
删
Db::execute("delete from dade_order_goods where id=$id");
改
update dade_order_goods set name=$name,price=$price where id=$id;
查
select * from dade_user_withdrawal where (state=2) order by id desc limit $pageSize,7
高级查询
查询写法顺序
select 子句 [from 子句] [where 子句] [group by子句] [having子句] [order by子句] [limit 子句];
1、
逻辑与: && 或 and
逻辑或: || 或 or
逻辑非: ! 或 not
2、
like模糊查找运算符:xxx字段 like ‘%关键字%’;(_表示一个模糊)
3、
group by 组信息;看有多少人是下单的
SELECT * FROM `ims_ewei_shop_order` group by openid;
(1)计数值: count(字段), 表示求出一组中原始数据的行数;
(2)最大值: max(字段),表示求出一组中该字段的最大值;
(3)最小值: min(字段),表示求出一组中该字段的最小值;
(4)平均值: avg(字段),表示求出一组中该字段的平均值;
(5)总和值: sum(字段),表示求出一组中该字段的累加和;
保留两位小数round(sum(charge),2)
as '最大';as是别名
count(*)
查总数
select count(*) as 总数 from dade_user_withdrawal;
查最大
SELECT max(price),ordersn FROM `ims_ewei_shop_order`;
4、
having 筛选条件。having的含义跟where的含义一样,但having是只用于对group by分组的结果进行的条件筛选。
SELECT * FROM `ims_ewei_shop_order` group by openid having openid != 1;
5、
order by 字段1 [asc或desc],排序正序asc, 倒序desc
SELECT * FROM `ims_ewei_shop_order` order by id desc;
6、
limit 起始行号,行数 分页
SELECT * FROM `ims_ewei_shop_order` limit 2, 10;
高级插入
insert into 表名 set 字段1=值1,字段2=值2;
联合查询
select查询1
union [all或distinct]
select查询2
union [all或distinct]
select查询3
......
[order by 字段 [asc或desc] ]
[limit 起始行号,数量];
on 连接条件
1、
联合查询union
SELECT id FROM `ims_ewei_shop_order` union SELECT id FROM `ims_ewei_shop_order_goods` limit 0,10;
2、
连接查询join
SELECT * FROM `ims_ewei_shop_order` join `ims_ewei_shop_order_goods` limit 0,100;
3、
内连接(inner join)
SELECT * FROM `ims_ewei_shop_order` as p inner join `ims_ewei_shop_order_goods` as d on p.id = d.id;
左外连接(left join)
右外连接(right join)
子查询
SELECT * FROM `ims_ewei_shop_order` where id = (SELECT orderid FROM `ims_ewei_shop_order_goods` where orderid = 1169);
大于平均值
SELECT * FROM `ims_ewei_shop_order` where price > (SELECT avg(price) FROM `ims_ewei_shop_order`);
mysql用户
进入use mysql;
查用户select * from user;
create user ‘用户名’[@’允许登录的地址’] identified by ‘密码’;
说明:
1,创建用户之后,数据库mysql中的user表中就会多一个用户。
2,‘允许登录的地址’,就是允许登录的客户端的ip地址,或
①”localhost”表示只能本地登录;
②“%”表示任何位置都可以登录;
③该部分可以省略,如果省略,默认就是”%”;
④后续涉及到用户的操作,都是这个格式。
创建用户
create user 'dadeee' identified by '123456';
删除用户
drop user 用户[@’允许登录的地址’];
drop user dadeee@127.0.0.1;
修改密码
set password for 用户[@’允许登录的地址’] = password(‘密码’);
授予用户权限
语法形式:
grant 操作1,操作2,.... on *.*或 数据库名.* 或 数据库名.表名 to 用户[@’允许登录的地址’];
说明:
1,“操作”其实就是权限名,是一个“特定词”,比如:delete, insert, update, select, create, 等等。
①其中,还可以用“all”,表示“所有权限”(除了grant权限)。
2,on后表示对“什么东西”来设定该权限,意思是对什么库的什么表,其中:
①*.* :表示所有库的所有表;
②数据库名.* :表示该指定数据库的所有表;
③数据库名.表名:表示该指定数据库的该指定表;
取消用户权限
revoke 操作1,操作2,.... on *.*或数据库名.* 或 数据库名.表名 from 用户[@’允许的地址’];
mysql查询去除重复项distinct方法
select distinct jurisdiction_id FROM cdj_administrators_jurisdiction
mysql时间戳转日期,日期转时间戳
select FROM_UNIXTIME(1606028010, '%Y-%m-%d %H:%i:%s');
select unix_timestamp('2018-01-15 09:45:16');
分组查询
SELECT house_id,count(*) FROM `cdj_pindex_allocation_id_house_id` group by house_id having count(*)>1;
SELECT house_id,count(*) FROM `cdj_pindex_allocation_id_house_id` where (pindex_id=43 and type=2) group by house_id having count(*)>1;
mysql删除索引,执行下面命令释放空间或删除大量数据
optimize table cdj_order
从一张表插入另外一张表
insert into cdj_order_speed(company_id,house_id,charge_id,allocation_id,type,ymt)SELECT company_id,house_id,charge_id,allocation_id,type,ymt FROM cdj_order;