结构化查询语句分类
对于不同的命令, 可分为四类分别为DDL、DML、DQL、DCL,下图分别作了详细的介绍
数据定义语言DDL
DDL的命令有个3个:创建create、删除drop、修改alter
create语句
创建数据库:
CREATE TABLE [ IF NOT EXISTS ] `表名`(
`字段名1` 列类型 [ 属性 ] [ 索引 ] [注释] ,
`字段名2` 列类型 [ 属性 ] [ 索引 ] [注释] ,
… …
`字段名n` 列类型 [ 属性 ] [ 索引 ] [注释]
) [ 表类型] [表字符集] [注释] ;
其中反引号用于区别mysql关键字,用[ ]圈起的部分代表可选,接下来一一为大家介绍个字段含义,
用于规定数据库中该列存放的数据类型,可大致分为四种:
①数值类型
②字符串类型
③日期和时间型数值类型
④NULL值
NULL值
null值可以理解为“没有值”或“未知值”,用NULL进行算术运算,结果仍为NULL
①UNSIGNED
无符号的,声明该数据列不允许负数
②ZEROFILL
0填充,不足位数的用0来填充,如 :int(3),5则为 005
③AUTO_INCREMENT
自动增长的,每添加一条数据,自动在上一个记录数上加1
通常用于设置主键,且为整数类型
可定义起始值和步长
④NULL 和 NOT NULL
默认为NULL,即没有插入该列的数值
如果设置为NOT NULL,则该列必须有值
⑤DEFAULT
用于设置默认值
COMMENT
语法:comment ’ 注释’
示例:
用sql语句创建下图内容
CREATE TABLE `student` (
`StudentNo` int(11) NOT NULL COMMENT '学号',
`LoginPwd` varchar(20),
`StudentName` varchar(20) DEFAULT NULL COMMENT '学生姓名',
`Sex` varchar(2) DEFAULT NULL,
`GradeID` int(11) DEFAULT NULL COMMENT '年纪编号',
`Phone` varchar(50) NOT NULL COMMENT '联系电话,允许为空,即可选输入',
`Address` varchar(50) NOT NULL COMMENT '地址,允许为空,即可选输入',
`Email` varchar(50) NOT NULL COMMENT '邮箱账号,允许为空,即可选输入',
`BornDate` datetime comment '出生时间',
`IdentityCard` varchar(18) DEFAULT NULL COMMENT '身份证号',
);
表类型和表字符集
表类型:ENGINE关键字
表字符集:CHARSET关键字
MySQL的数据表的类型:MyISAM、InnoDB 、HEAP、BOB、CSV等
常用的有:MyISAM、InnoDB
CREATE TABLE `subject` (
`SubjectNo` INT(11) NOT NULL COMMENT '课程编号',
`SubjectName` VARCHAR(50) DEFAULT NULL COMMENT '课程名称',
`ClassHour` INT(4) DEFAULT NULL COMMENT '学时',
`GradeID` INT(4) DEFAULT NULL COMMENT '年级编号',
) ENGINE=INNODB CHARSET=utf8
alter语句
①修改表名
ALTER TABLE 就表名 RENAME AS 新表名
②添加字段
ALTER TABLE 表名 ADD 字段名 列类型[属性]
③修改字段
// 此种修改方式无法修改列名
ALTER TABLE 表名 MODIFY 字段名 列类型[属性]
// 若要修改列名用change的方式
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列类型[属性]
④删除字段
ALTER TABLE 表名 DROP 字段名
drop语句
语法:
DROP TABLE [IF EXISTS] 表名
IF EXISTS 为可选,判断是否存在该数据表
如删除不存在的数据表会抛出错误