sql建表、增删改、授权 |
您所在的位置:网站首页 › sql获取表的列名 › sql建表、增删改、授权 |
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 TABLEALTER TABLE [ADD [完整性约束] [DROP] [MODIFY]]; alter table mytest add adderss varchar2(60);//新增列address,类型长度varchar2(60) 3、DROP TABLE drop table mytest;//删除表mytest2、数据操作语言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、DELETEDELETE [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、INSERTINSERT [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 REVOKEgrant|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 |