MySQL数据定义语句
本文只介绍基础、常用的 MySQL 语法语句,更详细的语法语句请移步这里。
1 CREATE DATABASE 语法
语法
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
CREATE DATABASE用于创建数据库,并进行命名。
1.1 建立 STUDENT_COURSE
数据库
CREATE DATABASE IF NOT EXISTS STUDENT_COURSE;
1.2 切换到 STUDENT_COURSE
数据库
USE STUDENT_COURSE;
2 DROP DATABASE 语法
语法
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name
2.1 删除 STUDENT_COURSE
数据库
DROP DATABASE IF EXISTS STUDENT_COURSE;
后续还需要使用这个数据库进行学习,利用上面的 CREATE DABATE 语句
重新创建回来,并切回到该数据库下。
3 CREATE TABLE 语法
语法
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)]
[table_options] [select_statement]
或:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(] LIKE old_tbl_name [)];
3.1 创建 Student
表
CREATE TABLE IF NOT EXISTS Student(
Sno INT NOT NULL,
Sname CHAR(10) NOT NULL,
Ssex CHAR(2) NOT NULL,
Sage INT,
Sdept VARCHAR(20),
PRIMARY KEY (Sno)
);
3.2 创建 Course
表
CREATE TABLE IF NOT EXISTS Course(
Cno INT NOT NULL,
Cname VARCHAR(20) NOT NULL,
Cpno INT NULL,
Ccredit INT NOT NULL,
PRIMARY KEY (Cno)
);
3.3 创建 SC
表
CREATE TABLE IF NOT EXISTS SC(
Sno INT NOT NULL,
Cno INT NOT NULL,
Grade INT NULL,
PRIMARY KEY (Sno, Cno),
FOREIGN KEY (Sno) REFERENCES Student(Sno),
FOREIGN KEY (Cno) REFERENCES Course(Cno)
);
4 ALTER TABLE 语法
语法
ALTER [IGNORE] TABLE tbl_name
alter_specification [, alter_specification] ...
4.1 增加一列
语法
ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
在 Student
表增加 Sphone
字段
ALTER TABLE Student
ADD Sphone VARCHAR(12) NULL COMMENT 'add phone column' AFTER Sage;
可以利用 DESC table_name
来查看表结构。
可以看到已经在字段Sage
后面增加了字段Sphone
。
4.2 改变表中原有列
语法
CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]
改变 Student
表中 Sphone
字段改为 Semail
字段
ALTER TABLE Student
CHANGE Sphone Semail VARCHAR(20) NULL;
查看一下 Student
表结构
Sphone
已经改为 Semail
,类型也改为了 VARCHAR(20)
。
4.3 修改表中原有列的定义
语法
MODIFY [COLUMN] column_definition [FIRST | AFTER col_name]
修改 Student
表中 Semail
字段的类型
ALTER TABLE Student
MODIFY Semail VARCHAR(25) NOT NULL;
查看一下表结构
注:聪明的读者肯定注意到了
CHANGE
和MODIFY
都可以改变列定义,它们有什么区别呢?一言以蔽之,修改某一列,列名要改变,用change
, 列名不改变用modify
。
4.4 删除一列
语法
DROP [COLUMN] col_name
删除 Student
中的 Semail
字段
ALTER TABLE Student
DROP Semail;
查看一下表结构
表中已经没有 Semail
字段了。
5 RENAME TABLE 语法
语法
RENAME TABLE tbl_name TO new_tbl_name
[, tbl_name2 TO new_tbl_name2] ...
5.1 重命名 Student
表
RENAME TABLE Student TO Employee;
查看一下数据库中的表,可以使用 SHOW TABLES;
Student
表已经重命名为 Employee
表。
最后我们还是改回来哈。
6 DROP TABLE 语法
语法
DROP [TEMPORARY] TABLE [IF EXISTS]
tbl_name [, tbl_name] ...
[RESTRICT | CASCADE]
6.1 删除 SC
表
DROP TABLE IF EXISTS SC;
7 CREATE INDEX 语法
语法
REATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
[USING index_type]
ON tbl_name (index_col_name,...)
7.1 为 Student
表中的 Sno
字段建立索引
CREATE INDEX sno_index ON Student (Sno);
查看一下索引,可以使用命令 SHOW INDEX FROM Student
发现 MySQL 会为主键自动创建索引。
8 DROP INDEX 语法
语法
DROP INDEX index_name ON tbl_name
8.1 删除上面创建的索引
DROP INDEX sno_index ON Student;
再查看一下 Student
的索引
发现已经删除 sno_index
索引了。
MySQL数据定义语句到这里就告一段了,祝大家学习愉快。