SQL语句分类:
1:数据定义语言(DDL)
用于创建、修改、和删除数据库内的数据结构,如:1:创建和删除数据库(CREATE DATABASE ||DROPDATABASE);2:创建、修改、重命名、删除表(CREATE TABLE ||ALTERTABLE|| RENAME TABLE||DROPTABLE);3:创建和删除索引(CREATEINDEX || DROPINDEX)
2:数据查询语言(DQL)
从数据库中的一个或多个表中查询数据(SELECT)
3:数据操作语言(DML)
修改数据库中的数据,包括插入(INSERT)、更新(UPDATE)和删除(DELETE)
4:数据控制语言(DCL)
用于对数据库的访问,如:1:给用户授予访问权限(GRANT);2:取消用户访问权限(REMOKE)
问:什么时候使用DROP?什么时候使用DELETE?
答:由上可看出,对于结构删除,如数据库删除、表删除、索引删除等当使用DROP;而对于数据的删除则是DELETE.
管理数据库和表
1:创建数据库-----CREATE DATABASE数据库名
例如:CREATEDATABASEInstant
创建表-----CREATE TABLE 表名(列名列数据类型<列约束条件>);
例如:CREATE TABLEStudent(
IdINTPRIMART KEY;
NameVARCHAR(50));
注意:如创建本地临时表(仅仅在创建临时表的连接中可见),在表名前加#;如创建全局临时表(对所有连接可见),在表名前加##;
创建索引-----CREATE INDEX 索引名 ON 表名 (列名。。。);
例如:(非唯一索引)CREATE INDEXNameIndex ON Friend (Nmae);
(唯一索引)CREATE UNIQUE INDEXNameIndex ON Friend (Name );
2:连接数据库---USE数据库名
例如:USEInstant;
3:删除数据库-----DROPDATABASE 数据库名
例如:DROPDATABASEInstant;
删除表-----DROP TABLE 表名
例如:DROP TABLEStudent;
删除索引---DROPINDEXFriend.PhoneNoIndex;(需指定表名和索引名)
4:复制表-----SELECT * FROMMy_Friends FROM Friends;(此复制并不能复制表的约定)
复制表结构不复制数据:SELECT * FROM My_FriendsFROM Friends WHERE1=0;
5:修改表-----1:添加新列。。ALTERTABLE FriendsADD Address VARCHAR(50);
2:更改定义...ALTERTABLE FriendsMODIFY Phone DEFAULT('笔者就哦');
3:删除列。。ALTERTABLE FriendsDROP CLOUMN PhoneNo;
保证数据完整性
一:分类:
1:实体完整性;
2:域完整性;
3:应用完整性;
4:用户自定义完整性;
二:实现:
1:创建非空约束------NOTNULL
2:设置主键约束------PRIMARYKEY
3:设置唯一约束-------UNIQUE
4:指定默认约束-------DEFAULT
5:设置检查约束-------CHECK
6:自动编号列----------IDENTITY
7:外键约束----------FOREIGNKEY
使用DML语句更改数据
1:插入数据:(单行)INSERTINTO 表名列名VALUES列值;
例如:INSERT INTOStudent(id,name) VALUES(1,'张三');
(多行)INSERTINTO 表名 列名 SELECT (语句)
例如:INSERTINTOStudent(id,name ) SELECT id+2,name FROMStudents;
2:表复制:SELECT列名 INTO 新表名 FROM表名;
例如:SELECT *INTOStudent2 FROMStudent;
3:更新数据:UPDATE表名 SET 列n = 新值。。 WHERE (过滤条件);
例如:UPDATE Student SET id = 2,age =20 WHERE name ='张三'
更新来删除数据:UPDATE Student age= NULLWHERE name ='张三'
4:删除数据:DELETEFROM 表名 WHERE (过滤条
例如:DELETE FROMStudentWHERE name = '张三
注:删除全表数据除去过滤条件即可,也可使用TRUNCATE TABLE表名
简单数据查询
1:查询:SELECT列名 FROM 表名
;
例如:SELECT id FROMStudent;
查询全表数据:SELECT * FROMStudent;
2: 表名前缀:SELECT Student.id FROMStudent;
3:列表别名:SELECTT.列A ASA,T.列B ASB,T.列CAS C FROM 表 AS T;
4:计算列:SELECT id , mark*2 ASMarksFROM Student;
SELECTFirstName + ' ' +LastName ASFullName FROM Student;
5:排除重复数据:SELECTDISTINCT 列A FROM 表名;
例如:SELECT DISTINCT name FROMStudent;
6:限定行数查询:SELECT TOP rowCountColumA,ColumB FROMTable;
例如:SELECT TOP5 id , name FROMStudent;
7:条件查询WHERE
8:范围查询BETWEEN
9:定义集合关系IN
10:模糊查询LIKE(单个字符_多个字符%)
11:空值数据控制:SELECT列A ,列B FROM表名 WHERE 列C IS NOT NULL;
SELECT 列A,列B FROM表名 WHERE 列C IS NULL;
12:排序:升序。。ASC
降序。。。DESC
聚合函数与分组
1:SELECTCOUNT(规范) FROM表名;
A:数目COUNT
B:总和SUM
C:平均值AVG
D:最大值MAX
F:最小值MIN
2:分组GROUP BY..
3:结果集处理:SELECTStudentID,AVG(Mark) AS AverageMark FROM StudentExam GROUPBYStudentID HAVING AVG(Mark) <50 ORAVG(Mark)>70;
4:EXISTS;
5:ALL;
6:ANY;
7:UNION;
8:保留重复行:UNIONALL;
9:交集和差分:INTERSECTEXCEPT
联接
1:内联接:JOIN
2:外连接:1:左外联:LEFTJOIN或LEFT OUTERJOIN
2:右外联:RIGHTJOIN 或 RIGHT OUTERJOIN
3:全外联:FULLJOIN 或 FULL OUTER JOIN
UPDATE empSET sal = newsal WHERE lower(ename);
END;
执行使用 execute
END;
执行使用 execute
update_sal(nameVARCHAR2,newsalNUMBER) IS
BEGIN
UPDATE empSET sal = newsal WHERE lower(ename);
END;
执行使用 execute
DURE update_sal(nameVARCHAR2,newsalNUMBER) IS
BEGIN
UPDATE emp SET sal =newsal WHERE lower(ename);
END;
执行使用 execute