首页 > 代码库 > 简易SQL语句

简易SQL语句

 

 

 

/*创建 模式 为用户 User1*/
CREATE SCHEMA test authorization  User1;

CREATE SCHEMA test  USER User1;



CREATE TABLE student
(
Sno NUMERIC(10)  PRIMARY KEY      //主键
CONSTRAINT c1 CHECK(Sno BETWEEN 90000 AND 99999),

Sname CHAR(20) NOT NULL     UNIQUE,  //取唯一值
 
Sage NUMERIC(3)
CONSTRAINT c3 CHECK(Sage<30),

Ssex CHAR(2)
CONSTRAINT c4 CHECK (Ssex IN (,)),


);

CREATE TABLE sc
(
Sno CHAR(10),
Cno CHAR(10),
Grade SMALLINT CHECK (Grade>=0 AND Grade <= 100),

/*当主码是属性集合时使用    主码为表级完整性约束条件*/
PRIMARY KEY(Sno,Cno),

/*外键    字符长度需相同   表级完整性约束条件1*/
FOREIGN KEY (Sno) REFERENCES student(Sno),
FOREIGN KEY (Cno) REFERENCES course(Cno)

);



DROP  TABLE student RESTRICT;     /*联级删除*/
DROP  TABLE student CASCADE;     /*不是联级删除*/

/*

更改表

*/
ALTER TABLE student
ADD COLUMN  <新列名> <数据类型>[完整性约束]
ADD <表级完整性约束> 
DROP [COLUMN] <列名> [CASCADE|RESTRICT]
DROP CONSTRAINT <完整性约束名> [RESTRICT|CASCADE]

ALTER COLUMN <列名><数据类型>





/*      查询      */

SELECT DISTINCT Sno  /*   distinct   表示消除查询出来的重复元组*/
FROM sc;
WHERE  Sno = 201215121;

SELECT Sname,Ssex     /*查询不是,,*/
FROM student
WHERE Sdept NOT IN(CS,MA,IS);

/*
% 表示任意长度字符
_(下横线)表示任意单个字符
ESCAPE‘\‘为换码字符 紧跟在后面的通配符可转为普通字符
*/
SELECT *
FROM course
WHERE    Cname LIKE   DB\_%i  ;


/*
子查询的select中不能使用order by 字句,
order by 只能对最终的查询结果排序
*/
SELECT *
FROM student
ORDER BY Sage    ASC;/*升序排序*/
SELECT *
FROM student
ORDER BY Sage DESC;/*降序排序*/



/*
聚集函数

count(列名) avg() max() min()sum()
*/





 /*   
 分组查询     
 查询选修了三门以上课程的学生学号
 having 语句作用于组  从中选择满足条件的组
 */
SELECT Cno
FROM sc
GROUP BY Sno
HAVING COUNT(*)>3; 




SELECT first.Cno,second.Cpno
FROM course FIRST, course SECOND
WHERE first.Cpno = second.Cno;   /*取别名*/





/*左外连接*/
SELECT student.Sno 
/*左外连接  可去除重复值*/
SELECT student.`Sno`
FROM student LEFT OUTER JOIN sc USING (Sno);




/*
如果子查询的结果依赖于父查询   这类子查询称为相关子查询

*/


/*
EXISTS 代表存在量词 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值true 或逻辑假值false
*/



/*
集合查询   :并操作 UNION   交操作 INTERSECT    差操作 EXCEPT
*/



/*
数据更新
*/
UPDATE student
SET  Grade = 0
WHERE Sno IN(
SELECT Sno 
FROM student 
WHERE Sdept = cs
);
/*
数据元组删除
*/
delect 
FROM student
WHERE Sno = 201215123;
/*
数据插入
*/
INSERT 
INTO sc(Sno,Cno,Grade)
VALUES (201215127,1,NULL);






/*
         索引的操作
*/

CREATE UNIQUE [cluster]  INDEX    S1 ON  student(Sno ASC);  /*升序建立索引*/

ALTER INDEX <旧索引名> RENAME  TO <新索引名>;  /*改名*/

DROP INDEX <索引名>;  /*删除*/



/*

             视图操作
create view
drop view
update........set.......where
insert  into ... values...
delete  from  ... where...

*/

CREATE VIEW <视图名>   [<列名>,<列名>]
AS <子查询>
[WITH CHECK OPTION];



/*

  用户权限操作

*/

GRANT  <权限>,<权限>
ON <对象类型>,<对象名>
TO <用户>,<用户>
[WITH GRANT OPTION];


REVOKE <权限>,<权限>
ON <对象类型>,<对象名>
FROM <用户>,<用户>
[CASCADE|RESTRICT];

 

简易SQL语句