一、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)