SQL入门资料

SQL语法

SQL语法手册|菜鸟教程
MySQL语句大全
SQL教程
SQL语句高级查询
sql where 1=1和 0=1 的作用
SQL之case when then用法
MySql 时间戳格式化函数from_unixtime使用说明
MySQL中的UNIX_TIMESTAMP函数使用总结
SQL中Group By、Group By All、Having、where、Compute、Compute by的使用

/**现在时刻与表a的创建时间间隔少于1天的sql**/
UNIX_TIMESTAMP(now())-a.created_date<86400
1<>1 的用处: 
用于只取结构不取数据的场合 
例如: 
create table table_temp  as 
select * from table_ori where 1<>1 
建成一个与table_ori 结构相同的表table_temp,但是不要table_ori 里的数据。(除了表结构,其它结 

构也同理) 
public List<ChatMessage> findChatMessageByQuery(ChatMessage params) {
        StringBuilder sql = new StringBuilder();
        sql.append("select t.* from");
        sql.append(" (select a.id, a.content, a.msg_type, a.create_time, a.is_group_chat, a.status,");
        sql.append(" (case when a.speaker_id = ? then 0 else 1 end) direction,");
        sql.append(" a.speaker_id, speaker.dept_name speaker_dept, ");
        if (params.getIsGroupChat() == 1) {
            sql.append(" (case when a.is_group_chat = 1 then if(length(trim(member.member_name)) > 0, member.member_name, speaker.user_name) else speaker.user_name end) speaker_name,");
        }else {
            sql.append(" speaker.user_name speaker_name, ");
        }
        sql.append(" speaker.profile_image_url speaker_head, a.audience_id");
        sql.append(" from taxtao_im_chat_message a");
        sql.append(" left join taxtao_user_account speaker ON a.speaker_id = speaker.id");
        if (params.getIsGroupChat() == 1) {
            sql.append(" left join taxtao_im_chat_group_member member on member.group_id = a.audience_id and member.member_user_id = speaker.id");
        }
        sql.append(" where 1 = 1");

        List<Object> args = new ArrayList<>();
        args.add(params.getSpeakerId());

        //通过群组id获取群所有消息
        if (params.getIsGroupChat() == 0 && StringUtils.isNotBlank(params.getSpeakerId()) && StringUtils.isNotBlank(params.getAudienceId())) {
            sql.append(" and (a.speaker_id = ? or a.speaker_id = ?)");
            sql.append(" and (a.audience_id = ? or a.audience_id = ?)");
            args.add(params.getSpeakerId());
            args.add(params.getAudienceId());
            args.add(params.getSpeakerId());
            args.add(params.getAudienceId());
        } else if (params.getIsGroupChat() == 1 && StringUtils.isNotBlank(params.getAudienceId())) {
            sql.append(" and a.audience_id = ?");
            args.add(params.getAudienceId());
        }

        //cursor为上一页最后一条案例的create_time(如果是第一页则为当前时间)
        if (StringUtils.isNotBlank(params.getCursor())) {
            sql.append(" and a.create_time < from_unixtime(?)");
            args.add(params.getCursor());
        } else {
            sql.append(" and a.create_time < now()");
        }

        //返回条数
        if (params.getLimit() != 0) {
            sql.append(" order by a.create_time desc limit ").append(params.getLimit()).append(" ) t ");
        } else {
            sql.append(" order by a.create_time desc) t ");
        }

        sql.append(" order by t.create_time asc");

        return dao.findList(sql.toString(), args.toArray(), ChatMessage.class);
    }

存取过程

数据库存储过程详解
MySql数据库学习–存储过程


MAC配置MySQL

MAC下安装与配置MySQL
mac安装mysql的方法(含配置)
Sqlyog Mac版 (数据库管理工具) v1.0 苹果电脑版
【MySQL数据库开发之一】Mac下配置安装数据库-MySQL
mac下mysql terminal命令行设置以及常规用法

连接本地数据库和远程数据库
一、MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格)

C:\>mysql -h localhost -u root -p123
二、MySQL 连接远程数据库(192.168.0.201),端口“3306”,用户名为“root”,密码“123”

C:\>mysql -h 192.168.0.201 -P 3306 -u root -p123

mac MySql查看执行日志
项目中经常需要查看mysql的实际执行情况,这种时候就有必要对mysql进行配置,来查看执行的sql
首先,在命令行中连接数据库

mysql -u root -p

在mac环境下,只需要以下简单的设置就可以查看了

mysql>set global general_log=on;  

可以指定日志文件,我这里直接使用默认的日志文件啦

show variables like 'general_log_file'

默认日志文件位置:
location_log

这个文件需要权限才能查看,于是赋予当前用户查看权限,

设置权限:

sudo chmod 777 /usr/local/mysql/data/localhost.log

完成之后直接用mac的console就可以查看啦。


//java jpa查询
@Query(nativeQuery = true, value = "select count(1) from user_pay_services where user_id = ?1 and service_type = ?2 and service_item_id = ?3 and service_expires_time > now() and service_state = 0")
    public int isPayByUserId(String userId, int serviceType, String serviceItemId);

Hibernate

Hibernate 教程极客学院
Hibernate教程W3C
hibernate中@Entity和@Table的区别

JPQL
一步一步学SpringDataJpa——JpaRepository查询功能
spring mvc 的jpa JpaRepository数据层 访问方式汇总
使用MySQL Workbench建立数据库,建立新的表,向表中添加数据


MyBatis

MyBatis w3cSchool
MyBatis动态SQL标签用法
MyBatis中的CDATA标签的用法

在Mybatis的XML映射文件中,符号表示注意:
 1. ${} 代表:字符串拼接   . {v},{a},{b}...  v,a,b可以随便填写,代表参数
 2.#{}代表占位符. {value},花括号里面只能填写value

MySqlWorkBench

Error Code: 1175. To disable safe mode, toggle the option in Preferences -> SQL Editor -> Query Editor and reconnect.
You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column

使用安全更新模式的时候update语句必须使用一个关键字列属性来限定更新的范围。如果不使用关键字列来限定范围或更新所有记录的时候就不能用安全更新模式。
解决办法是执行以下语句设置为非安全更新模式.

SET SQL_SAFE_UPDATES=0;  
如果改成   
SET SQL_SAFE_UPDATES=1;  
就是安全模式 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值