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 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_list
FROM 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

  <search_condtion>

] 

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 {<table_soource>}[,…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、其他

單引號''區分大小寫

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章