280 likes | 458 Views
æ•°æ®åº“åŽŸç† ç¬¬ä¸‰ç« ï¼šå…³ç³»æ•°æ®åº“æ ‡å‡†è¯è¨€ SQL. 授课教师:王哲. å¤ä¹ 上节课内容. 命令方å¼ä¸‹ç®¡ç†æ•°æ®åº“ 创建ã€ä¿®æ”¹ã€åˆ 除 ç®¡ç†æ•°æ®è¡¨ ç•Œé¢æ–¹å¼åˆ›å»ºã€ä¿®æ”¹ã€åˆ 除表 命令方å¼åˆ›å»ºè¡¨. 本次课å¦ä¹ 内容. 命令方å¼ä¸‹ç®¡ç†æ•°æ®è¡¨ 创建ã€ä¿®æ”¹ã€åˆ 除表 管ç†è¡¨æ•°æ® æ’å…¥æ•°æ® æ›´æ–°æ•°æ® åˆ é™¤æ•°æ®. 一ã€å‘½ä»¤æ–¹å¼ä¸‹ç®¡ç†æ•°æ®è¡¨. 创建数æ®è¡¨ create 修改数æ®è¡¨ alter åˆ é™¤æ•°æ®è¡¨ drop. 1 ã€åˆ›å»ºæ•°æ®è¡¨. 在 T-SQL ä¸ï¼Œç”¨äºŽåˆ›å»ºæ•°æ®è¡¨çš„è¯å¥æ˜¯ CREATE TABLE ,该è¯å¥çš„åŸºæœ¬è¯æ³•æ ¼å¼ä¸ºï¼š. 创建数æ®è¡¨çš„å®Œæ•´è¯æ³•æ ¼å¼ä¸ºï¼š
E N D
数据库原理第三章:关系数据库标准语言SQL 授课教师:王哲
复习上节课内容 • 命令方式下管理数据库 • 创建、修改、删除 • 管理数据表 • 界面方式创建、修改、删除表 • 命令方式创建表
本次课学习内容 • 命令方式下管理数据表 • 创建、修改、删除表 • 管理表数据 • 插入数据 • 更新数据 • 删除数据
一、命令方式下管理数据表 • 创建数据表 create • 修改数据表 alter • 删除数据表 drop
1、创建数据表 • 在T-SQL中,用于创建数据表的语句是CREATE TABLE,该语句的基本语法格式为:
创建数据表的完整语法格式为: CREATE TABLE 表名 (列名 数据类型[缺省值][NOT NULL] [,列名 数据类型[缺省值][NOT NULL]]…. [,UNIQUE(列名[,列名]….)] [,PRIMARY KEY(列名[,列名]…)] [,FOREIGN KEY (列名[,列名]…)REFERENCES 表名(列名[,列名]…)] [,CKECK (条件)])
参数说明: • DEFAULT (缺省值):指定列的缺省值;NOT NULL:列值不能为空值;UNIQUE:取值唯一的列名;PRIMARY KEY:主关键字(主码)列名;FOREIGN KEY:外部码列名;REFERENCES:引用的外部码的表名和列名 CKECK :指定表级约束条件。
练习1:在数据库student中创建stu_info表,表中包括:学号、姓名、出生年月、性别、地址、电话号码、邮编,所在系代号,每月生活补贴等。练习1:在数据库student中创建stu_info表,表中包括:学号、姓名、出生年月、性别、地址、电话号码、邮编,所在系代号,每月生活补贴等。 USE student CREATE TABLE stu_info ( 学号 char(10) NOT NULL PRIMARY KEY, 姓名 char(8) NOT NULL, 出生年月 datetime NULL, 性别 char(2) NOT NULL default('女'), 地址 char(20), 电话号码 char(12), 邮编 char(6), 系代号 tinyint, 每月生活补贴 money ) go
创建数据表时使用默认值、约束 CREATE TABLE stu1 (stuid CHAR(8) PRIMARY KEY, stuname CHAR(8), stusex CHAR(2) default('男'), stuage int check(stuage>=0 and stuage<=100) default 20, studept varchar(30) )
练习:以本章学生-课程数据库为例,创建学生-课程库及以下内容: 学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 课程表:Course(Cno,Cname,Cpno,Ccredit) 学生选课表:SC(Sno,Cno,Grade)
2)修改数据表 当创建了一个表后,随着应用环境和应用需求的变化,有时需要对表结构、列的属性进行修改,对于一个已经存在的表可以进行的修改操作有: 1) 更改表名 2) 增加字段、删除字段 3) 修改已有字段的属性(字段名、数据类型、长度、是否为空值)
T-SQL中对数据表进行修改的语句是ALTER TABLE,基本语法是:
在表student中增加新字段“院系“、“班级名称“;在表student中增加新字段“院系“、“班级名称“; • 修改表XS中已有字段的属性:将字段名为“姓名”的字段长度由原来的8改为10;将字段名为“出生时间”的字段的数据类型由原来的datetime改为smalldatetime; • 修改XS中字段“专业名”长度为20;
3)删除数据表 • T-SQL中对表进行删除的语句是DROP TABLE,该语句的语法格式为: DROP TABLE table_name 其中table_name是要被删除的表名。 例如,要删除表XS,使用的T-SQL语句为: DROP TABLE XS GO
提高篇 • 修改表中某个字段名称为新名称,如name修改为stuname;(建议使用sp_rename) Use test Exec sp_rename‘table.column_name’,’new_column_name’ • 修改数据表名称 Use test Exec sp_rename ‘old_table_name’,’new_table_name’
二、管理表数据 • 插入数据 INSERT • 修改数据 ALTER • 删除数据 DELETE
1、插入表数据 • 插入一个元组基本格式 INSERT INTO <表名>[(<列名>[,<列名>…])] VALUES(<表达式>[,<表达式>……]) • 插入一个查询结果 INSERT INTO <表名>[(<列名>[,<列名>…])] <SELECT查询>
插入操作举例 • 插入一个完整的元组 INSERT INTO Student VALUES(‘200215121’,‘李勇’,‘男’,20,’CS’) • 插入一个不完整的元组 INSERT INTO Student(Sno,Sname)VALUES(‘200215122’,‘刘晨') • 插入一个查询结果 INSERT INTO Student2 ( SELECT * FROM Student)
插入数据时注意事项 • 新插入记录应与表结构定义匹配; • 列名项数与提供值的数目应匹配; • 可以指定列值为Null ; • INTO子句中没有出现的属性列,新记录在这些列上将取空值(Null)或默认值; • 如果INTO子句中没有指明任何列名,则新插人的记录必须在每个属性列上均有值,且顺序应与表中属性列顺序一致。
练习 • 向Stedent表中插入一条记录(’200501‘,’李勇‘) • 向Stedent表中插入记录(’200502‘,’男‘)和(’200503‘,’女‘) • 向Stedent表中插入记录(’200504‘,’刘晨‘)和(’200505‘,’女‘)
2、修改表数据 • 基本格式 Update table_name Set <列名1>=<表达式> [, <列名2>=<表达式>] … [[FROM <表名>] where <逻辑表达式>] • 说明: • 一次可以更新多个属性的值; • 更新的条件可以与其他的表相关(使用FROM指定); • 如果省略where语句,则表示要修改表中的所有记录。
三种修改方式 1. 修改某一个元组的值 2. 修改多个元组的值 3. 带子查询的修改语句 • 在修改之前建议先查看表记录(Select * from table)
查看数据表Student所有记录 SELECT * FROM Student • 查看数据表Student中字段学号、姓名的所有记录 SELECT Sno,Sname FROM Student • 给学号为200215122的学生年龄增加1岁 UPDATE Student SET Sage = Sage+1 WHERE Sno=’200215122‘ • 给CS系的男同学年龄增加1岁 UPDATE Student SET Sage = Sage+1 WHERE Sdept=’CS‘ and Ssex=’男‘
给所有课程的学分提高1分 UPDATE Course SET Ccredit = Ccredit +1 • 将学号为200515121同学的姓名,性别,年龄分别设置为(张三,男,20) UPDATE Student SET 姓名=‘张三’,性别=‘女’,年龄=20 WHERE Sno=‘200515121’ • 给CS系的学生的选课成绩增加10分 UPDATE SC SET Grade= Grade+10 WHERE Sno= (SELECT Sno FROM Student WHERE Student.Sdept =‘CS’)
练习 • 将数据表student中学号为200215121的记录的性别及所在系的字段值改为(女,IS); • 将数据表SC中所有记录的成绩的字段值增加10%; • 将数据表Student中姓名中姓“王”的记录年龄增加1; • 将选修课程号为1的记录的成绩字段值增加10 ,其他记录的成绩字段值增加5;
3、删除表数据 • 基本格式 Delete from table_name [where <逻辑表达式>] • DELETE命令从指定的表中删除满足“逻辑表达式”条件的元组; • 如果没有指定删除条件则删除表中的全部元组,所以在使用该命令时要格外小心; • DELETE命令只删除元组,它不删除表或表结构。
练习 • 将数据表Student中学号为2005001的记录删除; • 将数据表Student中性别不为“女”的记录删除; • 将数据表Student 中院系为null的记录删除; • 将数据表Student 中CS系年龄小于20的男同学的记录删除;
总结 • 命令方式下管理数据表 • 命令方式创建、修改、删除表 • 管理表数据 • 插入数据 • 更新数据 • 删除数据