《关系数据库标准语言MySQL》
一. 关键词索引
关键词 | 语义 |
---|---|
insert | 插入(增) |
delete | 删除(删) |
select | 查询(查) |
update | 更新/修改(改) |
二. 数据定义
操作对象 | 创建 | 删除 | 修改 |
---|---|---|---|
模式 | create schema | drop schema | |
表 | create table | drop table | alter table |
视图 | create view | drop view | |
索引 | create index | drop index | alter index |
(一) 模式的定义与删除
Ⅰ. 定义模式
create schema<模式名>authorization<用户名>;
//例:为用户zhang创建一个模式test.
create schema test authorization zhang ;
Ⅱ. 删除模式
drop schema<模式名><cascade|restrict>; //例:删除模式test. drop schema test cascade //该语句删除了test模式,同时,该模式中已经定义的表也>被删除了
- 选择了
cascade
,表示在删除模式的同时把模式中所有的数据库对象全部删除;- 选择了
restrict
,只有在该模式中没有任何下属对象时才能执行删除语句;
(二) 基本表的定义,删除与修改
Ⅰ. 定义基本表
create table<表名>(<列名><数据类型>[列级完整性约束条件][,<列名><数据类型>[列级完整性约束条件]]
……
[,<表级完整性约束条件>]);
//例:建立一个“学生”表Student.
create table Student
/*学号*/(Sno char(9) primary key, /*列级完整性约束条件,Sno是主码*/
/*姓名*/Sname char(20) unique, /*Sname取唯一值*/
/*性别*/Ssex char(2),
/*年龄*/Sage smallint,
/*专业*/Sdept char(20));
//例:建立一个“课程”表Course.
create table Course
/*课程号*/(Cno char(4) primary key, /*列级完整性约束条件,Cno是主码*/
/*课程名*/Cname char(40) not null, /*列级完整性约束条件,Cname不能取空值*/
/*先行课*/Cpno char(4),
/*学分*/Ccredit smallint,
foreign key(Cpno) references Course(Cno) /*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/
);
//例:建立一个学生选课表SC.
create table SC
/*学号*/Sno char(9),
/*课程号*/Cno char(4),
/*成绩*/Grade smallint,
primary key(Sno, cno), /*主码由两个属性构成,必须作为表级完整性进行定义*/
foreign key(Sno)references Student(Sno), /*表级完整性约束条件,Sno是外码,被参照表是Student*/
foreign key(Cno)references Course(Cno) /*表级完整性约束条件,Cno是外码,被参照表是Course*/
);
Ⅱ. 数据类型
数据类型 | 含义 |
---|---|
char(n), character(n) | 长度为n的定长字符串 |
varchar(n), charactervarying(n) | 最大长度为n的变长字符串 |
clob | 字符串大对象 |
blob | 二进制大对象 |
int, integer | 长整数(4字节) |
smallint | 短整数(2字节) |
bigint | 大整数(8字节) |
numeric(p, d) | 定点数, 由p位数字(不包括符号,小数点)组成,小数点后面有b位数字 |
decimal(p, d), dec(p, d) | 同numeric |
real | 取决于机器精度的单精度浮点数 |
double precision | 取决于机器精度的双精度浮点数 |
float(n) | 可选精度的浮点数,精度至少为n位数字 |
boolean | 逻辑布尔量 |
date | 日期,包括年,月,日,格式为YYYY-MM-DD |
time | 时间,包含一日的时,分,秒,格式为HH:MM:SS |
timestamp | 时间戳类型 |
interval | 时间间隔类型 |
Ⅲ. 模式与表
🔷当定义基本表时,有三种方法定义它所属的模式;
- 在表名中明显给出模式名:
create table "S-T".Student(……); /*Student所属的模式是S-T*/
- 在创建模式语句中同时创建表:
//例:为用户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));
- 设置所属的模式,这样可以在创建表时表名中不必给出模式名;
Ⅳ. 修改基本表
🔷<表名>:是要修改的基本表;
alter table<列名> [add [column]<新列名><数据类型>[完整性约束]] [add<表级完整性约束>] [drop [column]<列名>[cascade | restrict]] [drop constraint<完整性约束名> [cascade | restrict]] [alter column<列名><数据类型>];
🔷add子句:用于增加新列、新的列级完整性约束条件和新的表级完整性约束条件;
- 向student表增加“入学时间”列,其数据类型为日期型;
alter table student add 入学时间 Date