昨天遇到一个小问题,是使用JPA的注解对数据进行修改操作
对:
@Transactional
@Modifying
@Query("update Person p set p.name=?1")
void updateById(String name);
这里要注意的是@Transactional注解和@Modifying注解,而@Query注解是自定义SQL语句, 在这里Person是一个@Bean对象不是普通SQL中的表名,所以p.name是该对象的属性
- update (修改)
select * from Tablename where field1=‘*****’ (确定修改的数据)
begin tran --rollback (开启一个事务,以便失误后回滚)
update Tablename set field2= ‘*****’ where filed1='*****'
commit (提交)
(1) 数据记录筛选:
sql=“select * from 数据表 where 字段名=字段值 order by 字段名 [desc]”
sql=“select * from 数据表 where 字段名 like ‘%字段值%’ order by 字段名 [desc]”
sql=“select top 10 * from 数据表 where 字段名 order by 字段名 [desc]”
sql=“select * from 数据表 where 字段名 in (‘值1’,‘值2’,‘值3’)”
sql=“select * from 数据表 where 字段名 between 值1 and 值2”
select * from LCACCEPTINSURANCE where ID like '17%' and ID like '%04' (查询ID字段以17开头04结尾的数据)
select * from LCACCEPTINSURANCE where ID like '1[67]%' (查询ID字段以16.17开头的数据)
select * from LCACCEPTINSURANCE where ID between 162483 and 162485 order by ID desc (查询ID字段条件之间的数据)
select top 100 * from LCACCEPTINSURANCE where ID like '16%'order by ACCEPTDATE desc(查询ID字段以16开头的数据,并以ACCEPTDATE字段进行筛选出前100条数据)
(2) 更新数据记录:
sql=“update 数据表 set 字段名=字段值 where 条件表达式”
sql=“update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式”
(3) 删除数据记录:
sql=“delete from 数据表 where 条件表达式”
sql=“delete from 数据表” (将数据表所有记录删除)
(4) 添加数据记录:
sql=“insert into 数据表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)”
sql=“insert into 目标数据表 select * from 源数据表” (把源数据表的记录添加到目标数据表)
(5) 数据记录统计函数:
AVG(字段名) 得出一个表格栏平均值
COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
MAX(字段名) 取得一个表格栏最大的值
MIN(字段名) 取得一个表格栏最小的值
SUM(字段名) 把数据栏的值相加
引用以上函数的方法:
sql=“select sum(字段名) as 别名 from 数据表 where 条件表达式”
set rs=conn.excute(sql)
用 rs(“别名”) 获取统的计值,其它函数运用同上。
(6) 数据表的建立和删除:
CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
例:CREATE TABLE tab01(name varchar(50),datetime default now())
DROP TABLE 数据表名称 (永久性删除一个数据表)
如果我们要修改数据库中表的数据,这个时候我们就要使用到UPDATE语句。
UPDATE语句的基本语法是:
UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...;
例如,我们想更新employees表id=100的记录的last_name和salary这两个字段,先写出UPDATE employees SET name=”大哥”, salary = 54000,然后在WHERE子句中写出需要更新的行的筛选条件id=100:
即UPDATE employees SET last_name='大哥', salary=54000 WHERE employee_id=100;
--修改前:
--修改后:
在这里我们发现UPDATE语句的WHERE条件和SELECT语句的WHERE条件其实是一样的,因此完全可以一次更新多条记录:
UPDATE employees SET last_name='TEST', salary=54000 WHERE employee_id>=101 and employee_id<=105;
--修改前:
--修改后:
在UPDATE语句中,我们在更新字段时还可以使用表达式。
例如,把所有50000元以上工资的员工加666元:
UPDATE employees SET salary=54000+666 WHERE salary >= 50000;
--查询结果
其中,SET salary=54000+666就是给当前行的salary字段的值加上了666。
如果WHERE条件没有匹配到任何记录,UPDATE语句不会报错,但是也不会有任何记录被更新。
UPDATE语句可以没有WHERE条件,例如:
UPDATE employees SET salary=54000+666
这个时候,整个表的所有记录都会被更新。所以,在执行UPDATE语句时要非常小心,最好先用SELECT语句来测试WHERE条件是否筛选出了期望的记录集,然后再用UPDATE进行更新。
昨天遇到一个小问题,是使用JPA的注解对数据进行修改操作
对:
@Transactional
@Modifying
@Query("update Person p set p.name=?1")
void updateById(String name);
这里要注意的是@Transactional注解和@Modifying注解,而@Query注解是自定义SQL语句, 在这里Person是一个@Bean对象不是普通SQL中的表名,所以p.name是该对象的属性
转载于:https://my.oschina.net/u/3843989/blog/1812267
sql语句修改数据
SQL 中,可以使用 UPDATE 语句来修改、更新一个或多个表的数据。
语法格式为:UPDATE SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句 ]
[ORDER BY 子句] [LIMIT 子句]
语法说明如下::用于指定要更新的表名称。
SET 子句:用于指定表中要修改的列名及其列值。其中,每个指定的列值可以是表达式,也可以是该列对应的默认值。如果指定的是默认值,可用关键字 DEFAULT 表示列值。
WHERE 子句:可选项。用于限定表中要修改的行。若不指定,则修改表中所有的行。
ORDER BY 子句:可选项。用于限定表中的行被修改的次序。
LIMIT 子句:可选项。用于限定被修改的行数。
注意:修改一行数据的多个列值时,SET 子句的每个值用逗号分开即可。
示例:mysql> UPDATE tb_courses_new
-> SET course_name='DB',course_grade=3.5
-> WHERE course_id=2;
Query OK, 1 row affected (0.13 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> SELECT * FROM tb_courses_new;
+-----------+-------------+--------------+------------------+
| course_id | course_name | course_grade | course_info |
+-----------+-------------+--------------+------------------+
| 1 | Network | 4 | Computer Network |
| 2 | DB | 3.5 | MySQL |
| 3 | Java | 4 | Java EE |
| 4 | System | 4 | Operating System |
+-----------+-------------+--------------+------------------+
4 rows in set (0.00 sec)
PHP中文网,有大量免费的SQL教程,欢迎大家学习!