【数据库】涉及命令的问题

一、truncate与delete的区别是什么

TRUNCATE TABLE:删除内容、不删除定义、释放空间

DELETE TABLE:删除内容、不删除定义、不释放空间

DROP TABLE:删除内容和定义,释放空间

1.truncate table表名,只能删除表中全部数据

delete from 表名 where...,可以删除表中全部数据,也可以删除部分数据

2.delete from记录是一条条删的,所删除的每行记录都会进日志,而truncate一次性删掉整个页,因此日志里面只记录页释放

3.truncate删除后,不能回滚。delete可以回滚

4.truncate的执行速度比Delete

5.Delete执行后,删除的数据占用的存储空间还在,还可以恢复数据

Truncate删除的数据占用的存储空间不在,不可以恢复数据

 

二、sql的授权语句和回收权限语句?

grant 权限 on 数据库对象 to 用户

grant insert on scott.Employees to user1,user2;

grant delete on scott.Employees to user1,user2;

grant select  on scott.Employees to user1,user2;

grant update on scott.Employees to user1,user2;

revoke 权限 on 数据库对象 from 用户

 

三、怎么新加一行记录、怎么添加一个列字段,修改列

插入一行数据:

insert into stu(stuName,stuAge,stuSex) values('张三','20','男')

增加列:

alter table tableName add (column) columnName varchar(30); 一定要有数据类型

删除列:

alter table tableName drop (column) columnName

 

四、seletct count(*)和select count(数字)以及select count(column)区别

count(*)跟count(1)的结果一样,返回记录的总行数,都包括对NULL的统计,而count(column)是不包括NULL的统计。

 

五、EXISTS关键字的使用方法

EXISTS关键字表示存在。使用EXISTS关键字时,内层查询语句不返回查询的记录,而是返回一个真假值。

如果内层查询语句查询到符合条件的记录,就返回一个真值(true),否则,将返回一个假值(false):

  • 当返回的值为true时,外层查询语句将进行查询。
  • 当返回的值为false时,外层查询语句将不进行查询或者查询不出任何记录。

 

六、有一个学生表,三个字段:name、course、score,每一个学生都有三门课程,比如数学、语文、英语,写SQL语句,查找出三门课程的成绩都大于80的学生。

采用逆向思维。求三门成绩都大于80 的人,也可以时使先查出有成绩小于80的人,再出这些人就是三门成绩都大于80的人了。

方法1:

SELECT 
    DISTINCT A.name
FROM
    STUDENT A
WHERE
    A.NAMENOT IN ( SELECT DISTINCT S>NAME FROM STUDENT S WHERE S.SCORE < 80 )

方法2:

SELECT 
    S.NAME
FROM
    STUDENT S 
GROUP BY
    S.NAME
HAVING
    MIN(S.SCORE) >= 80

 

七、判断表的字段值是否为空

1.查询字段值为空的语法:where <字段名> is null

2.查询字段值不为空的语法:where <字段名> is not null 或者 where NOT (<字段名> IS NULL)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值