MySQL学习之表记录操作

插入

insert [into] t1(id, name) values/value(1, 'alex'); 

说明
[into]可以省略;
values or value

方式一

insert t1(id, name) values(1, 'egon');  # 一次插入一行记录
insert t1(id, name) values(2, 'egon'), (3, 'peiqi');  # 一次插入多行记录

方式二

insert t1(id, name) values(2, '');  # 插入''

insert t2() values();  # t2() ==> t2(id, name), values(), 为每个字段插入Null(如果允许的话)

insert t2 values(1, 'abc'), (2, 'abc');  # 如果为每个字段插入值, 可以直接写t2, t2 ==> t2() ==> t2(id, name)

方式三

insert t11 select * from t12;

insert t11(name, age) select name, age from t12;

insert student select * from student where student.id > 1; # 这种插入可以接条件

方式四

insert t11 set a=b'11';  # 通过set插入值
insert t11 set b=b'1000', c=b'111';

# =====================================================================
# 注意: 如果在insert的过程中, 未正确插入(是values部分, 也就是插入的值不符合定义),
# 并且表设置了auto_increment, 则auto_increment的值, 已经发生了变化.
# 例如: 当前的auto_increment值为3, name字段定义为char(1),
# 现在执行错误语法的insert语句, insert into tb5(name) values(‘a’), (‘bb’), (‘c’);
# (当然, 如果是values(‘bb’), (‘a’), (‘c’), 则auto_increment不会发生变化.)
# 执行完后, 未正确插入, 此时下一个插入的值的auto_increment的值为6
# ===========================================================================

删除

delete from t1;  # 不接where子句, 默认删除全部记录
delete from t1 where id < 1;
# 这种方式清空后,再插入记录,如果有auto_increment的话,就会从删除前的位置继续增长
# 也就是, SQL DELETE 语句会保持表中的结构、属性、索引、自增计数不变
# 最佳实战:
# 使用 SQL DELETE 语句一定要附加 WHERE 子句,如果删除所有记录,也要用 WHERE 1=1;

# 注意:在删除记录时要格外小心!因为删除的数据没法恢复,没有后退机制!!!!!!!!!!!!!!!!!!!!!!!
truncate table t2;  # 这种方式清空后,从头再来
truncate t2;    # (如果表中有外键等约束,是无法清空的),table可以省略
# 如果要删除表的所有行的话,推荐使用truncate,效率高,因为不用保存表的状态

更新

单张表

# =============
UPDATE [LOW_PRIORITY] [IGNORE] table_reference
    SET assignment_list
    [WHERE where_condition]
    [ORDER BY ...]
    [LIMIT row_count]
# =============

多张表

# =============
UPDATE [LOW_PRIORITY] [IGNORE] table_references
    SET assignment_list
    [WHERE where_condition]
# =============
update t1 set name='egon';  # 修改表中的所有记录的name字段

update t1 set name='alex', tel='123456';  # 可以一次修改多个字段

update t1 set name='hardy' where id=1997 and sex='M';  # 通过where指定条件, 修改特定的记录
update t1 set name='eva-j' where id > 1 order by -id limit 2;  # 还可以指定order by 以及 limit

查询

select ... from ...
select ... into ...

select * from t1;

select id, name, age from t2;

select id, name, age, gender as g from t2 where id > 1;  # as指定别名

select id, name, age, gender g from t2 where id > 1;  # 也可省略as
# 实际工作中不要用 * ,效率不高。要哪些就写哪些。
select UPPER('egon') into @res;
SELECT @res;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值