资源描述:
《数据库概论课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、结构化查询语言SQL(StructuredQueryLanguage)是一个通用的、功能极强的关系数据库语言,目前已成为关系数据库的标准语言。第三章关系数据库标准语言3.1SQL概述及其特点1.SQL概述按其功能分为四大类名称动词功能数据查询SELECT查询数据数据定义CREATE,DROP,ALTER定义、撤消和修改数据模式数据操纵INSERT,UPDATE,DELETE增、删、改数据数据控制GRANT,REVOKE数据访问权限的控制其作用是建立和使用数据库。2.SQL数据库的体系结构按支持SQL
2、的数据库管理系统可称其SQL数据库,其结构基本上采用三级结构,但所用术语与传统关系模型的术语有些不同。SQL传统的RDB基本表(BaseTable)关系模式存储文件(BaseTable)内模式(存储模式)视图(View)外模式行(Row)/列(Column)元组/属性用户1用户2用户3用户4视图3视图1视图2基本表1基本表2基本表3基本表4存储文件1存储文件1SQL用户视图基本表存储文件外模式模式内模式表实例数据库实例数据库关系模式:学生(学号,姓名,专业名,性别,出生日期,总学分,备注)课程(课程号
3、,课程名,开课学期,学时,学分)成绩(学号,课程号,成绩)3.2数据库的创建、修改和删除创建数据库通过企业管理器创建数据库通过DDL创建数据库3.2.1使用CREATEDATABASE创建数据库一个示例【例】创建一个名为XSCJ1的数据库,其初始大小为5MB,最大大小50MB,允许数据库自动增长,增长方式是按10%比例增长;日志文件初始为2MB,最大可增长到5MB,按1MB增长。CREATEDATABASEXSCJ1ON(NAME='XSCJ1_Data',FILENAME='e:sqldata
4、MSSQLDataXSCJ1.mdf',SIZE=5MB,MAXSIZE=50MB,FILEGROWTH=10%)LOGON(NAME='XSCJ1_Log',FILENAME='e:sqldataMSSQLDataXSCJ1_Log.ldf',SIZE=2MB,MAXSIZE=5MB,FILEGROWTH=1MB)1.基本表①定义基本表结构定义表名定义表中各列的特征:列名、数据类型、长度以及能否取空值3.3.1基本表的定义和修改一般格式:CREATETABLE<表名>(<列名1>数据类
5、型[列级完整性约束条件][,<列名2>数据类型[列级完整性约束条件]]···)[<其它参数>];说明:建表的同时可以定义与该表有关的完整性约束,这些约束条件被存入系统的数据字典中,当用户操作表时,DBMS会自动检查该操作是否有违背完整约束条件.建立约束的考虑:如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上;否则既可以定义在列级上也可以定义在表级上。表名、列名是不区分大小写的。对一个用户而言,表名必须唯一;一个表中,列名必须唯一。表名、列名必须以字母开头,长度不超过30个字符。SQLSer
6、ver支持的数据类型设已经创建了数据库XSCJ,现在该数据库中需创建学生情况表XS,该表的结构见表2.6。创建表XS的T-SQL语句如下:USEXSCJCREATETABLEXS(学号char(6)primarykey,姓名char(8)NOTNULL,专业名char(10)NULL,性别bitNOTNULL,出生时间smalldatetimeNOTNULL,总学分tinyintNULL,备注textNULL)②修改基本表结构修改已经定义的表的结构修改已经定义的表的完整性约束:一般格式:ALTERTA
7、BLE<表名>[ADD<新列名><数据类型>[完整性约束]][DROP<完整性约束名>][ALTERCOLUMN<列名><数据类型>];[DROPCOLUMN<列名>];说明ADD子句用于新增列及其完整性约束条件,新增加的字段只能作为表的最后一个字段;DROP子句用于删除指定的完整性约束条件;MODIFY子句用于修改原有的列定义,包括修改列的数据类型和长度;SQL没有提供删除属性列的语句,用户只能间接实现这一功能。方法是先将表中要保留的列及其内容复制到一个新表中,然后删除原表,再将新表重新命名为原表;
8、【例】修改表XS中已有列的属性:将名为“姓名”的列长度由原来的8改为10;将名为“出生时间”的列的数据类型由原来的smalldatetime改为datetime。USEXSCJALTERTABLEXSALTERCOLUMN姓名char(10)ALTERCOLUMN出生时间datetimeGO【例】在表XS中增加1个新列——奖学金等级。USEXSCJALTERTABLEXSADD奖学金等级tinyintNULL【例】在表XS中删除名为奖学金等级的列。USE