数据库语言SQL(1)

@[TOC]关系数据库语言SQL(上)

一,SQL概述

1.SQL产生与发展

标准 发布日期
SQL/86 ANSI ISO 1986.10
SQL/89(FIPS 127-1) 1989年
SQL/92 1992年
SQL99 1999年
SQL2003 2003年

2.SQL特点

1.综合统一
2.高度非过程化
3.面向集合的操作方式
4.以同一种语法结构提供多种使用方式
5.语言简洁,易学易用

3.SQL基本概念

  1. 表 (Table):SQL 中的表是关系型数据库的基本单元,它由行 (Row) 和列 (Column)组成。每列都有其特定的数据类型,如数字、字符串、日期等。行则是由列组成的一系列数据。

  2. 查询 (Query):SQL 查询是指对关系型数据库中的数据进行检索、筛选和排序等操作。查询可以包括SELECT,WHERE、ORDER BY 等子句。

  3. 插入 (Insertion):SQL 插入是指将新的行添加到关系型数据库表中。插入可以使用 INSERT INTO 语句。

  4. 更新 (Update):SQL 更新是指对关系型数据库表中的数据进行修改。更新可以使用 UPDATE 语句。

  5. 删除 (Deletion):SQL 删除是指从关系型数据库表中删除指定的行。删除可以使用 DELETE 语句。

  6. 关系(Relationship):SQL中的关系是指表之间的关联关系。两个表之间如果有一对一、一对多或多对多的关系,就可以使用关系型数据库中的外键和主键来定义。

  7. 表名 (Table Name):表名是关系型数据库表中的标识符。在 SQL 语句中,表名必须以大写字母开头。

  8. 列名 (Column Name):列名是关系型数据库表中的列标识符。在 SQL 语句中,列名必须以小写字母开头。

  9. 主码(PRIMARY KEY):主码是关系型数据库表中的唯一标识符,用于唯一地标识每行数据。主码可以使用数字、字母或下划线等形式来定义。

  10. 外码 (Foreign Key):外码是关系型数据库表中的引用键,用于连接两个表之间的关系。外码通常使用数字、字母或下划线等形式来定义。

二,学生-课程数据库

学生-课程模式 S-T :    
学生表:Student(Sno,Sname,Ssex,Sage,Sdept)
课程表:Course(Cno,Cname,Cpno,Ccredit)
学生选课表:SC(Sno,Cno,Grade)   

Student表
数据库语言SQL(1)_第1张图片

Course表数据库语言SQL(1)_第2张图片

SC表
数据库语言SQL(1)_第3张图片

三,数据定义

SQL的数据定义语句
数据库语言SQL(1)_第4张图片

1.模式的定义与删除

定义模式

  1. 定义模式实际上定义了一个命名空间
  2. 在这个空间中可以定义该模式包含的数据库对象,例如基本表、视图、索引等。
  3. 在CREATE SCHEMA中可以接受CREATE TABLE,CREATE VIEW和GRANT子句。
    CREATE SCHEMA TEST AUTHORIZATION ZHANG
    CREATE TABLE TAB1(COL1 SMALLINT,
    COL2 INT,
    COL3 CHAR(20),
    COL4 NUMERIC(10,3),
    COL5 DECIMAL(5,2)
    );
    下面展示一些 内联代码片

例:为用户ZHANG创建了一个模式TEST,并在其中定义了一个表TAB1

CREATE SCHEMA TEST AUTHORIZATION ZHANG 
    CREATE TABLE TAB1
    (COL1 SMALLINT, 
     COL2 INT,
     COL3 CHAR(20),
     COL4 NUMERIC(10,3),
     COL5 DECIMAL(5,2)
     );

删除模式
DROP SCHEMA <模式名>
CASCADE(级联)

  1. 删除模式的同时把该模式中所有的数据库对象全部删除 RESTRICT(限制)
  2. 如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行。
  3. 当该模式中没有任何下属的对象时 才能执行。

例:删除模式ZHANG

DROP SCHEMA TEST CASCADE;(同时该模式中定义的表TAB1也被删除)

2.基本表的定义、删除与修改

(1)定义基本表

CREATE TABLE <表名>
      (<列名> <数据类型>[ <列级完整性约束条件> ]
      [,<列名> <数据类型>[ <列级完整性约束条件>] ] …
      [,<表级完整性约束条件> ] );

如果完整性约束条件涉及到该表的多个属性列,则必须定义在表级上,否则既可以定义在列级也可以定义在表级。

例:建立一个“课程”表Course

CREATE TABLE  Course
   ( Cno       CHAR(4) PRIMARY KEY,
     Cname  CHAR(40),            
     Cpno     CHAR(4) ,               	                      
     Ccredit  SMALLINT,
     FOREIGN KEY (Cpno) REFERENCES  Course(Cno) 
   ); 

(2)数据类型

  1. SQL中域的概念用数据类型来实现
  2. 定义表的属性时 需要指明其数据类型及长度

数据类型数据库语言SQL(1)_第5张图片

(3)模式与表

  1. 每一个基本表都属于某一个模式
  2. 一个模式包含多个基本表
  3. 定义基本表所属模式

方法一:在表名中明显地给出模式名

Create table “S-T”.Student(......);   /*模式名为 S-T*/
Create table “S-T”.Cource(......);
Create table “S-T”.SC(......); 

方法二:在创建模式语句中同时创建表
方法三:设置所属的模式

(4)修改基本表

ALTER TABLE <表名>
[ ADD [<新列名> <数据类型>] [ 完整性约束 ] ]
[ DROP <完整性约束名> ]
[ ALTER COLUMN<列名> <数据类型> ];
  MODIFY
  
约束(属性名)

例:向Student表增加“入学时间”列,其数据类型为日期型。

ALTER TABLE Student ADD S_entrance DATE;

(5)删除基本表

DROP TABLE <表名>[RESTRICT/ CASCADE];

RESTRICT:删除表是有限制的。
CASCADE:删除该表没有限制。

例:删除Student表

DROP TABLE  Student  CASCADE ;
1.基本表定义被删除,数据被删除
2.表上建立的索引、视图、触发器等一般也将被删除

3.索引的建立与删除

建立索引
建立索引的目的:加快查询速度

语句格式:

CREATE [UNIQUE] [CLUSTER] INDEX <索引名> 
ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);
       [ASC ]| DESC	
UNIQUE---唯一索引,索引的每一个值对应唯一的数      
                  据记录
CLUSTER---聚簇索引,索引项的顺序与表中记录的 
                  物理顺序一致

例:在Student表的Sname(姓名)列上建立一个聚簇索引

CREATE CLUSTER INDEX Stusname 
           ON   Student(Sname);

删除索引

语句格式:

DROP INDEX <索引名>;

删除索引时,系统会从数据字典中删去有关该索引的
描述。

例:删除Student表的Stusname索引

  DROP INDEX Stusname;

你可能感兴趣的:(数据库,sql,mysql,程序人生)