SQL 按语句分类:
- DDL(data definition language)数据定义语句
数据定义语句主要是定义了不同的数据段,数据库,表,列,索引等数据库对象。常用语句关键字:create,drop,alter etc.
- DML(data manipulation language)数据操纵语句
数据操纵语句主要是用于添加,删除,更新,查询数据库记录,并检查数据完整性。常用语句关键字:insert,delete,update,select etc.
- DCL(data control language)数据控制语句
数据控制语句用于控制不同数据段直接的许可和访问级别的语句,主要是定义了数据库,表,字段,用户的访问权限和安全级别。常用语句关键字:grant,revoke etc.
修改操作
- DDL修改操作
-
修改表类型
Alter table tablename modify [column] column_definition [first |after column_name]
例如: 将A表的id字段int(5)改int(11).
alter table A modify id int(11);
-
增加表字段
Alert table tablename add [column] column_definition [first |after column_name]
例如: 在表A中新增字段a,类型 int(3).
alert table A add a int(3);
-
删除表字段
Alert table tablename drop [column] column_name
例如:删除A表的字段a.
alert table A drop a;
-
修改表字段
Alert table tablename change [column] old_column_name column_definition [first|after column_name]
例如:将A表的字段a修改a1,同时将字段类型更为bigint(4).
alert table A change a a1 bigint(4);
注意:change和modify都可以修改表的定义,区别是change 后需要写两次列名。但change的优点主要是修改列名称,modify则不能。
补充:在DDL操作中,修改语法(ADD/MODIFY/CHANGE)都有一个可选项[first|after column_name],主要是修改字段在表中的位置。
- DML修改语句
-
单条单表更新记录
update tablename set field1=val1,field2=val2,…fieldn =valn [where condition]
例如:将A表中a 为“100”的状态从1更为2.
update A set status=2 where a= 100
-
单条多表更新记录
update t1,t2,…tn set t1.field1=expr1,…, tn.fieldn=exprn [where condition]
例如:同时更新A表和B表中的a字段。
update A a,B b set a.a=1*2,b.a=2 where a.id = b.aId
; -
单条批量更新记录
UPDATE order1 a
INNER JOIN (
select DATE_ADD((w.maxCriticalTime),INTERVAL 24 MONTH)as invalid_time, w.course_order_id ,w.student_id FROM order1 co ,
(
select a.student_id ,b.start_time, a.max_critical_time,b.booking_id , b.order_id ,b.class_status from A a
LEFT JOIN B b on a.student_id = b.student_id and a.maxCriticalTime = b.start_time
where b.class_status in(0,100,200,300,400)
) as w
WHERE co.order_id = w.order_id and co.valid_time = 0 and co.order_price is not null and co.order_price > 10000
)b on a.order_id = b.order_id and a.valid_time = 0 and a.student_id = b.student_id
SET a.failure_time = b.invalid_time,a.update_time= now(),a.update_user= ${updateUser}