SQL语言

一、SQL语言
分4类:
DDL数据定义语言,不支持事务。使用truncate时,表不能与他表有关联
 【createalterdroptruncate】
DML数据操纵语言,支持事务。
 【insertupdatedeleteselect】
TCL事务控制语言
 【commit、savepoint、rollback】
DCL数据控制语言
 【grantrevoke】

二、事务
1、事务具有隔离性
如果在一个命令行窗口中添加一条数据,
不commit的话,重新打开一个命令行窗口将查询不到此条数据
2、事务的隔离策略

三、truncatedelete性能高

===修改数据===
select * from dept for update;
解锁
修改数据
选“对勾”
选齿轮右边的“提交”按钮:必须提交,否则在另一个窗口中将看不到数据。

四、sql的使用

1、between
between 值1 and 值2 :[值1,值2],即值1 ≤ 列 ≤值2

2、重命名表名
MySQL:alter table test rename as test1;
Oracle:alter table test rename to test1;

3、重命名字段
mysql:
alter table test change old_name new_name varchar(20);
oracle:
alter table test rename old_name to new_name;

4、当前时间
MySQL:now()
Oracle:sysdate
例如:
查询当前日期所在月的最后一天
select  LAST_DAY(NOW())  from dual;
select  LAST_DAY(SYSDATE) from dual;

5、纵表转横表
这里写图片描述
tip:将语文、数学、英语作为新的字段
sql语句如下:

select username,

    sum(case Course when '语文' then Grade else 0 end) as 语文,

    sum(case Course when '数学' then Grade else 0 end) as 数学,

    sum(case Course when '英语' then Grade else 0 end) as 英语

from Table1 group by username

或者

select username,

    max(case Course when '语文' then Grade else 0 end) as 语文,

    max(case Course when '数学' then Grade else 0 end) as 数学,

    max(case Course when '英语' then Grade else 0 end) as 英语

from Table1 group by username

6、横表转竖表
横表结构:heng_biao
ID 姓名 语文 数学 英语
1 张三 80 90 70
2 李四 90 85 95

转换后的纵表结构:
ID 姓名 科目 成绩
1 张三 语文 80
2 张三 数学 90
3 张三 英语 70
4 李四 语文 90
5 李四 数学 85
6 李四 英语 95

tip:将heng_biao的语文、数学、英语这3个字段名改为“成绩”,再增加“科目”这个字段,值分别为‘语文’、‘数学’、‘英语’。
sql语句如下:

SELECT 姓名,'语文' AS 科目,语文 AS 成绩 FROM TableA 
UNION ALL
SELECT 姓名,'数学' AS 科目,数学 AS 成绩 FROM TableA 
UNION ALL
SELECT 姓名,'英语' AS 科目,英语 AS 成绩 FROM TableA ORDER BY 姓名,科目 DESC;

7、批量修改指定字段的数据

update 表名 set 字段=replace(字段,’原内容’,’新内容’) where 条件
8、mysql 使用group_concat()把所有行的id用逗号拼接起来

(1)SELECT GROUP_CONCAT(cast(`id` as char(10)) SEPARATOR ',') from table_name;
(2)select id,group_concat(name separator ';') from aa group by id;
因为通常id是int类型,直接执行GROUP_CONCAT(id SEPARATOR ','),返回的将是BLOB类型,所以通过cast函数转换字符类型
这样的所有id用逗号串起来的整个字符串
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值