第一章 初识MySQL
数据库
第一节 数据库操作
1. 创建数据库的语法
CREATE DATABASE [IF NOT EXISTS] 数据库名称 DEFAULT CHARACTER SET 字符集 COLLATE 排序规则;
实例:创建数据库lesson,并指定字符集为GBK
,排序规则为GBK_CHINESE_CI
CREATE DATABASE IF NOT EXISTS lesson DEFAULT CHARACTER SET GBK COLLATE GBK_CHINESE_CI;
2.修改数据库的语法
ALTER DATABASE 数据库名称 CHARACTER SET 字符集 COLLATE 排序规则;
实例:修改数据库lesson,并指定字符集为UTF8
,排序规则为UTF8_GENERAL_CI
ALTER DATABASE lesson CHARACTER SET UTF8 COLLATE UTF8 GENERAL_CI;
3.删除数据库的语法
DROP DATABASE [IF EXISTS] 数据库名称;
实例:删除数据库lesson
DROP DATABASE IF EXISTS lesson;
4.查看数据库语法
SHOW DATABASE;
5.使用数据库语法
USE 数据库名称;
实例:使用数据库lesson
USE lesson;
第二节 列类型
在MySQL
中,常用列类型主要为数值类型、日期时间类型、字符串类型
1. 数值类型
tinyint |
smallint |
mediumint |
int |
bigint |
float |
double |
decimal |
---|---|---|---|---|---|---|---|
1字节 | 2字节 | 3字节 | 4字节 | 8字节 | 4字节(浮点) | 8字节(浮点) | m字节(浮点) |
注:
decimal(m, d)
为字符串存储的浮点数,其中m表示总位数,d表示保留小数位数
2. 日期时间类型
DATE (日期) |
TIME (时间) |
DATETIME |
TIMESTAMP(时间戳) |
YEAR |
---|---|---|---|---|
YYYY-MM-dd |
HH:mm:ss |
YY-MM-dd HH:mm:ss |
YY-MM-dd HH:mm:ss |
YYYY |
3. 字符串类型
类型 | 说明 | 最大长度 |
---|---|---|
char [(M)] |
固定长字符串,索引快但费空间,0<=M<=255 | M字符 |
varchar [(M)] |
可变字符串,0<=M<=65535 | 变长度 |
text |
文本串 | 2^16^-1字节 |
注:
char(50)
:不论插入值占用多少位空间,在数据库中都会占50个长度。比如"男"
varchar(50)
:最大占用50个长度。比如"男"占用1个
text
:用于存储长文本
4. 列类型修饰属性
类型 | 说明 | 示例 |
---|---|---|
UNSIGNED |
无符号,只能修饰数值类型,表明该列数据不能出现负数 | UNSIGNED INT(4),表示只能为4位大于等于0整数 |
ZEROFILL |
不足的位数使用0 | INT(4) ZEROFILL ,如果给定的值位10,此时只有2位,而该列需要4位,不足的2位由0来填充,最终值为0010 |
NOT NULL |
表示该列类型的值不能为空 | VARCHAR (20) NOT NULL,表示该列不能为空值 |
DEFAULT |
表示设置默认值 | INT(4) DEFAULT 0,表示该列不赋值时默认为0 |
AUTO_INCREMENT |
表示自增长,只能应用于数值列类型,该列类型必须为键,且不能为空 | INT(11) AUTO_INCREMENT NOT NULL PRIMARY KEY。第一次为该列中插入值时为1,第二次为2,以此类推 |
第三节 数据表操作
1. 数据表类型
MySQL
中的数据表类型由许多,如MyISAM
、InnoDB
、HEAP
、BOB
、CSV
等。其中最常用的就是MyISAM
和InnoDB
MyISAM
和InnoDB
的区别
名称 | MyISAM |
InnoDB |
---|---|---|
事务处理 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约2倍 |
事务:涉及的所有操作是一个整体,要么都执行,要么都不执行。
数据行锁定:一行数据,当一个用户在修改该数据时,可以将该条数据锁定。
注:如何选择数据表的类型?
当涉及的业务操作以查询居多,修改和删除较少时,可以使用 MyISAM 。当涉及的业务操作经常会有修改和删除操作时使用 InnoDB
2. 创建数据表
CREATE TABLE [IF NOT EXISTS] 数据表名称(
字段名1 列类型(长度) [修饰属性] [键/索引] [注释],
字段名2 列类型(长度) [修饰属性] [键/索引] [注释],
字段名3 列类型(长度) [修饰属性] [键/索引] [注释],
......
字段名n 列类型(长度) [修饰属性] [键/索引] [注释]
) [ENGINE = 数据表类型][CHARSET = 字符集编码] [COMMENT = 注释];
示例:创建学生表,表中有字段学号、姓名、性别、年龄和成绩
CREATE TABLE IF NOT EXISTS student(
`number` VARCHAR(30) NOT NULL PRIMARY KEY COMMENT '学号,主键',
name VARCHAR(30) NOT NULL COMMENT '姓名',
sex TINYINT(1) UNSIGNED DEFAULT 0 COMMENT '性别:0-男 1-女 2-其他',
age TINYINT(3) UNSIGNED DEFAULT 0 COMMENT '年龄',
score DOUBLE(5, 2) UNSIGNED DEFAULT NULL COMMENT '成绩'
)ENGINE=InnoDB CHARSET=UTF8 COMMENT='学生表';
3. 修改数据表
-
修改表名
ALTER TABLE 表名 RENAME AS 新表名;
示例:将
student
表名修改为stu
ALTER TABLE student RENAME AS stu;
-
增加字段
ALTER TABLE 表名 ADD 字段名 列类型(长度) [修饰属性] [键/索引] [注释];
示例:在
stu
中添加字段联系电话(phone),类型为字符串,长度为11,非空ALTER TABLE stu ADD phone VARCHAR(11) NOT NULL COMMENT '联系电话';
-
查看表结构
DESC 表名; --查看表结构
-
修改字段
-- MODIFY 只能修改字段的修饰属性 ALTER TABLE 表名 MODIFY 字段名 列类型(长度) [修饰属性] [键/索引] [注释]; -- CHANGE 可以修改字段的名字以及修饰属性 ALTER TABLE 表名 CHANGE 字段名 新字段名 列类型(长度) [修饰属性] [键/索引] [注释];
示例:将
stu
表中的sex字般的类型设置为VARCHAR
,长度为2,默认值为男,注释为"性别,男,女,其他"ALTER TABLE stu MODIFY sex VARCHAR(2) DEFAULT '男' COMMENT '性别:男,女,其他';
示例:将
stu
表中的phone
字段修改为moblie
,属性保持不变ALTER TABLE stu CHANGE phone mobile VARCHAR(11) NOT NULL COMMENT '联系电话';
-
删除字段
ALTER TABLE 表名 DROP 字段名;
示例:将
stu
表中的mobile
字段删除ALTER TABLE stu DROP mobile;
-
删除数据表
DROP TABLE [IF EXISTS] 表名;
示例:删除数据表
stu
DROP TABLE IF EXISTS stu;