SQL语言分为三个部分:数据定义语言(Data Definition Language,简称DDL)、数据操作语言(Data Manipulation Language,简称DML)和数据控制语言(Data Control Language,简称为DCL)。
今天主要来介绍DDL语句,DDL语句:CREATE ALTER DROP,主要是操作表的。
1、建立数据库操作
语法:CREATE DATABASE 数据库名;
叙述:创建一个具有指定名称的数据库。如果要创建的数据库已经存在,或者没有创建它的适当权限,则此语句失败。
例:建立一个besttest库。
mysql> CREATE DATABASE besttest CHARSET=utf8;
2、显示数据库结构
SHOW CREATE DATABASE besttest;
可以查看数据库的相关信息(例如MySQL版本ID号、默认字符集、创建数据库sql语句等信息)。
3、删除一个数据库
语法:DROP DATABASE 数据库名;
叙述:删除数据库是指在数据库系统中删除已经存在的数据库。删除数据库之后,原来分配的空间将被收回。值得注意的是,删除数据库会删除该数据库中所有的表和所有数据、索引。因此,应该特别小心。
例:删除besttest库。
mysql> DROP DATABASE besttest;
4、创建表
语法:CREATE table 表名(
列名1 列类型 [列的完整性约束],
列名2 列类型 [列的完整性约束],
......);
例:建立一个表school,其由两列组成,第一列属性为非空,并做为主键,并自增
create table school(
school_id int(10) not null auto_increment primary key,
school_name varchar(20) default null,
phone int(10) unique
);
5、主键
定义:唯一标识一条记录,不能有重复的,不允许为空,主键只能有一个。
作用:用来保证数据完整性。
6、常见的唯一性约束
PRIMARY KEY 主码约束(主键)
UNIQUE 唯一性约束
NOT NULL 非空值约束
AUTO_INCREMENT 用于整数列默认自增1
UNSIGNED 无符号整数
DEFAULT default_value 默认值约束
DEFAULT cur_timestamp 创建新记录时默认保存当前时间(仅适用timestamp数据列)
ON UPDATE cur_timestamp 修改记录时默认保存当前时间(仅适用timestamp数据列)
CHARACTER SET name 指定字符集(仅适用字符串)
7、查看表结构
desc 表名;
show create table 表名;
8、修改表
修改表是指修改数据库中已存在的表的定义。修改表比重新定义表简单,不需要重新加载数据,也不会影响正在进行
的服务。MySQL中通过ALTER TABLE语句来修改表。修改表包括修改表名、修改字段数据类型、修改字段名、增加字段、删
除字段、修改字段的排列位置、更改默认存储引擎和删除表的外键约束等。
(1) 修改表名
语法:ALTER TABLE 旧表名 RENAME [TO] 新表名 ;
例:ALTER TABLE school rename school2;
(2) 修改字段的数据类型
语法1:ALTER TABLE 表名 MODIFY 属性名 数据类型 ;
例:Alter table school modify school _name char(20);
语法2:ALTER TABLE 表名 CHANGE 旧属性名 新属性名 新数据类型 ;
例:Alter table school change school_name name char(20);
Modify和change的区别就是,modify在修改表结构的时候不需指定新的字段名,直接在后面跟上需要修改的属性即
可,change在修改表结构的时候需要指定旧字段名和新字段名和新属性。
(3) 增加字段
语法:ALTER TABLE 表名 ADD 属性名1 数据类型 [完整性约束条件] [FIRST | AFTER 属性名2] ;
FIRST | AFTER :表示在指定位置之前或者之后增加字段。默认在最后增加字段。
例:Alter table school add addr varchar(50) not null first;
(4) 修改字段的排列位置
语法:ALTER TABLE 表名 MODIFY 属性名1 数据类型 FIRST | AFTER 属性名2;
其中,“属性名1”参数指需要修改位置的字段的名称;“数据类型”参数指“属性名1”的数据类型;“FIRST”参数指定位
置为表的第一个位置;“AFTER 属性名2”参数指定“属性名1”插入在“属性名2”之后。
(5) 删除字段
语法:ALTER TABLE 表名 DROP 字段名;
例:ALTER TABLE school DROP addr;
(6) 清空表
语法:Truncate 表名;
例:Truncate students;
清空表是指把表中现有数据全部清空,使用TRUNCATE关键字,truncate之后,自增长列的id也从建表时设置的起始
id开始,和delete的区别是delete之后数据会清空,但是自增长列的id不会从起始id开始,truncat之后不能回滚,delete之
后,可以回滚。
(7) 删除表
语法:DROP TABLE 表名;
例:drop table school;
删除表是指删除数据库中已存在的表。删除表时,会删除表中的所有数据。因此,在删除表时要特别注意。MySQL
中通过DROP TABLE语句来删除表。