事务就是一组 SQL 语句,当数据库执行这组 SQL 的时候要不全部执行这组 SQL,否则只要有一条 SQL 无法执行整组 SQL 都无法执行。
并不是任何执行的 SQL 序列都是事务,事务有以下四个特性:
原子性(atomicity)
一个事务是一个不可分割的最小工作单元,一个事务中的所有操作要么全部执行,要么全部回滚不执行,事务不可能只执行一部分操作。
一致性(consistency)
一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。比如银行账户A转账给B时,无论事务如果执行最后结果A、B的总金额不会变。
隔离性(i
最烂的代码不仅挑战你的智商,还挑战你的笑点。刚开始看的时候感觉自己智商不够用,看懂后感觉自己笑点不够高!
插入 students 表一条数据包含所有字段的值
insert into students values (1,'0001','洛基',2,25,'2019-12-20 20:00:00','2019-12-20 20:00:00');
执行
mysql> insert into students values (1,'0001','洛基',2,25,'2019-12-20 20:00:00','2019-12-20 20:00:00');
Query OK, 1 row affected (0.00 sec)
一次插入多条数据包含所有字段的值到 mysql
insert into s
创建表
创建学生表 SQL
create table if not exists`students` (
`id` int not null auto_increment comment '学生id',
`no` char(5) not null comment '学生学号',
`name` varchar(128) not null default '' comment '学生姓名',
`sex` tinyint not null default 0 comment '0 无 1 女 2 男',
`age` tinyint null default
MySQL 创建库语法
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_specification] ...
create_specification:
[DEFAULT] CHARACTER SET [=] charset_name
| [DEFAULT] COLLATE [=] collation_name
创建一个默认的数据库
create database school;
执行结果
mysql> create database school;
Query OK, 1 row affecte
最近接触公司的 java 项目,发现大家对 vo、po、dto、bo、pojo、dao、entity 使用比较乱,所以这里简单整理下。
各名词的作用
VO(value object) 值对象
用于业务之间的数据传输,和 PO 一样只包含数据和对应的 getter 和 setter,可以和数据库中字段对应也可以不对应。
PO(persistent object) 持久化对象
PO 对应于数据库中的一张表,字段和表字段一一对应,PO 只包含数据和对应的 getter 和 setter 函数。在使用中 PO 用来表示数据库查询结果的一条记录,多条记录使用 PO 的集合表示。
DTO(data tra
gorm 简介
gorm 是 go 语言中实现的比较好的 ORM 包,且是国人开发的。项目地址
事故描述
Scan 是 gorm 提供的一个把数据库结果读取到 struct 的函数。定义如下:
// Scan scan value to a struct
func (s *DB) Scan(dest interface{}) *DB {
return s.NewScope(s.Value).Set("gorm:query_destination", dest).callCallbacks(s.parent.callbacks.queries).db
}
今天同事小张写代码的时候写了一个
最近做了一个简单的短链接服务,短链接使用自增 id 转化为 62 进制(10 个数字+26个小写字母+26个大写字母),但是发现插入数据库报了索引插入重复。
展示
创建测试表
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`short_url` varchar(255) NOT NULL COMMENT '测试',
PRIMARY KEY (`id`),
UNIQUE KEY `short_url` (`short_url`)
) ENGINE=InnoDB AUTO_INCREMENT
show processlist
show processlist 用来查看 MySQL 正在运行的线程,如果使用 root 账号可以看到所有用户的线程或者只能看到所使用账号自己的线程,当然如果该用户被赋予了 Process 权限也是可以查看所有用户的线程的。
命令使用展示:
mysql> show processlist;
+-----+------+-----------+------+---------+------+----------+------------------+
| Id | User | Host | db | Command | Time | S
今天要查询一个根据手机号返回用户的姓名,但是想要的 SQL 查询的结果的顺序和 in 后面数组里手机号顺序一样,使用 order by field(phone,111,222)
select name,phone from users where phone in
(18800000000,18800000000001) order by field(phone, 18800000000,18800000000001)