什么是数据库?
- 数据库:(Database,简称DB)
- 概念:
长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”- 作用:
保存、管理数据
- 关系型数据库(SQL):
MySQL、Oracle、SQL Server、SQLite、DB2- 非关系型数据库(NOSQL):
Redis、MongoDB
我们下载和安装的都是DBMS又叫数据库管理系统:
数据库管理系统(Database Management System):
数据管理软件,科学组织和存储数据、高效地获取和维护数据
- 概念:
是现流行的开源、免费的关系型数据库- 特点:
免费、开源数据库
小巧、功能齐全
使用便捷
可运行于Windows或Linux操作系统
可适用于中小型甚至大型网站应用
下载安装可以看一下其他博主的博客,这就不再讲安装配置了。
- 打开MySQL命令窗口
- 在DOS命令行窗口(cmd.exe)
- 在窗口中进入 安装目录\mysql\bin
- 连接数据库语句:
mysql -h 服务器主机地址 –u 用户名 -p用户密码
名称 | 解释 | 命令 |
---|---|---|
DDL(数据定义语言) | 定义和管理数据对象,如数据库,数据表等 | CREATE、DROP、ALTER |
DML(数据操作语言) | 用于操作数据库对象中所包含的数据 | INSERT、UPDATE、DELETE |
DQL(数据查询语言) | 用于查询数据库数据 | SELECT |
DCL(数据控制语言) | 用来管理数据库的语言,包括管理权限及数据更改 | GRANT、COMMIT、ROLLBACK |
我们经常使用的是DML和DQL。
创建数据库:
CREATE DATABASE [IF NOT EXISTS] 数据库名;
删除数据库:
DROP DATABASE [IF EXISTS] 数据库名;
查看数据库:
SHOW DATABASES;
使用数据库:
USE 数据库名;
创建数据表模板如下,我们会一个一个属性的说:
CREATE TABLE [ IF NOT EXISTS ] `表名` (
`字段名1` 列类型 [ 属性 ] [ 索引 ] [注释] ,
`字段名2` 列类型 [ 属性 ] [ 索引 ] [注释] ,
… …
`字段名n` 列类型 [ 属性 ] [ 索引 ] [注释]
) [ 表类型 ] [ 表字符集 ] [注释] ;
注意:表名和字段名是用反引号,用于区别MySQL保留字与普通字符而引入的。
- 列类型:规定数据库中该列存放的数据类型
- 可分为:
- 数值类型
- 字符串类型
- 日期和时间型数值类型
- NULL值
类型 | 说明 | 取值范围 | 存储需求 |
---|---|---|---|
tinyint | 非常小的数据 | 有符值: -27 ~ 27-1 无符号值:0 ~ 28-1 | 1字节 |
smallint | 较小的数据 | 有符值: -215 ~ 215-1 无符号值: 0 ~ 216-1 | 2字节 |
mediumint | 中等大小的数据 | 有符值: -223 ~ 223-1 无符号值: 0 ~ 224-1 | 3字节 |
int | 标准整数 | 有符值: -231 ~ 231-1 无符号值:0 ~ 232-1 | 4字节 |
bigint | 较大的整数 | 有符值: -263 ~263-1无符号值:0 ~264-1 | 8字节 |
float | 单精度浮点数 | ±1.1754351e -38 | 4字节 |
double | 双精度浮点数 | ±2.2250738585072014e -308 | 8字节 |
decimal | 字符串形式的浮点数 | decimal(m, d) | m个字节 |
我们常用的是int,bigint,decimal;
类型 | 说明 | 最大长度 |
---|---|---|
char[(M)] | 固定长字符串,检索快但费空间, 0 <= M <= 255 | M字符 |
varchar[(M)] | 可变字符串0 <= M <= 65535 | 变长度 |
tinytext | 微型文本串 | 28–1字节 |
text | 文本串 | 216–1字节 |
类型 | 说明 | 取值范围 |
---|---|---|
DATE | YYYY-MM-DD,日期格式 | 1000-01-01~ 9999-12-31 |
TIME | Hh:mm:ss ,时间格式 | -838:59:59~838:59:59 |
DATETIME | YY-MM-DD hh:mm:ss | 1000-01-01 00:00:00 至9999-12-31 23:59:59 |
TIMESTAMP | YYYYMMDDhhmmss格式表示的时间戳 | 197010101000000 ~2037年的某个时刻 |
YEAR | YYYY格式的年份值 | 1901~2155 |
我们常用的是datatime,和timestamp;
我们可以理解为“没有值”或“未知值”,不要用NULL进行算术运算,结果仍为NULL。
- UNSIGNED:
无符号的
声明该数据列不允许负数- ZEROFILL
0填充的
不足位数的用0来填充,如 int(3),5则为 005- AUTO_INCREMENT
自动增长的,每添加一条数据,自动在上一个记录数上加1
通常用于设置主键,且为整数类型
可定义起始值和步长- NULL 和 NOT NULL
默认为NULL,即没有插入该列的数值
如果设置为NOT NULL,则该列必须有值- DEFAULT
默认的
用于设置默认值
例如,性别字段,默认为“男”,否则为“女”;若无指定该列的值,则默认为“男”的值
示例:
CREATE TABLE [ IF NOT EXISTS ] `test` (
`id` int (11) UNSIGNED COMMENT ‘编码号’
)COMMENT=‘测试表’;
MySQL的数据表的类型:MyISAM、InnoDB 、HEAP、BOB、CSV等,我们常用的是MyISAM,和InnoDB。
示例:
CREATE TABLE 表名(
#省略一些代码
) ENGINE = MyISAM(/InnoDB)
常见的MyISAM与InnoDB类型区别:
名称 | MyISAM | InnoDB |
---|---|---|
事务处理 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约2倍 |
使用MyISAM: 节约空间及相应速度
使用InnoDB: 安全性,事务处理及多用户操作数据表
CREATE TABLE 表名(
#省略一些代码
)CHARSET = utf8;
索引我们回来拉出来单独讲解。
语法:DROP TABLE [ IF EXISTS ] 表名
IF EXISTS 为可选,判断是否存在该数据表
如删除不存在的数据表会抛出错误
修改表名
ALTER TABLE 旧表名 RENAME AS 新表名
添加字段
ALTER TABLE 表名 ADD 字段名 列类型 [ 属性 ]
修改字段
ALTER TABLE 表名 MODIFY 字段名 列类型 [ 属性 ]
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列类型 [ 属性 ]
删除字段
ALTER TABLE 表名 DROP 字段名
语法:show tables;