文章目录
- 第一章,初识MySQL
- 一,什么是数据库
- 二,数据库的分类
- 三,相关概念
- 四,操作数据库
第一章,初识MySQL
一,什么是数据库
- 数据库(Database,简称DB)
- 概念
- 长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库”
- 作用
- 保存、管理数据
二,数据库的分类
- 关系型数据库:SQL(Structured Query Language)
- MySQL、Oracle、Sql Server、DB2、SQLlite
- 通过表和表之间,行和列之间的关系进行数据的存储
- 通过外键关联来建立表与表之间的关系
- 非关系型数据库:NoSQL(Not Only SQL)
- Redis、MongoDB
- 指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定
三,相关概念
-
DBMS(数据库管理系统)
- 数据库的管理软件,科学有效的管理、维护和获取我们的数据
- MySQL就是数据库管理系统
-
Mysql简介
- 概念:是现流行的开源、免费的关系型数据库
- 特点:免费、开源数据库; 小巧、功能齐全;使用便捷;可运行于Windows或Linux操作系统可;适用于中小型甚至大型网站应用
- Mysql的运行机制
- 下载Mysql
- MySQL 5.5.40 (Windows版)
- 下载地址:http://dev.mysql.com/downloads/
- 注意:数据目录不要在系统盘,以免卸载时删除数据包启;用安装向导,避免繁琐的 my.ini 配置文件;数据库语言编码设置
- 安装关键步骤:
- 端口设置 3306(默认)
- 编码设置 utf8
- 密码设置
四,操作数据库
-
基本命令
-
所有的语句都要以分号结尾
show databases; --查看当前所有的数据库 use 数据库名; --打开指定的数据库 show tables; --查看所有的表 describe/desc 表名; --显示表的信息 create database 数据库名; --创建一个数据库 exit --退出连接-- --单行注释 # --单行注释 /*...*/ --多行注释
-
连接数据库
- 打开MySQL命令窗口
- 在DOS命令行窗口(cmd.exe)
- 在窗口中进入 安装目录\mysql\bin
- 连接数据库语句
mysql -h 服务器主机地址 –u 用户名 -p用户密码
-
结构化查询语句分类
-
操作数据库
--创建数据库 CREATE DATABASE [IF NOT EXISTS] 数据库名;--删除数据库 DROP DATABASE [if EXISTS] 数据库名;--使用数据库 --如果表名或者字段名是特殊字符,则需要带`` use 数据库名;--查看数据库 SHOW DATABASES
-
数据库的列类型
- 数值
- 字符串
类型 说明 最大长度 char[(M)] 固定长字符串,检索快但费空间, 0 <= M <= 255 M字符 varchar[(M)] 可变字符串0 <= M <= 65535 变长度 tinytext 微型文本串 2*8–1字节 text 文本串 2*16–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 - null
- 没有值,未知
- 不要使用NULL值进行计算
-
数据库字段属性
/* 无符号的 声明了该列不能为负数 */ UnSigned/* 0填充的 不足位数的用0来填充 , 如int(3),5则为005 */ ZEROFILL/* 通常理解为自增,自动在上一条记录的基础上默认+1 通常用来设计唯一的主键,必须是整数类型 可定义起始值和步长 当前表设置步长(AUTO_INCREMENT=100) : 只影响当前表 SET @@auto_increment_increment=5 ; 影响所有使用自增的表(全局) */ Auto_InCrement/* 默认为NULL , 即没有插入该列的数值 如果设置为NOT NULL , 则该列必须有值 */ NULL 和 NOT NULL/* 默认的 用于设置默认值 例如,性别字段,默认为"男" , 否则为 “女” ; 若无指定该列的值 , 则默认值为"男"的值 */ DEFAULT
-
创建数据库表
CREATE TABLE IF NOT EXISTS `student`(`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',`name` VARCHAR(30) NOT NULL DEFAULT '匿名' COMMENT '姓名',`pwd` VARCHAR(20) NOT NULL DEFAULT '123456' COMMENT '密码',`sex` VARCHAR(2) NOT NULL DEFAULT '女' COMMENT '性别',`birthday` DATETIME DEFAULT NULL COMMENT '出生日期',`address` VARCHAR(100) DEFAULT NULL COMMENT '家庭住址',`email` VARCHAR(50) DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (`id`) )ENGINE=INNODB DEFAULT CHARSET=utf8/* 格式: CREATE TABLE IF NOT EXISTS `student`('字段名' 列类型 [属性] [索引] [注释],'字段名' 列类型 [属性] [索引] [注释],......'字段名' 列类型 [属性] [索引] [注释] )[表的类型][字符集设置][注释]常用命令: SHOW CREATE DATABASE 数据库名;-- 查看创建数据库的语句 SHOW CREATE TABLE 表名;-- 查看表的定义语句 DESC 表名;-- 显示表的具体结构 */
- 表名和字段尽量使用``括起来
- AUTO_INCREMENT 代表自增
- 所有的语句后面加逗号,最后一个不加
- 字符串使用单引号括起来
- 主键的声明一般放在最后,便于查看
- 不设置字符集编码的话,会使用MySQL默认的字符集编码Latin1,不支持中文,可以在my.ini里修改
-
数据库存储引擎
- MySQL的数据表的类型:MyISAM、InnoDB 、HEAP、BOB、CSV等
- 常见的MyISAM与InnoDB类型:
名称 MyISAM InnoDB 事务处理 不支持 支持 数据行锁定 不支持 支持 外键约束 不支持 支持 全文索引 支持 不支持 表空间大小 较小 较大,约2倍 - 使用MyISAM: 节约空间及相应速度
- 使用InnoDB: 安全性,事务处理及多用户操作数据表
-
数据库表的存储位置
- MySQL数据表以文件方式存放在磁盘中
- 包括表文件 , 数据文件 , 以及数据库的选项文件
- 位置 :
Mysql安装目录\data\
(目录名对应数据库名 , 该目录下文件名对应数据表)
- MySQL在文件引擎上区别:
INNODB
数据库文件类型就包括**.frm**、.ibd以及在上一级目录的ibdata1文件MYISAM
存储引擎,数据库文件类型就包括- .frm:表结构定义文件
- .MYD:数据文件
- .MYI:索引文件
- MySQL数据表以文件方式存放在磁盘中
-
修改数据库
- 修改
-- 修改表名 -- ALTER TABLE 旧表名 RENAME AS 新表名 ALTER TABLE teacher RENAME AS teachers;-- 增加表的字段 -- ALTER TABLE 表名 ADD 字段名 列属性 ALTER TABLE teachers ADD age INT(11);-- 修改表的字段(重命名,修改约束) -- ALTER TABLE 表名 MODIFY 字段名 [列属性]; ALTER TABLE teachers MODIFY age VARCHAR(11);-- 修改约束 -- ALTER TABLE 表名 CHANGE 旧名字 新名字 [列属性]; ALTER TABLE teachers CHANGE age age1 INT(1);-- 字段重命名-- 删除表的字段 -- ALTER TABLE 表名 DROP 字段名 ALTER TABLE teachers DROP age1;
- 删除
-- 删除表(如果存在再删除) DROP TABLE IF EXISTS teachers; /* IF EXISTS为可选 , 判断是否存在该数据表 如删除不存在的数据表会抛出错误 */