版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gaokcl/article/details/83503896
一,MySQL(一般):
1,创建数据库:
SET FOREIGN_KEY_CHECKS=0; // 修改外键约束( Mysql中如果表和表之间建立的外键约束,则无法删除表及修改表结构 )
DROP TABLE IF EXISTS `user`; // DROP TABLE会永久性地取消表定义,取消各分区,并取消储存在这些分区中的所有数据
CREATE TABLE `user` (
`iUserID` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`sAccount` varchar(100) NOT NULL COMMENT '账号',
`sPassword` varchar(100) NOT NULL COMMENT '密码',
`dCreateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`iStatus` tinyint(1) unsigned NOT NULL DEFAULT '1' COMMENT '状态字段:1-正常,2-删除',
PRIMARY KEY (`iUserID`) // 主键
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='用户表';
--------------------------------------------------------------------------------------------------------
2,mysql常用函数
DISTINCT1 // 去重
in(1,2) // 相当于 is_array() 或者 ||
concat()函数 // 将多个字符串连接成一个字符串。
concat_ws()函数 // 和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符
group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator '分隔符'] )
like: select sRoleID,GROUP_CONCAT(iUserID) as UId from reports where iStatus=1 group by sRoleID;
---------------------------------------------------------------------------------------------------------
3,时间字段类型:
datetime: “yyyy-mm-dd hh:mm:ss”格式 【 最常用 】
timestamp: “yyyymmddhhmmss”格式表示的时间戳值 year: “yyyy”格式的年份值。
||| timestamp 19700101000000 到2037 年的某个时刻 4字节
date “1000-01-01”到“9999-12-31” 3字节
*************************************************************************************
`dPublishTime` datetime NOT NULL COMMENT '发布时间',
`dCreateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
*************************************************************************************
---------------------------------------------------------------------------------------------------------
4,插入数据库:
INSERT INTO `t_user` VALUES ('1', 'admin', '123456', '2018-01-01 09:00:00', '1');
---------------------------------------------------------------------------------------------------------
5,当数据库中存在某个记录时,执行这条语句会更新它,而不存在这条记录时,会插入它
CREATE TABLE `t_stock_chg` (
`f_market` varchar(64) NOT NULL COMMENT '市场',
`f_stockID` varchar(10) NOT NULL DEFAULT '' COMMENT '股票代码',
`f_updatetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '插入时间戳',
`f_name` varchar(16) DEFAULT NULL COMMENT '股票名称',
PRIMARY KEY (`f_market`,`f_stockID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
语法:INSERT INTO tablename(field1,field2, field3, ...) VALUES(value1, value2, value3, ...) ON DUPLICATE KEY UPDATE field1=value1,field2=value2, field3=value3, ...;
INSERT INTO t_stock_chg(f_market, f_stockID, f_name) VALUES('SH', '600000', '白云机场') ON DUPLICATE KEY UPDATE f_market='SH', f_name='浦发银行';
---------------------------------------------------------------------------------------------------------
6.GROUP_CONCAT ( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator '分隔符'] )
参考:https://www.cnblogs.com/jkko123/p/6294718.html
select sRoleID,GROUP_CONCAT(iUserID) as UId from reports where iStatus=1 group by sRoleID;
---------------------------------------------------------------------------------------------------------
7,修改字段值:
// concat_ws()函数 // 和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符
UPDATE `graphicitem` SET memo = CONCAT_WS(' ',memo , '原创画稿') WHERE memo LIKE '%pop原创%';
UPDATE `fabricgallery_item` SET memo = CONCAT_WS(' ',memo , '原创画稿') WHERE memo LIKE '%pop原创%';
---------------------------------------------------------------------------------------------------------
8,增加字段,在 AFTER `sName` 后面:
ALTER TABLE `positions` ADD `sEnsName` varchar(255) NOT NULL COMMENT '英文职务名称' AFTER `sName` ;
---------------------------------------------------------------------------------------------------------
9, MySQL 修改字段类型或长度
alter table 表名 modify column 字段名 类型;
---------------------------------------------------------------------------------------------------------
10,修改字段类型、设置默认值,以及添加注释:
ALTER TABLE m_cultureact_gzl MODIFY COLUMN SIGN INT(1) DEFAULT 1 COMMENT '为了给前台区分是列表订票还是票务中
===========================================================================================================
二,MySQL视图:
参考:https://blog.csdn.net/moxigandashu/article/details/63254901
https://www.cnblogs.com/geaozhang/p/6792369.html
// 两张表联查,中文表report的数据库表字段的值不变,翻译表随着操作(增删改查)改变
// 强制使用ALGORITHM = MERGE函數
DROP VIEW `translate_view`;
CREATE ALGORITHM = MERGE VIEW `translate_view` (
iTopicId,
iOriginColumn,
iGender,
sIndustry,
iSeason,
dPubTime,
sTitle,
sImgPath,
ml_id,
ml_sTitle,
ml_iTranslatorId,
ml_iTranslateStatus,
ml_dTranslateTime,
ml_iVerifyId,
ml_iVerifyStatus,
ml_dVerifyTime,
ml_iPublishId,
ml_iPublishStatus,
ml_dPublishTime
) AS (
SELECT
`A`.`iTopicId` AS `iTopicId`,
`A`.`iOriginColumn` AS `iOriginColumn`,
`A`.`iGender` AS `iGender`,
`A`.`sIndustry` AS `sIndustry`,
`A`.`iSeason` AS `iSeason`,
`A`.`dPubTime` AS `dPubTime`,
`A`.`sTitle` AS `sTitle`,
`A`.`sImgPath` AS `sImgPath`,
`B`.`id` AS `ml_id`,
`B`.`sTitle` AS `ml_sTitle`,
`B`.`iTranslatorId` AS `ml_iTranslatorId`,
ifnull(`B`.`iTranslateStatus`, 2) AS `ml_iTranslateStatus`, // IFNULL(expr1,expr2) ;如果 expr1 不是 NULL,IFNULL() 返回 expr1,否则它返回 expr2
`B`.`dTranslateTime` AS `ml_dTranslateTime`,
`B`.`iVerifyId` AS `ml_iVerifyId`,
`B`.`iVerifyStatus` AS `ml_iVerifyStatus`,
`B`.`dVerifyTime` AS `ml_dVerifyTime`,
`B`.`iPublishId` AS `ml_iPublishId`,
`B`.`iPublishStatus` AS `ml_iPublishStatus`,
`B`.`dPublishTime` AS `ml_dPublishTime`
FROM
(
`report` `A`
LEFT JOIN `report_translate` `B` ON (
(
`A`.`iTopicId` = `B`.`iTopicId`
)
)
)
WHERE
(
(`A`.`iStatus` = 0)
AND (
(`B`.`iSubTopicId` = 0)
OR isnull(`B`.`iSubTopicId`)
)
)
);
=================================================================================================
三,储存过程(call)[ navicat 数据库下的 函数]
参考:https://www.cnblogs.com/cxxjohnson/p/5965194.html
// declare : 定义的变量类似java类中的局部变量,仅在类中生效。即只在存储过程中的begin和end之间生效
// 自定义变量:DECLARE a INT ; SET a=100; 可用以下语句代替:DECLARE a INT DEFAULT 100;
// concat : mysql CONCAT()函数用于将多个字符串连接成一个字符串
// floor:函数只返回整数部分,小数部分舍弃 || round:函数四舍五入,大于0.5的部分进位,不到则舍弃
create procedure sp_name() // 创建储存过程
----------------------------------------------
BEGIN
DECLARE chars_str varchar(100) DEFAULT 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';// 验证码字符串
DECLARE return_str varchar(255) DEFAULT t;
DECLARE i INT DEFAULT 0;
WHILE i < l DO
SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));
SET i = i +1;
END WHILE;
RETURN return_str;
END
--------------------------------------------
call sp_name() // 调用储存过程
drop procedure sp_nam // 删除储存过程