mysql alter

这里是引用
CREATE USER ‘ws’@‘localhost’ IDENTIFIED BY ‘ws’;
GRANT ALL ON . TO ‘ws’@‘localhost’ WITH GRANT OPTION;
FLUSH PRIVILEGES;

CREATE USER ‘jian’@’%’ IDENTIFIED BY ‘jian135’;
grant all privileges on jiandb.* to jian@’%’;

SELECT (case when status=1 then ‘a’ else ‘b’ end) from table GROUP BY status

mysqldump -h 0.0.0.0 -u user-p testdb–tables testtable–where=“id >= 132956 and ss=‘ss’” > 143480.sql

UNIX_TIMESTAMP(‘2021-03-01’) # 日期转时间戳
SELECT from_unixtime(‘1614528000’, ‘%Y-%m-%d’) # 时间戳转日期

update user set password=password(‘123456’) where user=‘root’ and host=‘localhost’;

ALTER TABLE tableName MODIFY id int NOT NULL AUTO_INCREMENT

Create table tableNewName Select * from tableName //复制数据表:无主键,自增
Create table tableNewName like tableName //复制数据表结构
可以拷贝一个表中其中的一些字段:
CREATE TABLE newTable AS SELECT username, password FROM tableName
CREATE TABLE newTable AS SELECT username AS uname, password AS pass FROM tableName

可以在创建表的同时定义表中的字段信息: //++

CREATE TABLE tableNew
(
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY
)
AS
(
SELECT * FROM tableName
)

数据表多字段修改

ALTER TABLE `table_name`
MODIFY COLUMN created_at datetime DEFAULT null COMMENT '创建时间',
MODIFY COLUMN deleted_flag char(2) DEFAULT 'N' COMMENT'Y 已删除'

数据表多字段修改

ALTER TABLE `table_name`
CHANGE `column` `columnNew` char(1) DEFAULT 'N' COMMENT'Y 已删除l',
CHANGE `column1` `columnNew1` datetime DEFAULT NULL COMMENT '创建时间'  

数据表添加字段

ALTER TABLE `table_name`
ADD COLUMN `column1` datetime DEFAULT null COMMENT '创建时间1' after `column`,
ADD COLUMN `column2` datetime DEFAULT null COMMENT '创建时间2' after `column1`

数据表删除字段

ALTER TABLE `table_name` 
DROP column aaa,
DROP column	bbb

删除索引

ALTER TABLE `table_name`  
DROP INDEX index_name1 , 
DROP INDEX index_name2  

添加索引 牺牲空间换取时间

普通
ALTER TABLE `table_name` 
ADD INDEX index_name1 ( `column1` ),
ADD INDEX index_name2 ( `column2` )
主键
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 
唯一
ALTER TABLE `table_name` ADD UNIQUE (`column`) 
全文
ALTER TABLE `table_name` ADD FULLTEXT ( `column`) 
复合
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

mysql-insert into select from

INSERT INTO net_subject (buyer_id,subject_name,net_at,net_invalid_at,net_goods,created_at) 
SELECT buyer_id,'equipment',net_at,net_invalid_at,net_goods,now() from buyer_business 
WHERE net_subject='equipment' OR net_subject='equipment,erui';

如果两个表结构一样:
insert into table_name_new select * from table_name_old

如果两个表结构不一样:
insert into table_name_new(column1,column2…) select column1,column2… from table_name_old

类型的关键字的执行顺序

 FROM WHERE GROUP BY HAVING SELECT DISTINCT ORDER BY

避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 假如能通过WHERE子句限制记录的数目,那就能减少这方面的开销;
on、where、having这三个都可以加条件的子句中,on是最先执行,where次之,having最后;
因为on是先把不符合条件的记录过滤后才进行统计,它就可以减少中间运算要处理的数据,按理说应该速度是最快的,where也应该比having快点的,因为它过滤数据后才进行sum,在两个表联接时才用on的,所以在一个表的时候,就剩下where跟having比较了。
在这单表查询统计的情况下,where的作用时间是在计算之前就完成的,而having就是在计算后才起作用的,所以在这种情况下,两者的结果会不同。
在多表联接查询时,on比where更早起作用。系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where进行过滤,然后再计算,计算完后再由having进行过滤;

用EXISTS替代IN、用NOT EXISTS替代NOT IN

用EXISTS替换DISTINCT:
当提交一个包含一对多表信息的查询时,避免在SELECT子句中使用DISTINCT. 一般可以考虑用EXIST替换, EXISTS 使查询更为迅速,因为RDBMS核心模块将在子查询的条件一旦满足后,马上返回结果
(低效): SELECT DISTINCT DEPT_NO,DEPT_NAME FROM DEPT D , EMP E
WHERE D.DEPT_NO = E.DEPT_NO
(高效): SELECT DEPT_NO,DEPT_NAME FROM DEPT D WHERE EXISTS ( SELECT ‘X’ FROM EMP E WHERE E.DEPT_NO = D.DEPT_NO);

用>=替代>

6.key
MySQL 实际从 possible_key 选择使用的索引。 如果为 NULL,则没有使用索引,可以在 SELECT 语句中使用 USE INDEX (indexname)来强制使用一个索引或者用 IGNORE INDEX(indexname)来强制 MYSQL 忽略索引。
7.key_length
使用索引的长度。当然在不失精度的情况下 长度越小越好!

不要在 where 子句中的“=”左边进行函数、算术运算或其他表达式运算,否则系统将可能无法正确使用索引


$cond = []
$where['name'] = ['like', '%' . $condition['name'] . '%'];
$where['id'] = ['in', $idArr];
$where['id'] = ['not in', $idArr];
$where['status'] = $condition['status'];

$where[‘created_at’] = [

['egt', $condition['created_at_start']],
['elt', $condition['created_at_end']]

];

CREATE ALGORITHM=UNDEFINED DEFINER=root@% SQL SECURITY DEFINER VIEW v_buyer AS
select erui_buyer.buyer.id AS id,
erui_buyer.buyer.name AS NAME,erui_buyer.buyer.source AS source,
(case when (erui_buyer.buyer.source = 1) then ‘后台’
when (erui_buyer.buyer.source = 2) then ‘门户’
when (erui_buyer.buyer.source = 3) then ‘移动端’ end) AS source_name,

cc.name AS country,re.name AS region from
(
erui_buyer.buyer
left join erui_dict.country cc on
( (erui_buyer.buyer.country_bn = cc.bn) and (cc.deleted_flag = ‘N’) and (cc.lang = ‘zh’) )

left join erui_dict.region re on
( (cc.region_bn = re.bn) and (re.lang = ‘zh’) and (re.deleted_flag = ‘N’) )
)

where
(
(erui_buyer.buyer.deleted_flag = ‘N’) or
(
(erui_buyer.buyer.source = 1) and
(erui_buyer.buyer.buyer_code is not null) and
(erui_buyer.buyer.buyer_code <> ‘’)
)
)

update hotel_room_types INNER JOIN (SELECT id FROM hotel_room_types WHERE amenities REGEXP '^"') as b on hotel_room_types.id=b.id
set amenities=TRIM(BOTH '"' FROM replace(amenities,'\\','')) ;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值