1,数据定义部分 (1)创建基本表 creat table Employee ( Eno char(6) not null unique, Ename char(20) unique Esex char(2) Eage int Edept char(10) Espe char(20) ) 该语句创建了一个名为Employee的数据表,共有六列,分别为字符型(长度为6,非空,唯一)的雇员号Eno,字符型(长度为20,唯一)的雇员号姓名Ename,字符型(长度为2)的雇员性别,整型的雇员年龄,字符型(长度为10)的雇员部门,字符型(长度为20)的雇员特长.
(2)删除基本表 DROP TABLE Employee
(3)更改基本表 ALTER TABLE Employee ADD Esalary CHAR(5) 在雇员表中加入一列,字符型(长度为5)的雇员薪水. ALTER TABLE Wmployee DROP UNIQUE(Ename); 去掉雇员表中雇员姓名的唯一属性. ALTER TABLE Employee MODIFY Esex CHAR(1); 把雇员表中的性别列改为一位字符型.
2,数据查询部分
这是SQL语句中最灵活,功能最强的部分. (1)基本查询语句 SELECT Eno,Ename,Esex FROM Employee 查询Employee表中的Eno,Ename,Esex三列 SELECT * FROM Employee 查询Employee表中的所有列. SELECT DISTINCT Eno FROM Employee; 查询Employee表中的Eno列,并去除重复行.
(2)条件(WHERE)查询语句 插叙条件的连接词如下:NOT,=,>,<,>=,<=,!=,<>,!>,!<,BETWEEN AND,NOT BETWEEN AND(确定范围),LIKE,NOT LIKE(字符匹配),IS NULL,IS NOT NULL(空值),AND,OR(多条件连接).
ⅰ 比较 SELECT Eno FROM Employee WHERE Eage <=25 列出表中年龄小于25的雇员号 ⅱ 确定范围 SELECT Eno,Ename FROM Employee WHERE Eage [NOT] BETWEEN 20 AND 30 列出表中年龄(不)在20到30的雇员号和姓名 ⅲ 确定集合 SELECT Eno,Ename FROM Employee WHERE Edept [NOT] IN (‘SD'''',’HD’) 列出表中(不)是软硬件开发部的雇员号和姓名 ⅳ 字符匹配 LIKE的用法如下 [NOT] LIKE ‘<匹配模式>’[ESCAPE ‘<换码符>’] 通配符号有%和_两种。 %:匹配任意长度的字符串(长度可以为0)。A%b可与ab,adfb等匹配。 _:匹配单个任意字符。a_b可与a#b,a@b等匹配。 如果有ESCAPE,则跟在换码符号后的%或者_不再是通配符号,只是正常的%或_。 例如: SELECT * FROM Employee WHERE Ename LIKE ‘刘%’ 查找表中姓刘雇员的信息 SELECT * FROM Employee Where Ename LIKE ‘刘_ _’ 查找表中姓名为刘某(两个字)的雇员的信息。 SELECT * FROM Employee WHERE Espe LIKE ‘DB\%t_‘ESCAPE’\’ 查找表中特长项为DB_开始,倒数第二个字符为t的雇员的信息。
Ⅴ 空值SELECT * FROM Employee WHEREE Espe IS [NOT] NULL 查找表中特长项(不)为空的雇员信息。
Ⅵ 多条件连接 SELECT Ename FROM Employee WHERE Edept =''''SD'''' AND Eage <=30; 列出表中软件开发部门30及30岁以下雇员姓名。
(3)结果排序 对查询结果进行排序用ORDERBY,ASC(默认)为升序,DESC为降序 SELECT * FROM Employee ORDER BY Edept,Eage DESC
(4)结果分组 对查询结果的分组一般要用到SQL的集函数,因此先介绍集函数。 SQL语言的集函数主要有COUNT(统计总数),SUM(求和),AVG(求均值),MAX(最大值),MIN(最小值)。 SELECT MAX(Eage) FROM Employee WHERE Edept=''''SD'''' 列出软件开发部年纪最大雇员的姓名。 SELECT Edept FROM Employee GROUP BY Edept HAVING Count(*)>10 统计各部门的雇员数,只显示雇员数大于10的部门。 SELECT Edept,COUNT(Eno) FROM Employee GROUP BY Edept 统计各部门雇员数,按部门分组列出各部门的雇员数。
(5)连接查询 连接查询是查询涉及多个数据表,FROM后连接多个表的情况。 假如我们要统计各个项目参加人的雇员号和姓名,涉及的表Eproject结构如下: Eproject (Eno CHAR(6),Pno CHAR(6),TimeBgnTIME, TimeEnd TIME,Remark CHAR(50)) 相应的查询语句为: SELECT Eproject.Pno,Employee.Eno,Ename FROM Employee,Eproject WHERE Employee.Eno=Eproject.Eno ORDER BY Eproject.Pno; 列出参加各项目的雇员号和姓名,并按照项目号升序排列。
(6)集合查询 集合查询指的是多个SELECT查询结果间进行的集合操作。主要有UNION(并操作),INTERSECT(交操作),MINUS(差操作),其中标准SQL中没有提供交操作和差操作,但他们可以使用联合查询实现。 假如我们要查询硬件开发部年龄不大于25岁的雇员,可以结合查询实现如下: SELECT * FROM Employee WHERE Edept=''''HD'''' UNION SELECT * FROM Employee WHERE Eage<=25
3,数据更新部分 SQL中的数据更新语句有INSERT,UPDATE和DELETE三种,用法如下:
(1)插入数据 INSERT INTO Employee valueS (''''13253'''',''''王二'''',''''男'''',''''23'''',''''SD'''',''''DB_Project'''') 向雇员表中插入一条完整的数据 INSERT INTO Employee (Eno,Ename) valueS (''''13253'''',''''王二''''); 向表中插入一条数据,只包含雇员号和姓名,其他列为空值。 注意:以上情况,属性为非空的列一定不能为空值。
(2)修改数据 UPDATE Employee SET Eage=24 WHERE Eno=''''13253'''' 将表中13253号雇员年龄改为24岁
(3)删除数据 DELETE FROM Employee WHERE Eno=''''13253''''
4,数据控制部分
(1)用户授权 SQL用户授权使用GRANT关键词,它的用法如下: GRANT SELECT ON TABLE Employee TO usr1; 允许用户usr1查询表Employee GRANT ALL PRIVILEGES ON TABLE Employee TO usr2; 允许用户usr2对表Employee的任何操作