SQL 相关笔记整理

SQL 按语句分类:
  1. DDL(data definition language)数据定义语句

数据定义语句主要是定义了不同的数据段,数据库,表,列,索引等数据库对象。常用语句关键字:create,drop,alter etc.

  1. DML(data manipulation language)数据操纵语句

数据操纵语句主要是用于添加,删除,更新,查询数据库记录,并检查数据完整性。常用语句关键字:insert,delete,update,select etc.

  1. DCL(data control language)数据控制语句

数据控制语句用于控制不同数据段直接的许可和访问级别的语句,主要是定义了数据库,表,字段,用户的访问权限和安全级别。常用语句关键字:grant,revoke etc.

修改操作
  • DDL修改操作
  1. 修改表类型

    Alter table tablename modify [column] column_definition [first |after column_name]

    例如: 将A表的id字段int(5)改int(11).
    alter table A modify id int(11);

  2. 增加表字段

    Alert table tablename add [column] column_definition [first |after column_name]

    例如: 在表A中新增字段a,类型 int(3).
    alert table A add a int(3);

  3. 删除表字段

    Alert table tablename drop [column] column_name

    例如:删除A表的字段a.
    alert table A drop a;

  4. 修改表字段

    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修改语句
  1. 单条单表更新记录

    update tablename set field1=val1,field2=val2,…fieldn =valn [where condition]

    例如:将A表中a 为“100”的状态从1更为2.
    update A set status=2 where a= 100

  2. 单条多表更新记录

    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;

  3. 单条批量更新记录

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}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值