SQL语句基础之DDL (2).ppt
第2章 SQL语句基础之DDL,授课人:吴志霞电话:http:/,课程内容,涉及数据库结构的SQL语句表的创建 表的修改,课程目标,掌握SQL语句基础之DDL,课时安排,理论:3学时上机:2学时,授课重点,数据库的创建表的创建 表的修改,授课方法,演示法,SQL语言,什么是SQL?SQL(Structured Query Language)是结构化查询语言。,学生-课程 数据库,学生-课程模式:学生表:Student(Sno,Sname,Ssex,Sage,Sdept)课程表:Course(Cno,Cname,Ccredit)学生选课表:SC(Sno,Cno,Grade),Student表(学生表),Course表(课程表),SC表(学生选课表),涉及数据库结构的SQL语句,数据库的创建语法:CREATE DATABASE 切换数据库 语法:USE 数据库的删除 语法:DROP DATABASE 修改数据库的编码 语法:ALTER DATABASE character set utf8,表的创建,CREATE TABLE(,);如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。,示例1,建立“学生”表Student,学号是主码,姓名取值唯一,性别只能为男或女,年齡默认值为18。-约束条件定义在列级 CREATE TABLE Student(Sno CHAR(9)PRIMARY KEY,Sname VARCHAR(20)UNIQUE,Ssex CHAR(2)Check(Ssex in(男,女),Sage SMALLINT Default 18,Sdept VARCHAR(20)NOT NULL)注:char,varchar,nvarchar的区别 char 不够长度自动补空格,示例1(续),-约束条件定义在表级CREATE TABLE Student(Sno CHAR(9),/*列级完整性约束条件*/Sname VARCHAR(20),/*Sname取唯一值*/Ssex CHAR(2),Sage SMALLINT default 18,Sdept VARCHAR(20)NOT NULL,constraint pk_sno Primary key(Sno),unique(sname),Check(Ssex in(男,女),示例2,创建Course表创建SC表,PRIMARY KEY约束,一个表只能有一个 PRIMARY KEY 约束 PRIMARY KEY 约束中的列都不能接受空值。如果 PRIMARY KEY 约束定义在不止一列上,则一列中的值可以重复,但 PRIMARY KEY 约束定义中的所有列的组合的值必须唯一。,UNIQUE约束,UNIQUE 约束中的列接受null值。保持列的唯一性示例:CREATE TABLE Student(Sno CHAR(9)PRIMARY KEY,Sname VARCHAR(20)UNIQUE,Ssex CHAR(2)Check(Ssex in(男,女),Sage SMALLINT Default 18,Sdept VARCHAR(20)NOT NULL),DEFAULT 定义,默认值示例:CREATE TABLE Student(Sno CHAR(9)PRIMARY KEY,Sname VARCHAR(20)UNIQUE,Ssex CHAR(2)Check(Ssex in(男,女),Sage SMALLINT Default 18,Sdept VARCHAR(20)NOT NULL),CHECK 约束,限制输入到列中的值来强制域的完整性。示例:CREATE TABLE Student(Sno CHAR(9)PRIMARY KEY,Sname VARCHAR(20)UNIQUE,Ssex CHAR(2)Check(Ssex in(男,女),Sage SMALLINT Default 20,Sdept VARCHAR(20)NOT NULL),FOREIGN KEY 约束,FOREIGN KEY 约束可引用同一数据库中的表或同一表(自引用表)内的列.示例-创建学生选课表create table SC(sno char(9)not null,cno char(4)not null,ccredit int not null,foreign key(sno)references Student(sno),foreign key(cno)references Course(cno),primary key(sno,cno)FOREIGN KEY与CHECK区别:FOREIGN KEY 约束从另一个表中获得有效数值列表。CHECK 约束从逻辑表达式判断而非基于其它列的数据。,课堂练习,建立“部门”表Dept,部门编号是主码,部门名称取值唯一建立“员工”表Employee,工号是主码,姓名取值唯一,性别只能为男或女,年齡不可为空,部门必须存在于”部门“表Dept中,工资必须大于等于1300小于等于2000。,参考,create table Dept(deptno char(4)PRIMARY KEY,deptName char(20)not null)CREATE TABLE Employee(empno CHAR(9)PRIMARY KEY,name CHAR(20)UNIQUE,sex CHAR(2)Check(Ssex in(男,女),age SMALLINT Default 20,dept CHAR(4)Foreign key references dept(deptno),salary int(4)Check(salary=1300 and salary=2000),表的修改,ALTER TABLE ADD 完整性约束 ADD DROP COLUMN CHANGE COLUMN;添加新列添加某个约束条件实现删除某列 相同则修改某列的数据类型/修改某列的列名,示例,例1向Student表增加“入学时间”列,其数据类型为日期型。ALTER TABLE Student ADD S_entrance Datetime不论基本表中原来是否已有数据,新增加的列一律为空值。例2增加课程名称必须取唯一值的约束条件。ALTER TABLE Course ADD UNIQUE(Cname)例3删除Student表的“入学时间”列。ALTER TABLE Student DROP COLUMN S_entrance 例4修改Student表的“名字”列,其数据类型为数值型。ALTER TABLE Student Change COLUMN sname sname int 改回 ALTER TABLE Student Change COLUMN sname sname varchar(255),表的删除,语法:DROP TABLE table_name 注意:1.DROP TABLE 不能用于除去由 FOREIGN KEY 约束引用的表。必须先除去引用的 FOREIGN KEY 约束或引用的表。2.如果删除表内的所有行 运用(DELETE tablename)或(TRUNCATE TABLE table_name)语句。,小结,涉及数据库结构的SQL语句表的创建 表的修改,实训一 SQL语句基础之DDL,要求:1.建立library数据库 2.建立“图书类型”表type,图书类型编号是主码,类型名称取值唯一 3.建立“图书”表books,图书编号是主码,书名取值不可为空,图书作者取值不可为空,图书类型必须存在于”图书类型“表type中,图书库存数量必须大于等于1小于等于20,图书的入库日期默认为当前日期。,