目录
1、模式的定义(SQL)or 数据库的创建(mysql语言)
2、模式的删除(SQL)or 数据库的删除(mysql语言)
一、本篇作为例子的三个表
学号(Sno) | 姓名(Sname) | 性别(Ssex) | 年龄(Sage) | 所在系(Sdept) |
201215121 | 李勇 | 男 | 20 | CS |
201215122 | 刘晨 | 女 | 19 | CS |
201215123 | 王敏 | 女 | 18 | MA |
201215125 | 张立 | 男 | 19 | IS |
Course
课程号(Cno) | 课程名(Cname) | 先行课(Cpno) | 学分(Ccredit) |
1 | 数据库 | 5 | 4 |
2 | 数学 | 2 | |
3 | 信息系统 | 1 | 4 |
4 | 操作系统 | 6 | 3 |
5 | 数据结构 | 7 | 4 |
6 | 数据处理 | 2 | |
7 | PASCAL语言 | 6 | 4 |
SC
学号(Sno) | 课程号(Cno) | 成绩(Grade) |
201215121 | 1 | 92 |
201215121 | 2 | 85 |
201215121 | 3 | 88 |
201215122 | 2 | 90 |
201215122 | 3 | 80 |
二、模式的定义与删除
1、模式的定义(SQL)or 数据库的创建(mysql语言)
语法:create database 数据库名;
例:create database test;
解释:该例创建了一个名为test的模式(数据库)。
2、模式的删除(SQL)or 数据库的删除(mysql语言)
语法:drop database 数据库名;
例:drop database test;
解释:该例删除了一个名为test的模式(数据库)。
三、表的定义、删除与修改
1、表
1.1表的定义
语法:
create table <表名> (<列名> <数据类型> [列级完整性约束] ,
...
<列名> <数据类型> [列级完整性约束] ,
[表级完整性约束]
);
例1:
create table Student
(Sno char(9) primary key, /*列级完整性约束条件,Sno是主码*/
Sname char(20) unique, /*Sname取唯一值*/
Ssex char(2),
Sage smallint,
Sdept char(20)
);
创建后查看属性:
例2:
create table Course
(Cno char(4) primary key, /*列级完整性约束条件,Cname不能取空值*/
Cname char(40) not null, /*Cpno的含义是先修课*/
Cpno char(4),
Ccredit smallint,
foreign key (Cpno) references Course(Cno)
/*表级完整性约束条件,Cpno是外码,被参照表是Course,被参照列是Cno*/
);
创建后查看属性:
例3:
create table SC
(Sno char(9),
Cno char(4),
Grade smallint,
primary key(Sno, Cno),
foreign key(Sno) references Student(Sno),
foreign key(Cno) references Course(Cno)
);
创建后查看属性:
三个表添加后查看:
附加:常用的列表约束
auto_increment:递增
1.2表的删除
- 语法:drop table 表名;
1.3表的修改
创建例子:
- 增加列
语法:alter table 表名 add 属性名 数据类型 【列级完整性约束】;
样例:
例子1:alter table myname add age smallint;
解释:在表myname中新添加一列age,数据类型为smallint。
例子2: alter table myname add Id char(10) primary key;
解释:在表myname中新添加一列Id,数据类型为10个长度的字符串,并设为主键。
- 删除列
语法:alter table 表名 drop 属性名;
样例:
例子1:alter table myname drop age;
解释:在表myname中删除列age。
- 添加表级完整性约束条件
语法:alter table 表名 add 表级完整性约束;
样例:
例子1:alter table myname add unique(name);
解释:在表myname中添加了约束条件:name属性取唯一值。
- 修改列的属性
语法:alter table 表名 modify 列名 新的数据类型 【列级完整性约束条件】;
样例:
例子1:alter table myname modify Id int;
解释:修改表myname的列Id的数据类型为int。
- 删除主键
语法: alter table myname drop primary key;
2、数据类型
参考菜鸟教程:MySQL 数据类型 | 菜鸟教程
3、索引
1) 创建索引语法
CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[USING index_type]
ON table_name (index_col_name,...)
2) 创建样例
例:CREATE INDEX idx_sno ON Student(Sno);
3) 查看索引
语法:SHOW INDEX FROM 表名;
4) 修改索引
在MySQL中并没有提供修改索引的直接指令,一般情况下,我们需要先删除掉原索引,再根据需要创建一个同名的索引,从而变相地实现修改索引操作。
5) 删除索引
语法:ALTER TABLE 表名 DROP INDEX 索引名;
参考博文:Mysql中索引的 创建,查看,删除,修改 - leayrainy - 博客园