SQL-数据定义语言
sql编写方法
![sql编写方法](https://img.taocdn.com/s3/m/6154acfd88eb172ded630b1c59eef8c75fbf95e8.png)
SQL编写方法1. 什么是SQL?SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准语言。
它允许用户从数据库中提取、操作和管理数据。
SQL语言具有简单、易学、灵活的特点,被广泛应用于各种数据库管理系统中。
SQL语言主要包括以下几个方面的功能: - 数据查询:通过SELECT语句从数据库中检索所需的数据。
- 数据操作:通过INSERT、UPDATE和DELETE语句对数据库中的数据进行增、删、改操作。
- 数据定义:通过CREATE、ALTER和DROP语句对数据库中的表、视图、索引等进行定义和管理。
- 数据控制:通过GRANT和REVOKE语句对用户的权限进行控制和管理。
2. SQL基本语法SQL语句通常由一个或多个关键字和参数组成,每个语句以分号(;)结尾。
下面是SQL语句的基本语法:SELECT列名1, 列名2, ... FROM表名WHERE条件;•SELECT:用于选择要查询的列。
•FROM:用于指定要查询的表。
•WHERE:用于指定查询的条件。
例如,我们要查询一个名为”students”的表中所有年龄大于18岁的学生的姓名和年龄,可以使用以下SQL语句:SELECT name, age FROM students WHERE age > 18;3. SQL查询语句SQL中最常用的功能是数据查询。
通过SELECT语句可以从数据库中检索所需的数据。
3.1 查询所有数据如果要查询表中的所有数据,可以使用以下语句:SELECT * FROM表名;例如,查询”students”表中的所有数据:SELECT * FROM students;3.2 查询指定列如果只需要查询表中的部分列,可以使用以下语句:SELECT列名1, 列名2, ... FROM表名;例如,查询”students”表中的姓名和年龄:SELECT name, age FROM students;3.3 查询带条件如果只需要查询满足特定条件的数据,可以使用WHERE子句来指定查询条件。
SQL语言入门
![SQL语言入门](https://img.taocdn.com/s3/m/93d8192282c4bb4cf7ec4afe04a1b0717fd5b3d9.png)
SQL语⾔⼊门内容来源:唐成. PostgreSQL修炼之道[M]. 机械⼯业出版社, 2015.此书购买链接:SQL(Structured Query Language)结构化查询语⾔1. 语法简介1.1 语句分类DDL (Data Definition Language)数据定义语⾔,主要⽤于创建、删除,以及修改表、索引等数据库对象语⾔。
DML (Data Manupulation Language)数据操作语句,主要⽤于插⼊、更新、删除数据,所以分为INSERT、UPDATE、DELETE三种语句。
DQL (Data Query Language)数据查询语句,基本就是SELECT查询语句,⽤于数据查询。
1.2 语法结构多条SQL语句之间⽤分号(;)隔开每个SQL命令有⼀些列的记号组成:关键字标识符双引号包围的标识符常量单引号包围的⽂本常量特殊的字符……2. DDL语句2.1 建表语句表⽰关系型数据库中最基本的对象,有很多列也有很多⾏,每⼀列有⼀个名字,不同的列有不同的数据类型。
建表语句的⼀个简单语法如下:CREATE TABLE table_name (col01_name data_type,col02_name data_type,col03_name data_type,col04_name data_type);其中CREATE和TABLE为关键字,表⽰创建表。
table_name为表名,col01_name col02_name col03_name col04_name分别表⽰列名。
data_type表⽰数据类型,不同的数据库系统有不同的数据类型名称。
变长的字符串在⼤多数数据库中都可使⽤varchar类型。
整形数据⼀般使⽤int类型。
⽇期类型使⽤date。
例如:CREATE TABLE score (student_name varchar(40),chinese_score int,math_score int,test_date date);在建表的时候,可以指定表的主键,主键是表中⾏的唯⼀标识,这个唯⼀标识,是不能重复的。
第6讲SQL语言基础及数据定义功能
![第6讲SQL语言基础及数据定义功能](https://img.taocdn.com/s3/m/39f6ad4fc850ad02de804159.png)
3、简洁易用
SQL功能极强,完成核心功能只需9个动词。
表 3.1 SQL 语言的动词 SQL 功 能 数 据 查 询 数 据 定 义 数 据 操 纵 数 据 控 制 动 词 SELECT CREATE, DROP, ALTER INSERT,UPDATE DELETE GRANT,REVOKE
4、面向集合的操作方式
PRIMARY KEY ( Sno, Cno ),
FOREIGN KEY ( Sno ) REFERENCES Student ( Sno ), FOREIGN KEY ( Cno ) REFERENCES Course ( Cno ) )
二、删除表
删除表的语句格式为: DROP TABLE <表名> 例:删除test表的语句为: DROP TABLE test { [, <表名> ] „ }
课程号 Cno 1 2 3 4 5 6 7
课程名 Cname 数据库 数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言
先行课 Cpno 5 1 6 7 6
学分 Ccredit 4 2 4 3 4 2 4
4、SC表数据
学号 Sno 200215121 200215121 200215121 200215122 200215122
第6讲 SQL语言基础及数据定义功能
本讲内容
1 2 3 4
SQL概述
学生课程数据库简介
SQL语言功能概述
数据定义
6.1 SQL概述
SQL(Structured Query Language)
结构化查询语言,是关系数据库的标准语言 SQL是一个通用的、功能极强的关系数据库语言 现在所有的关系数据库管理系统都支持SQL,就连 个人计算机上使用的数据库也不例外。
数据库第4章 SQL语言基础及数据定义功能
![数据库第4章 SQL语言基础及数据定义功能](https://img.taocdn.com/s3/m/7bb7cc8614791711cd791730.png)
第4章SQL语言基础及数据定义功能用户使用数据库时需要对数据库进行各种各样的操作,如查询数据,添加、删除和修改数据,定义、修改数据模式等。
DBMS必须为用户提供相应的命令或语言,这就构成了用户和数据库的接口。
接口的好坏会直接影响用户对数据库的接受程度。
数据库所提供的语言一般局限于对数据库的操作,它不是完备的程序设计语言,也不能独立地用来编写应用程序。
SQL(Structured Query Language,结构化查询语言)是用户操作关系数据库的通用语言。
虽然叫结构化查询语言,而且查询操作确实是数据库中的主要操作,但并不是说SQL只支持查询操作,它实际上包含数据定义、数据查询、数据操作和数据控制等与数据库有关的全部功能。
SQL已经成为关系数据库的标准语言,所以现在所有的关系数据库管理系统都支持SQL。
本章将主要介绍SQL语言支持的数据类型以及定义基本表和索引的功能。
4.1 SQL语言概述SQL语言是操作关系数据库的标准语言,本节介绍SQL语言的发展过程、特点以及主要功能。
4.1.1 SQL语言的发展最早的SQL原型是IBM的研究人员在20世纪70年代开发的,该原型被命名为SEQUEL (Structured English QUEry Language)。
现在许多人仍将在这个原型之后推出的SQL语言发音为“sequel”,但根据ANSI SQL委员会的规定,其正式发音应该是“ess cue ell”。
随着SQL语言的颁布,各数据库厂商纷纷在其产品中引入并支持SQL语言,尽管绝大多数产品对SQL语言的支持大部分是相似的,但它们之间还是存在一定的差异,这些差异不利于初学者的学习。
因此,我们在本章介绍SQL时主要介绍标准的SQL语言,我们将其称为基本SQL。
从20世纪80年代以来,SQL就一直是关系数据库管理系统(RDBMS)的标准语言。
最早的SQL标准是1986年10月由美国ANSI(American National Standards Institute)颁布的。
SQL语言详解
![SQL语言详解](https://img.taocdn.com/s3/m/476f632fed630b1c59eeb582.png)
TypeYourNameHere TypeDateHereSQL语言详解简介SQL(Structured Query Language):结构化查询语言,是一种数据库查询和程序设计语言。
SQL语言得到了广泛的应用;如:Oracle,Sybase, DB2, Informix, SQL Server等大型数据库管理系统;Visual Foxpo, PowerBuilder等PC数据库开发系统。
SQL包含4个部分:1. 数据定义语言(DDL), 例如:CREATE, DROP, ALTER等。
2. 数据操作语言(DML), 例如:INSERT, UPDATE, DELETE等。
3. 数据查询语言(DQL), 例如:SELECT等。
4. 数据控制语言(DCL), 例如:GRANT, REVOKE, COMMIT, ROLLBACK等。
SQL语言DDLCREA TE TA BLE:用来建立数据表。
例如:创建一个空的数据表Customer_Data。
CREATE TABLE Customer_Data(customer_id smallint,first_name char(20),last_name char(20),phone char(20))ALTER TA BLE:修改数据表的定义与属性。
例如:在Customer_Data中新增middle_initial数据行。
ALTER TABLE Customer_DataADD middle_initial char(1)DROP TA BLE:删除数据表以及所有的数据,索引,触发程序,条件约束以及权限。
例如:删除Customer_Data数据表DROP TABLE Customer_DataDMLINSERT:向数据表插入一行数据。
例如:在Customer_Data中新增一个客户。
INSERT INTO Customer_Data(customer_id, first_name, last_name, phone)VALUES (777, ‘Frankie’, ‘Stein’, ‘4895873900’)注意:(customer_id, first_name, last_name, phone)列表数据行名称的顺序决定了数据数值将被放在哪个数据列。
数据库—SQL语言
![数据库—SQL语言](https://img.taocdn.com/s3/m/52da6a23b80d6c85ec3a87c24028915f804d848f.png)
数据库—SQL语⾔1 SQL 基本概念1.1 SQL 概念及分类定义:SQL是Structured Query Language的缩写,意思是结构化查询语⾔,是⼀种在数据库管理系统中查询或对数据库⾥⾯的数据进⾏更改的语⾔主流数据库管理系统关系型数据库MySQLOraclePostgre SQLSQL Server⾮关系型数据库redismongo DB数据定义语⾔DDL(Data Ddefinition Language)SQL 数据定义语⾔主要⽤来定义逻辑结构,包括定义基表,视图和索引删除表定义表修改表数据查询语⾔DQL(Data Query Language)SQL 的数据查询语⾔主要⽤来对数据库中的各种数据对象进⾏查询数据操纵语⾔DML(Data Manipulation Language)SQL 的数据操纵语⾔,⽤于改变数据库中的数据,包括插⼊,删除,修改数据控制功能DCL(Data Control Language)SQL 的数据控制语⾔,对表和视图的授权,完整性规则的描述以及事务开始和结束等控制语句1.2 SQL 语⾔的特点综合统⼀:独⽴完成数据库⽣命周期中的全部活动,包括定义关系模式、录⼊数据、建⽴数据库、査询、更新、维护、数据库重构、数据库安全⾼度⾮过程化:⽤户只需提出“做什么”,⽽不必指明“怎么做⾯向集合的操作⽅式:SQL 采⽤集合操作⽅式以同⼀种语法结构提供两种使⽤⽅式:SQL既是⾃含式语⾔,⼜是嵌⼊式语⾔,SQL语句能够嵌⼊到⾼级语⾔程序中语⾔简洁,易学易⽤:SQL 语⾔语法简单,接近英语⼝语1.3 SQL 基本语法1 SQL 数据类型数据类型含义CHAR(n)CHARACTER(n)长度为 n 的定长字符串VARCHAR(n)CHARACTERVARYING(n)最⼤长度为 n 的变长字符串CLOB字符串⼤对象BLOB⼆进制⼤对象INTINTEGER长整数(4 字节)SMALLINT短整数(2 字节)BIGINT⼤整数(8 字节)数据类型含义NUMERIC(p, d)定点数,由 p 位数字(不包括符号、⼩数点)组成,⼩数点后边有 d 位数字DECIMAL(p, d)DEC(p, d)同 NUMERIC REAL取决于机器精度的单精度浮点数DOUBLE PRECISION取决于机器精度的双精度浮点数FLOAT(n)可选精度的浮点数,精度⾄少为 n 位数字FLOAT(n)可选精度的浮点数,精度⾄少为 n 位数字数据类型含义BOOLEAN逻辑布尔值DATE⽇期,包含年、⽉、⽇,格式为 YYYY-MM-DDTIME时间,包含⼀⽇的时、分、秒,格式为 HH:MM:SS TIMESTAMP时间戳类型TIMERVAL时间间隔类型2 模式的定义及删除模式定义语法:CREATE SCHEMA <模式名> AUTHORIZATION <⽤户名>例⼦:CREATE SCHEMA "S-T" AUTHORIZATION WANG;模式定义 + 视图语法:CREATE SCHEMA <模式名> AUTHORZATION <⽤户名> [<表定义⼦句>|<视图定义⼦句>|<授权定义⼦句>];模式删除语法:DROP SCHEMA <模式名><CASCADE|RESTRICT>;CASCADE、RESTRICT两者必须⼆选⼀VASCADE(级联):删除模式的同时也把给模式的所有数据库对象删除RESTRICT(限制):如果该模式下有下属对象(⽐如表视图),则拒绝该删除语句的执⾏3 表的增删改查创建表CREATE TABLE 表名 (字段名类型字段约束, 字段名类型字段约束, 字段名类型字段约束);CREATE TABLE Student (name VARCHAR(20),age INT,sex CHAR(1),);删除表DROP TABLE <表名> [RESTRICT|CASCADE];DROP TABLE Student RESTRICT;修改ALTER TABLE <表名>[ADD [COLUMN] <新列名><数据类型> [完整性约束]][ADD <表级完整性约束>]ALTER TABLE Student ADD S_entrance DATE;ALTER TABLE Student ALTER COLUMN S_age INT;4 索引的增删改查当数据库中数据量巨⼤时,建⽴索引可以减少查询时间,索引可以建⽴在⼀列或多列上建⽴索引CLUSTER:聚簇索引,物理顺序与索引的逻辑顺序相同UNIQUE:唯⼀索引CREATE [UNIQUE] [CLUSTER] INDEX <索引名>ON <表名>(<列名>[<次序>][,<列名> [<次序>]] ...);CREATE UNIQUE INDEX Stusno ON Student(Sno);修改索引ALTER INDEX <旧索引名> RENAME TO <新索引名>;ALTER INDEX SCno RENAME TO SCSno;删除索引DROP INDEX <索引名>DROP INDEX Stusno;2 SQL 的查询假设关系表Student、Course、SC如下:Student学号(Sno)姓名(Sname)性别(Ssex)年龄(Sage)院系(Sdept) 201215121李勇男20CS 201215122刘晨⼥19CS 201215123王敏⼥18MA 201215125张⼒男19ESCourse课程号(Cno)课程名(Cname)先⾏课(Cpno)学分(Ccredit) 1数据库542数学/23信息系统144操作系统635数据结构746数据处理/27Java语⾔64SC学号(Sno)课程号(Cno)成绩(Grade)2012151211922012151212852012151213882012151222902015151223802.1 查询所有列查询Student表中所有列SELECT * FROM Student;2.2 查询部分列查询Student表中的Sno、Ssex列SELECT Sno, Ssex FROM Student;2.3 列取别名查询Student表中的Sno、Ssex列,并将Sno命名为 “学号”,Ssex命名为 “性别”SELECT Sno 学号, Ssex 性别 FREOM Student;SELECT Sno AS 学号, Ssex AS 性别 FROM Student;2.4 表取别名查询Course表中的Cno列,并将查询结果命名为CCSELECT Cno FROM Course AS CC;2.5 查询结果去重查询SC中的Sno列,并将结果去重SELECT DISTINCT Sno AS 课程名 FROM SC;2.6 查询结果加条件查询条件如下:查询条件谓词⽐较=、>、<、<=、>=!=、<>、!>、!<、NOT确定范围BETWEEN ANDNOT BETWEEN AND确定集合IN、NOT IN字符匹配LIKE、NOT LIKE空值IS NULL、IS NOT NULL逻辑运算AND、OR、NOT 查询 SC 表中 Grade ⼤于 88 的信息SELECT * FROM SC WHERE Grade >= 88;查询 SC 表中 Grade 在 85 ~ 95 之间的信息SELECT * FROM SC WHERE Geade BETWEEN 85 AND 95;查询 1 是否包含在 (1,2) 之间SELECT 1 FROM (1, 2);查询 Course 表中包含 “系统” 的课程的课程号,课程名"%" 可以近似多个字符,"_" 只能近似⼀个字符SELECT Cno, Cname FROM Course WHERE Cname LIKE '%系统';查询 Course 中先⾏课为空的信息SELECT * FROM Course WHERE Cpno IS NULL;查询 Course 中学分为 4 分并且先⾏课为 1 的课程的课程名SELECT Cname FROM Course WHERE Ccredit = 3 AND Cpno = 1;查询 Course 中学分为 4 分或 3 分的课程的课程名SELECT Cname FROM Course WHERE Ccredit = 3 OR Ccredit = 4;2.7 聚集函数函数含义COUNT(*)统计元组个数COUNT([DISTINCT|ALL]<列名>)统计⼀列中值的个数SUM([DISTINCT|ALL]<列名>)计算⼀列值的总和AVG([DISTINCT|ALL]<列名>)计算⼀列值的平均值MAX([DISTINCT|ALL]<列名>)计算⼀列值中的最⼤值MIN([DISTINCT|ALL]<列名>)计算⼀列值中的最⼩值注:DISTINCT是去除重复的值查询 CS 表中 Grade 的个数(去重)、总和、平均值、最值SELECT COUNT(*) FROM SC;SELECT COUNT(DISTINCT Grade) FROM SC;SELECT SUM(Grade) FROM SC;SELECT AVG(Grade) FROM SC;SELECT MAX(Grade) FROM SC;SELECT MIN(Grade) FROM SC;2.8 分组查询将表 SC 按照 Sno 进⾏分组,然后筛选出分组中 Sno 为 "201215121" 的⼀组SELECT Sno FROM SC GROUP BY Sno HAVING Sno = '201215121';将 Student 与 SC 以 Sno 进⾏等值连接SELECT Student AS S, SC WHERE S.Sno = SC.Sno;2.10 ⾃⾝连接将 Student 表与⾃⽣进⾏连接SELECT Student AD S1, Student AS S2 WHERE S1.Sno = S2.Sno;2.11 外连接将 Course 与 SC 以 Cno 分别进⾏外连接、左外连接、右外连接SELECT * FROM Course OUTER JOIN SC ON o = o;SELECT * FROM Course LEFT OUTER JOIN SC ON o = o;SELECT * FROM Course RIGHT OUTER JOIN SC ON o = o;2.12 多表查询将 Student 与 SC 以 Sno 进⾏连接,并且将 Course 与 SC 以 Cno 进⾏等值连接SELECT *FROM Student JOIN SC ON Student.Sno = SC.SnoJOIN Course ON o = o;SELECT *FROM Student, Course, SCWHERE Student.Sno = SC.Sno AND o = o;2.13 嵌套查询查询 Grade > 90 的学⽣的学号(Sno)、姓名(Sname)、所在院系(Sdept)SELECT Sno, Sname, SdeptFROM StudentWHERE Sno IN (SELECT SnoFROM SCWHERE Grade > 90;);2.14 带有 ANY 的查询查询 Sage > 19 的所有学⽣的姓名(Sname)(结果满⾜⼦集中的任⼀值即可)SELECT SnameFROM StudentWHERE Sage > ANY (SELECT SageFROM StudentWHERE Sage > 19;);2.15 带有 ALL 的查询查询 Sage > 19 的所有学⽣的学号(Sno)(结果要满⾜⼦集中的所有值)SELECT SnoFROM StudentWHERE Sage > ALL (SELECT SageFROM StudentWHERE Sage > 19;);2.16 带 EXISTS 的查询查询没有⼀门课不选修的学⽣的姓名(Sname)SELECT SnameFROM StudentWHERE NOT EXISTS(SELECT *WHERE NOT EXISTS (SELECT *FROM SCWHERE Sno = Student.Sno AND Cno = o););)2.17 集合查询1 并集查询所在系(Sdept)为 "CS" 的学⽣与年龄(Sage)⼤于 19 的学⽣的并集SELECT * FROM Student WHERE Sdept = "CS"UNIONSELECT * FROM Student WHERE Sage > 19;2 交集查询所在系(Sdept)为 "CS" 的学⽣与年龄(Sage)⼤于 19 的学⽣的交集SELECT * FROM Student WHERE Sdept = "CS"INTERSECTSELECT * FROM Student WHERE Sage > 19;3 差集查询所在系(Sdept)为 "CS" 的学⽣与年龄(Sage)⼤于 19 的学⽣的差集SELECT * FROM Student WHERE Sdept = "CS"EXCEPTSELECT * FROM Student WHERE Sage > 19;3 SQL 的增删改3.1 数据的插⼊1 标准添加INSERT INTO Student(Sno, Sname, Ssex, Sage, Sdept)VALUES ('201215128', '⽯昊', '男', 25, 'IS');2 指定部分字段INSERT INTO Student (Sname, Sage, Sdept) VALUE ('叶凡', 22, 'CS');3 不指定字段-- 不指定字段时,需要⼀⼀对应添加且不能缺少项⽬INSERT INTO VALUE Student ('201215128', '⽯昊', '男', 25, 'IS');4 批量添加INSERT INTO Student VALUES('201215128', '⽯昊', '男', 25, 'IS'),('201215129', '叶凡', '男', 22, 'CS'),('201215130', '狠⼈', '⼥', 20, 'MX');3.2 修改将 Student 表中学号(Sno)为 "201215122" 的学⽣姓名(Sname)改为 “⽯昊”,年龄(Sage)改为 25 UPDATE Student SET Sname = "⽯昊", Sage = 25 WHERE Sno = "201215122";3.3 删除删除 Student 表中年龄(Sage)⼤于 18 的数据DELETE FROM Student WHERE Sage > 18;4 视图4.1 视图定义视图(VIEW)也被称作虚表,即虚拟的表,是⼀组数据的逻辑表⽰,其本质是对应于⼀条 SQL 语句,结果集被赋予⼀个名字视图本⾝并不包含任何数据,它只包含映射到基表的⼀个查询语句,当基表数据发⽣变化,视图数据也随之变化⽬的:⽅便,简化数据操作当我们业务需求要查出多张表的数据,这时我们可能会关联多张表查询处理,如果这个查询 SQL 复杂的话也影响了查询效率,这个时候就可以创建视图,查询时候只需要select * from view就可以4.2 创建视图-- 末尾的 WITH CHECK OPTION 作⽤如下:-- 当后续操作对视图进⾏增删改操作时,可能视图已经不满⾜⼦条件 S 的约束-- 加上该语句之后,后续对视图进⾏增删改的时,系统会⾃动在该⼦条件 S 下进⾏操作CREATE VIEW S_STUAS <⼦查询>[WITH CHECK OPTION];将 Student 表中学⽣年龄(Sage)> 18 的学⽣创建⼀个名为 S_NEW 的视图,该视图包含学⽣的学号(Sno)、姓名(Sname)、性别(Ssex)、所在院系(Sdept)CREATE VIEW S_NEWASSELECT Sno, Sname, Ssex, SdeptFROM StudentWHERE Sage > 18WITH CHECK OPTION;4.3 删除视图-- CASCADE 的作⽤如下:-- 当加上该语句时,会删除该视图以及其下的所有视图-- 当不加该语句时,若该视图下该有其他视图,会删除失败DROP VIEW <视图名> [CASCADE];删除 4.2 创建的视图 S_NEWDROP VIEW S_NEW CASCADE;4.4 查询视图查询 4.2 视图 S_NEW 中性别(Ssex)为 “⼥” 的学⽣的学号(Sno)SELECT SnoFROM S_NEWWHERE Ssex = "⼥";4.5 视图更新视图是虚拟的,不存在的,所以对于视图的操作,最终会反映到基本表上将 4.2 的视图 S_NEW 中所在系(Sdept)为 “CS” 学⽣的性别(Ssex)全改为 “男”-- 更新视图UPDATE S_NEWSET Ssex = "男"WHERE Sdept = "CS";-- 更新基本表-- 因为 4.2 的视图创建条件是 Sage > 18,因此更新基本表时要加上该条件UPDATE StudentSET Ssex = "男"WHERE Sdept = "CS" AND Sage > 18;。
SQL语言-数据类型+数据定义
![SQL语言-数据类型+数据定义](https://img.taocdn.com/s3/m/e646a374f242336c1eb95e73.png)
例4.15 给book_manage 数据库中添加一个数据文件。 alter database book_manage add file ( name = book_manage_second, filename="c:\mydatabase\newfile.sdf" ) 例4.15 删除book_manage 数据库中的次要数据文件 alter database book_manage remove file book现方式做保护处理对用户上传分享的文档内容本身不做任何修改或编辑并不能对任何下载内容负责
第4讲 SQL语言
4.1 SQL概述 (P21教材2.1-2.2)
4.1 SQL概述
• SQL(Structured Query Language)
结构化查询语言,是关系数据库的标准语言
MAXSIZE:指定 文件可以增长到的最大大小。 可以使用千字节 (KB)、兆字节 (MB)、千兆字节 (GB) 或兆兆字节 (TB) 为单位。默认为 MB。指定一个整 数,不要包含小数位。如果没有指定 max_size,那么 文件将增长到磁盘变满为止。 UNLIMITED:指定文件将增长无上限,到磁盘变满 为止。
1.创建及修改数据库 (1) 创建新数据库 基本语法如下: CREATE DATABASE database_name [ ON [ PRIMARY ] [< filespec > [ ,...n ] ] ] [ LOG ON { < filespec > [ ,...n ] } ] 其中< filespec > 语法如下:
(2) 用系统存储过程显示数据库结构 可以使用系统提供的系统存储过程sp_helpdb 来显示 数据库信息,其语法如下: sp_helpdb [[@dbname=] 'name']
SQL数据定义与数据查询
![SQL数据定义与数据查询](https://img.taocdn.com/s3/m/94eb766e1eb91a37f1115cae.png)
数据库上机报告——数据定义与数据查询一、写明实验所采用的实验环境:硬件环境:普通联网的PC机;操作系统:Windows 2000或者Windows XP;数据库管理系统:MS SQL Server 2005。
二、给出实验内容与完成情况:(一)使用命令行方式建立学生课程数据库(1) 用SQL语言建立学生课程数据库,数据库命名:SC_学号后四位及姓名,如SC_3112liyan;CREATE DATABASE SC_1224cxjON(NAME= SC_1224cxj_dat,FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\SC_1224cxj_dat.mdf')LOG ON(NAME= SC_1224cxj_log,FILENAME='C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\ SC_1224_log.ldf');(2) 用SQL语言在学生课程数据库中建立3个表,要求进行完整性定义:学生关系Student(Sno,Sname,Ssex,Sage,Sdept)其中Sno不能为空,值是唯一的,并且Sname取值也唯一,Sage自定义约束“大于16”课程关系Course(Cno,Cname,Cpno,Ccredit) 其中Cno不能为空,值是唯一的,并且Cname取值也唯一教师关系Teacher(Tno,Tname,Department,Email,Salary) 其中Tno不能为空,值是唯一的选修关系SC(Sno,Cno,Grade) 其中Sno和Cno不能为空,(Sno, Cno)为主码,Grade的数据类型为int建立Student表:CREATE TABLE Student(Sno CHAR(9)PRIMARY KEY,Sname CHAR(40)UNIQUE,Ssex CHAR(2),Sage SMALLINT CHECK(Sage>16),Sdept CHAR(20));建立Course表:CREATE TABLE Course(Cno CHAR(4)PRIMARY KEY,Cname CHAR(40)UNIQUE,Cpno CHAR(4),Credit SMALLINT,CONSTRAINT FK_C FOREIGN KEY(Cpno)REFERENCES Course(Cno));建立Teacher表:CREATE TABLE Teacher(Tno CHAR(4)PRIMARY KEY,Tname CHAR(40),Department CHAR(20),Email CHAR(100),Salary INT);建立SC表:CREATE TABLE SC(Sno CHAR(9),Cno CHAR(4),Grade SMALLINT,PRIMARY KEY(Sno,Cno),CONSTRAINT FK_SC1 FOREIGN KEY(Sno)REFERENCES Student(Sno),CONSTRAINT FK_SC2 FOREIGN KEY(Cno)REFERENCES Course(Cno));(3) 修改数据表:✓将SC表中Grade的数据类型改为float;ALTER TABLE SC ALTER COLUMN Grade FLOAT;✓在Student表中增加一个属性Scome记录学生的入学时间,其数据类型为DATETIME;ALTER TABLE Student ADD Scome DATETIME;✓删除Student表中新增加Scome属性;ALTER TABLE Student DROP COLUMN Scome;✓删除表Teacher表中的Email属性;ALTER TABLE Teacher DROP COLUMN Email;✓删除Student表中对Sname属性创建的Unique约束。
sql数据定义语句
![sql数据定义语句](https://img.taocdn.com/s3/m/e4c4ba60bdd126fff705cc1755270722192e59dc.png)
sql数据定义语句摘要:1.SQL 数据定义语句的概念和作用2.SQL 数据定义语句的分类3.示例:创建数据库、表和索引4.示例:定义约束和触发器5.总结正文:SQL(Structured Query Language)是一种用于管理关系型数据库的编程语言,它可以执行查询、插入、更新和删除等数据库操作。
在SQL 中,数据定义语句(Data Definition Language,DDL)是用于定义和管理数据库中的对象(如表、视图、索引等)的语句。
SQL 数据定义语句主要分为以下几类:1.创建数据库(CREATE DATABASE):用于创建新的数据库。
2.创建表(CREATE TABLE):用于创建新的表,并定义表中的列和数据类型。
3.修改表(ALTER TABLE):用于修改已有表的结构,如添加、删除或修改列。
4.删除表(DROP TABLE):用于删除不再需要的表。
5.创建索引(CREATE INDEX):用于创建索引,以提高查询效率。
6.删除索引(DROP INDEX):用于删除不再需要的索引。
7.定义约束(CONSTRAINTS):用于定义表之间的关联关系,如主键、外键等。
8.触发器(TRIGGERS):用于在特定条件下自动执行一些操作,如插入、更新或删除数据时。
下面我们通过一些示例来具体了解SQL 数据定义语句的使用:1.创建数据库```sqlCREATE DATABASE databasenam;```2.创建表```sqlCREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(50),age FLOAT,gender CHAR(1));```3.创建索引```sqlCREATE INDEX idx_students_age ON students (age);```4.定义约束```sqlCREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),age FLOAT,gender CHAR(1),department_id INT,FOREIGN KEY (department_id) REFERENCES departments(id) );```5.触发器```sqlDELIMITER //CREATE TRIGGER after_insert_employeeAFTER INSERT ON employees FOR EACH ROWBEGININSERT INTO log (employee_id, action) VALUES (NEW.id, "insert");END;//DELIMITER ;```以上示例演示了SQL 数据定义语句的一些常见操作。
第3章 SQL语言基础及数据定义功能
![第3章 SQL语言基础及数据定义功能](https://img.taocdn.com/s3/m/5c91e7133968011ca30091c7.png)
Create Table SC (学号 char(7) References S(学号), 课程号 char(2) Not Null, 成绩 smallint Check(成绩>=0), Primary Key(学号, 课程号) Foreign Key(课程号) References C(课程号) ) (2)删除数据表 格式:Drop Table 表名, … 功能:删除数据表。 例:删除数据表text,语句为 Drop Table text
(3)删除数据库 格式:Drop DataBase 数据库名 功能:删除指定数据库。 例:删除学生管理数据库student 。 Drop DataBase student 3.3.1 数据表建立和删除 (1)建立数据表 格式:Create Table 数据表名 (列名 类型 [完整性约束] ,… [,完整性约束])
SQL语言的命令动词 SQL功能
数据查询 数据定义 数据操纵 数据控制 SELECT CREATE、DROP、ALTER INSERT、UPDATE、DELETE GRANT、REVOKE
命令动词
P27表3-1
3.2 SQL数据类型
在定义表结构时,每个字段都要指明它的数据类 型,SQL提供了丰富的数据类型。 每个数据类型都有它的特点和取值范围,用户使 用时可以根据实际需要进行选择。 3.2.1 数值型 1. 准确型 指在计算机中能精确存储的数据类型。 有bigint、int、smallint、tinyint、bit、nume ric(p,q)、decimal(p,q)等。
3.3.2 修改表结构 格式:Alter Table 表名 [Alter Column 列名 新类型 |Add 新列名 类型 [完整性约束] |Drop Column 列名] 功能:修改列类型、添加新列、删除列。 例2:为表SC添加新列修课类别。 Alter Table SC Add 修课类别 char(4) 例3:修改表SC中修课类别的类型。 Alter Table SC Alter Column 修课类别 char(6)
07_SQL-数据定义及操纵-25
![07_SQL-数据定义及操纵-25](https://img.taocdn.com/s3/m/b99cd86fb84ae45c3b358c8e.png)
INTO子句 指定要插入数据的表名及属性列,属性列的顺序可与表定义中 的顺序不一致。 若未指定属性列:表示要插入的是一条完整的元组,且属性 若未指定属性列 列属性与表定义中的顺序一致。否则,若指定部分属性列 若指定部分属性列: 若指定部分属性列 插入的元组在其余属性列上取空值 VALUES子句 提供的值必须与INTO子句匹配
SQL数据定义语言
例:建立一个“学生选课”表SC,它由学号 Sno、课程号Cno,修课成绩Grade组成,其 中(Sno, Cno)为主码。
CREATE TABLE SC( Sno CHAR(7) , Cno CHAR(4) , Grade int, Primary key (Sno, Cno), Foreign key (Sno) References student(Sno), Foreign key (Cno) References Course(Cno));
Ssm
SQL数据定义语言
例:创建一个学生表 建立一个“学生”表Student,它由学号Sno、姓名 Sname、性别Ssex、年龄Sage、所在系Sdept五个 属性组成。其中学号不能为空,值是唯一的,并且姓 名取值也唯一。
CREATE TABLE Student( Sno CHAR(9) NOT NULL UNIQUE, Sname CHAR(20) UNIQUE, Ssex CHAR(2), Sage NUMERIC(2,0), Sdept CHAR(20) );
ALTER TABLE student DROP unique(sname);
Ssm
数据操纵语言
插入数据 两种插入数据方式
¤ 插入单个元组 ¤ 插入子查询结果(参见子查询内容)
Ssm
SQL语言是用于数据库查询的结构化语言
![SQL语言是用于数据库查询的结构化语言](https://img.taocdn.com/s3/m/e9012920ef06eff9aef8941ea76e58fafab0458f.png)
SQL语言是用于数据库查询的结构化语言,最早由Boyce和Chambedin在1974年提出,称为SEQUEL语言。
1976年,IBM公司的San Jose研究所在研制关系数据库管理系统System R时修改为SEQUEL2,即目前的SQL语言。
1976年,SQL开始在商品化关系数据库管理系统中应用。
1982年美国国家标准化组织ANSI确认SQL为数据库系统的工业标准。
目前,许多关系型数据库供应商都在自己的数据库中支持SQL语言,如:Access、Oracle、Sybase、Infomix、DB2等。
当前,最新的SQL语言是ANSI SQL-99。
Transact-SQL(T-SQL)是微软公司在SQL Server数据库管理系统中ANSI SQL-99的实现。
在SQL Server数据库中,T-SQL语言由以下几部分组成:(1) 数据定义语言(DDL)。
用于执行数据库的任务,对数据库以及数据库中的各种对象进行创建、删除、修改等操作。
如前所述,数据库对象主要包括:表、缺省约束、规则、视图、触发器、存储过程。
DDL包括的主要语句及功能如表5.1所示。
表5.1 DDL主要语句及功能DDL各语句的语法、使用方法及举例请参考相关章节。
(2) 数据操纵语言(DML)。
用于操纵数据库中各种对象,检索和修改数据。
DML包括的主要语句及功能如表5.2所示。
表5.2 DML主要语句及功能(3) 数据控制语言(DCL)。
用于安全管理,确定哪些用户可以查看或修改数据库中的数据,DCL包括的主要语句及功能如表5.3所示。
表5.3 DCL主要语句及功能128DCL各语句的语法、使用方法及举例请参考相关章节。
(4) T-SQL增加的语言元素。
这部分不是ANSI SQL-99所包含的内容,而是微软为了用户编程的方便增加的语言元素。
这些语言元素包括变量、运算符、函数、流程控制语句和注解。
这些T-SQL语句都可以在查询分析器中交互执行。
sql的语句类型
![sql的语句类型](https://img.taocdn.com/s3/m/0ae4bcfa970590c69ec3d5bbfd0a79563d1ed441.png)
sql的语句类型SQL(Structured Query Language)是用于管理关系数据库的标准编程语言。
以下是SQL中的一些主要语句类型:1. 数据定义语言 (DDL)`CREATE` - 用于创建数据库、表、视图等。
+ 例如:`CREATE DATABASE`, `CREATE TABLE`, `CREATE VIEW``ALTER` - 用于修改数据库、表等结构。
+ 例如:`ALTER TABLE``DROP` - 用于删除数据库、表、视图等。
+ 例如:`DROP DATABASE`, `DROP TABLE`, `DROP VIEW` `TRUNCATE` - 用于删除表中的所有数据,但不删除表本身。
2. 数据操纵语言 (DML)`INSERT` - 用于向表中插入数据。
`UPDATE` - 用于修改表中的数据。
`DELETE` - 用于从表中删除数据。
3. 数据查询语言 (DQL)`SELECT` - 用于从数据库表中检索数据。
4. 事务控制语言 (TCL)`COMMIT` - 用于提交事务。
`ROLLBACK` - 用于回滚事务。
`SAVEPOINT` - 用于设置保存点。
5. 其他`SET` - 用于设置SQL会话参数。
`SHOW` - 用于显示数据库、表、视图等的结构或状态。
`DESCRIBE` - 用于显示表的结构。
6. 组合和特定数据库的语句SQL包含许多子语句、关键字和函数,可以根据需要组合使用,以满足各种复杂的查询和操作需求。
此外,不同的数据库管理系统(如MySQL、Oracle、SQL Server等)可能有其特定的扩展和语法。
数据库系统概论:第4章 关系数据库标准语言——SQL语言1
![数据库系统概论:第4章 关系数据库标准语言——SQL语言1](https://img.taocdn.com/s3/m/7aab5ce87d1cfad6195f312b3169a4517723e533.png)
4)删除完整性约束
例:删除“Height”属性列上的CHECK约束。 ALTER TABLE Student DROP
CONSTRAINT Chk1;
27
5)删除属性列
例:删除Student表中新增加的“Height”属性列。 ALTER TABLE Student DROP COLUMN Height;
2
2、SQL语言应用情况
(1) Oracle、Sybase、Informix、Ingres、 DB2、SQL Server、Rdb等大型数据库管理系统 实现了SQL语言; (2) Dbase、Foxpro、Acess等PC机数据库管理 系统部分实现了SQL语言; (3)可以在HTML(Hypertext Markup Language, 超文本标记语言)中嵌入SQL语句,通过WWW访 问数据库; (4)在VC、VB、Delphi、PB也可嵌入SQL语句。
/*外键约束*/ Credit NUMBER);
21
例3:建立一个学生选课表SC,所有约束条件均为表
级完整性约束。
CREATE TABLE SC
( Sno CHAR(8),
Cno CHAR(8),
Grade NUMBER,
PRIMARY KEY(Sno,Cno),
/*主键约束*/
FOREIGN KEY(Sno) REFERENCES Student(Sno)
25
3)增加完整性约束
例:给Student表中“Height”属性列增加一 个CHECK约束,要求学生的身高要超过140厘 米才行。 ALTER TABLE Student ADD CONSTRAINT Chk1 CHECK(Height>140);
结构化查询语言SQL(2)——数据定义语言
![结构化查询语言SQL(2)——数据定义语言](https://img.taocdn.com/s3/m/f7f74ddf6f1aff00bed51eec.png)
例2:建立一个“学生”表Student,它由学号 :建立一个“学生” ,它由学号Sno、姓名 、姓名Sname、 、 性别Ssex、年龄 五个属性组成。 性别 、年龄Sage、所在系 、所在系Sdept五个属性组成。其中学号不 五个属性组成 能为空,姓名取值唯一。 能为空,姓名取值唯一。 CREATE TABLE Student(Sno CHAR(5) NOT NULL, ( ( ) Sname CHAR(8)UNIQUE, ( ) 表名 Ssex CHAR(2), 数据类型 ( ) Sage INT, 列名(字段名) 列名(字段名) Sdept CHAR(20)); ( ));
SQL的数据定义语句 的数据定义语句
操作对象 表 视图 索引
操作方式 创建 create table create view create index 删除 drop table drop view drop index 修改 alter table
定义数据库 创建、 创建、修改和撤消数据库 定义基本表 定义、 定义、修改与删除基本表 定义索引 建立与删除索引
例6:建立一个“成绩”表chengji,它由学号 、课程号 :建立一个“成绩” ,它由学号sno、课程号cno、 、 成绩cj三个属性组成 定义此表并定义相应的主键和外键。 三个属性组成。 成绩 三个属性组成。定义此表并定义相应的主键和外键。 CREATE TABLE chengji (sno CHAR(5), cno CHAR(3), cj INT, primary key (sno,cno), foreign key (sno) references student(sno), foreign key (cno) references cullum(cno) );
SQL的数据定义语言(DDL)
![SQL的数据定义语言(DDL)](https://img.taocdn.com/s3/m/ed5910c988eb172ded630b1c59eef8c75fbf95d3.png)
SQL的数据定义语言(DDL)
SQL的数据定义功能包括定义模式、定义基本表、定义视图、 定义索引。
1.1 定义模式
1)模式的创建
在SQL中,一个模式定义为基本表的集合。模式由模式名和模式拥有 者的用户名或账号来确定,并包含模式中每一个元素(基本表、视图、 索引等)的定义。创建一个模式,可以理解为建立一个数据库,或定 义一个存储空间,其句法是
实例
CREATE TABLE Table_Student ( StudentID varchar (12) NOT NULL, CardID varchar(8), Sname varchar(8) , School varchar(8) NOT NULL, Sex char(1) CHECK ( Sex in ('M','F')), PRIMARY KEY (StudentID), FOREIGN KEY (CardID) REFERENCES Table_Card(CardID));
1.2 定Байду номын сангаас基本表
3)基本表的修改
在基本表建立使用一段时间后,可能由于分析设计不到位或应用需求的不断变化 等原因,需要对基本表结构进行修改,比如新增列和完整性约束、修改原有的列 定义和完整性约束定义等。
SQL语言使用ALTER TABLE 命令来完成这一功能,其基本格式为:
1.2 定义基本表
实例
CREATE TABLE Table_Card ( CardID varchar(8) PRIMARY KEY, Password varchar(8) NOT NULL, StartDate datetime NOT NULL, EndDate datetime , State char(1) NOT NULL CHECK (State in ('0','1','2')), Balance money NOT NULL CHECK (Balance>=0 ), CHECK (StartDate<EndDate));
数据库的四种语言(DDL、DML、DCL、TCL)
![数据库的四种语言(DDL、DML、DCL、TCL)](https://img.taocdn.com/s3/m/a71f433f443610661ed9ad51f01dc281e53a561f.png)
数据库的四种语⾔(DDL、DML、DCL、TCL)1.DDL (Data Definition Language )数据库定义语⾔ statements are used to define the database structure or schema. DDL是SQL语⾔的四⼤功能之⼀。
⽤于定义数据库的三级结构,包括外模式、概念模式、内模式及其相互之间的映像,定义数据的完整性、安全控制等约束DDL不需要commit.CREATEALTERDROPTRUNCATECOMMENTRENAME2.DML (Data Manipulation Language)数据操纵语⾔ statements are used for managing data within schema objects.由DBMS提供,⽤于让⽤户或程序员使⽤,实现对数据库中数据的操作。
DML分成交互型DML和嵌⼊型DML两类。
依据语⾔的级别,DML⼜可分成过程性DML和⾮过程性DML两种。
需要commit.SELECTINSERTUPDATEDELETEMERGECALLEXPLAIN PLANLOCK TABLE3.DCL(Data Control Language)数据库控制语⾔授权,⾓⾊控制等GRANT 授权REVOKE 取消授权4.TCL(Transaction Control Language)事务控制语⾔SAVEPOINT 设置保存点ROLLBACK 回滚SET TRANSACTIONSQL主要分成四部分:(1)数据定义。
(SQL DDL)⽤于定义SQL模式、基本表、视图和索引的创建和撤消操作。
(2)数据操纵。
(SQL DML)数据操纵分成数据查询和数据更新两类。
数据更新⼜分成插⼊、删除、和修改三种操作。
(3)数据控制。
包括对基本表和视图的授权,完整性规则的描述,事务控制等内容。
(4)嵌⼊式SQL的使⽤规定。
涉及到SQL语句嵌⼊在宿主语⾔程序中使⽤的规则。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
宁波工程学院
数据库理论与技术课程实验报告
学院:电信学院专业:计科年级:091
实验时间:11.4.2
组长:熊剑文学号:组_______
姓名:林静冰学号:09401010108 组_______
姓名:学号:组_______
姓名:学号:组_______
指导教师签字:成绩:
实验名称:SOL-数据定义语言
一、实验目的和要求
1、通过对SQL SERVER2005的使用,了解数据库管理系统的工作原理和系统构架,加深对数据库基本知识的理解。
2、通过实验加深对数据库对象模式、表、索引的理解,掌握SQL 中数据定义语言的基本功能。
二、实验内容和原理
1、了解SQL SERVER中服务的涵义,学会启动和停止服务。
2、掌握SOL Server Management Studio的启动方式和连接方法。
了解对象资源管理器,SQL语句的编译运行过程。
3、在SQL Server Management Studio中创建数据库Library。
Create Database Library
4、在模式Lib中创建三张表Books、Readers、L_R。
Books(bookid,classid,bookname,author,price,pubcompany,csl)
要求:在创建表的工程中为每张表设置主码。
5、AL TER TABLE语句练习。
在已建好的三张表中,增加新的列、修改已有的列。
6、分别在Books、Readers、L_R表中创建索引。
三、实验过程及数据记录
CREA TE TABLE Books(
bookid varchar(20) PRIMARY KEY,
classid varchar(20) NOT NULL,
bookname varchar(20) NOT NULL,
author varchar(20) NOT NULL,
price money NOT NULL,
pubcompany varchar(50) NOT NULL,
csl int NOT NULL
);
CREA TE TABLE Readers(
rno varchar(20) PRIMARY KEY,
rname varchar(20) NOT NULL,
rsex char(1) default('M') CHECK (rsex='M'OR rsex='F') NOT NULL, spet varchar(50) NOT NULL,
bday datetime NOT NULL
);
CREA TE TABLE L_R( rno varchar(20) FOREIGN KEY(rno) REFERENCES Readers(rno) PRIMARY KEY,
bookid varchar(20) FOREIGN KEY(bookid) REFERENCES Books(bookid),
lenddate datetime NOT NULL, limitdate datetime NOT NULL,
returndate datetime NOT NULL, fine float NOT NULL);
AL TER TABLE Books ADD publictime datetime NULL ;
AL TER TABLE Books AL TER COLUMN bookname varchar(30) NOT NULL;
INSERT INTO Books (bookid,classid,bookname,author,price,pubcompany,csl)
V ALUES('111111','I.3','鞋里的沙','胡足青', 26.0,'九州出版社',125580); INTERINTOBooks(bookid,classid,bookname,author,price,pubcompany,c sl)
V ALUES('22222','I.4','鞋里的沙','胡足青',26.0,'浙江教育出版社',125570); INSERT INTO Books (bookid,classid,bookname,author,price,pubcompany,csl)V ALUES('33333' ,'I.6','数据库','范',22.5,'宁波工程出版社',3235);
SELECT bookid as 图书编号,classid as 分类号,bookname as 图书名称,author as 作者,price as 单价,pubcompany as 出版社,csl as 藏书量FROM Books;
CREA TE UNIQUE NONCLUSTERED INDEX bookEDS ON Books(bookid);
四、实验结果与分析
五、心得体会(注意:每个组员必须分开书写,组长分配每个组员的贡献值)
林静冰:这次实验我简单掌握了如何使用SQL SERVER,刚开始发现运行了程序后数据库并没有改变,比如运行语句:Create Database Library,却发现并没有创建Library数据库,后来才发现原来SQL SERVER 左右两边的服务器不同,需要刷新。
还有就是如要在Library 库中操作,先得将页面切为Library,use Library。
总之,这次实验学会了一些建表、插入、删除等基本语句,期待下一次实验。
贡献值:10分。