sql建表、增删改、授权

您所在的位置:网站首页 sql获取表的列名 sql建表、增删改、授权

sql建表、增删改、授权

#sql建表、增删改、授权| 来源: 网络整理| 查看: 265

 1、数据定义语言DDL:用来定义和管理数据库中的对象  1、CREAT TABLE         

创建表语法:

CREATE TABLE  ( [NULL|NOT NULL]

[列级完整性约束条件] [,[列级完整性约束条件]…][,])

create table mytest//创建表 (sid number(6) not null primary key,//创建列sid ,类型number,长度6,不为空,设为主键 sname varcheat2(10) not null,//创建列sname ,类型varcheat2,长度10,不为空 ssex char(2) check(ssex in('男','女')));//创建列ssex ,类型char,长度2,设定约束只能取值男女 2、ALTER TABLE 

ALTER TABLE

         [ADD [完整性约束]

         [DROP]

         [MODIFY]];

alter table mytest add adderss varchar2(60);//新增列address,类型长度varchar2(60) 3、DROP TABLE  drop table mytest;//删除表mytest

 

2、数据操作语言DML:用来操作数据库中的对象和数据,是T-SQL中最常用的部分。 1、 SELECT 

SELECT select_list     //列名select_listFROM table_source   //表名table_source[ WHERE search_condition ]    //符合的条件search_condition [ GROUP BY group_by_expression ]//分组 [ HAVING search_condition ]//分组之后的条件 [ ORDER BY order_expression [ ASC | DESC ]

select ename from emp where ename like '_A%';//模糊查询,ename第一个字符不限制, 第二个字符为A,后面字符不限制 //(and 并,or 或) select * from emp order by hiredata desc ;//按照hiredata降序查询 select deptno,sum(sa1) as payroll from emp//统计列(sal别名为payroll)和列deptno,表为emp group by deptno;//以deptno相同的分为一组, select job,sum(sal) as payroll from emp//查询列job,sol别名payroll,表为emp where job not like 'SALE%'//条件为模糊查询job列值要有SALE group by job//分组job having sum(sal)>5000//条件为sal和大于5000 order by sum(sal) asc;//升序排列

1、)分组详解

组函数

COUNT()(个数)、SUM()(求和)、AVG()(平均)、MAX()(最大值)、MIN()(最小值)。

· COUNT(*):会实际的统计出表中的数据量; · COUNT(字段): |- 如果统计的字段上不包含有 null,那么与 COUNT(*)结果相同; |- 如果统计字段上包含有了 null,null 不参与统计; · COUNT(DISTINCT 字段):消除掉重复数据后的统计。

分组统计

· 限制一:统计函数单独使用时(没有 GROUP BY 子句)只能够出现统计函数,不能够出现其它字段。

正确的代码:SELECT COUNT(empno) FROM emp ;  错误的代码:SELECT COUNT(empno),ename FROM emp ; · 限制二:使用统计查询时(存在 GROUP BY 子句),SELECT 子句之中只允许出现统计函数与分组字段, 其它的任何字段都不允许出现。

正确的代码:  SELECT deptno,COUNT(empno) FROM emp GROUP BY deptno ;

错误的代码: SELECT deptno,COUNT(empno),ename FROM emp GROUP BY deptno ;

· 限制三:统计函数在分组之中可以嵌套使用,但是嵌套之后的统计查询之中,SELECT 子句不允许再出现 任何的字段,包括分组字段。

正确的代码: SELECT MAX(COUNT(empno)) FROM emp GROUP BY deptno ;

错误的代码: SELECT deptno,MAX(COUNT(empno)) FROM emp GROUP BY deptno ;

关于 WHERE 和 HAVING 的区别?

· WHERE 子句:是在分组前使用,而且不能够使用统计函数进行验证,经过 WHERE 筛选后的数据才可以分组; · HAVING 子句:必须结合 GROUP BY 子句一起出现,是在分组后的过滤,可以使用统计函数。

-- 没分组的大组 select count(empno) from emp; --由查询结果来看,可以根据部门编号分组 select * from emp order by deptno; --分组统计人数 select count(empno), deptno from emp group by deptno; --查询每个部门的平均工资 select avg(empno) avgsal, deptno from emp group by deptno; select count(*), deptno from emp; --会报错,因为没有group by分组所以统计函数统计的是整张表的 数据, --我们却非要强加在部门编号上是不对的,所以想要查询出来部门下的统计信息就必须要分组 --需要添加分组 select count(*), deptno from emp group by deptno; --分组查询出记录数,部门编号,部门名称 select count(*), d.deptno, d.dname from emp e, dept d where e.deptno = d.deptno group by d.deptno,d.dname; --分组查询每个部门下从事每种工作的人数 select count(*), deptno, job from emp group by deptno, job order by deptno;

原文链接:https://blog.csdn.net/qq_36260974/article/details/88732300

2、DELETE 

  DELETE [FROM ]

 {table_name  |view_name

 }

[ WHERE

 

delete from emp//删除的表为emp where deptno-(select deptno from dept where dname='SALES')//条件为deptno=(dept表,deptno列,dname值为'SALES') 3、INSERT    

INSERT [INTO] { talbe_name |view_name}

{[(column_list)]

{values ({default |NULL |expression } [,…n])}

insert into dept(deptno,dame,loc)//在表的平台中添加列名deptno,dame,loc中的值 values(20,'develop','dizhi');//按顺序添加的值分别为20,'develop','dizhi' 4、UPDATE 

 

Update { table_name |view_name }

 [from {}[,…n]

SET  column_name={expression |default |NULL}[,…]

[where  search_condition]

update emp//更新表emp set deptno-20//更新列deptno的值为20 where enpno-7782;//条件enpno=7782 update emp//更新表emp set (job,deptno)-(select job,deptno from emp where enpno-7499);//更新为,表emp,列为job,deptno,条件为enpno-7499的值 where enpno-7698;

 

3、数据控制语言DCL:用来控制用户对数据库对象操作的权限。

主要的命令有:

GRANT          REVOKE        

   grant|revoke  对象权限|all(全部权限)

   on 数据库对象

   to 数据库用户

[WITH GRANT OPTION] 

grant select on emp to myuser在emp(表)对象下授权myuser用户具有select查询权限, with grant option;//并可将select查询权限授予其他用户 revoke select on emp to myuser;//撤销myuser用户在emp对象的select查询条件     4、其他

单引号''区分大小写

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3