数据库
什么是数据库
数据库 ( DataBase , 简称DB )
概念 : 长期存放在计算机内,有组织,可共享的大量数据的集合,是一个数据 “仓库”
作用 : 保存,并能安全管理数据(如:增删改查等),减少冗余…
数据库的分类
1、关系型数据库 ( SQL )
MySQL , Oracle , SQL Server , SQLite , DB2 , …
通过表和表之间,行和列之间的关系进行数据的存储,,学员信息表,考勤表…
2、非关系型数据库 ( NOSQL ) Not Only
Redis , MongoDB , …
非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定
DBMS 数据库管理系统:
数据库管理软件 , 科学组织和存储数据 , 高效地获取和维护数据
MySQL,数据库管理系统
为什么要说这个呢?
因为我们要学习的MySQL应该算是一个数据库管理系统.
Mysql的简介
概念 : 是现在流行的开源的,免费的 关系型数据库
历史 : 由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。
特点 :
1、免费 , 开源数据库
2、小巧 , 功能齐全
3、使用便捷
4、可运行于Windows或Linux操作系统
5、可适用于中小型甚至大型网站应用
官网 : https://www.mysql.com/
压缩包地址:https://dev.mysql.com/get/Downloads/MySQL-5.7.19-winx64.zip
Mysql的安装
下载后得到zip压缩包.
解压到自己想要安装到的目录,本人解压到的是D:\Environment\mysql-5.7.19
添加环境变量:我的电脑->属性->高级->环境变量
选择PATH,在其后面添加: 你的mysql 安装文件下面的bin文件夹
编辑 my.ini 文件 ,注意替换路径位置
[mysqld]
basedir=D:\Program Files\mysql-5.7\
datadir=D:\Program Files\mysql-5.7\data\
port=3306
skip-grant-tables
启动管理员模式下的CMD,并将路径切换至mysql下的bin目录,然后输入mysqld –install (安装mysql)
再输入 mysqld --initialize-insecure --user=mysql 初始化数据文件
然后再次启动mysql 然后用命令 mysql –u root –p 进入mysql管理界面(密码可为空)
进入界面后更改root密码
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
刷新权限:
flush privileges;
修改 my.ini文件删除最后一句skip-grant-tables
重启mysql即可正常使用
net stop mysql
net start mysql
连接上测试出现以下结果就安装好了
这里给大家推荐一个工具 : SQLyog .
即便有了可视化工具,可是基本的DOS命名大家还是要记住!
SQLyog
可手动操作,管理MySQL数据库的软件工具
特点 : 简洁 , 易用 , 图形化
使用SQLyog管理工具自己完成以下操作 :
连接本地MySQL数据库
新建MySchool数据库
字段
GradeID : int(11) , Primary Key (pk)
GradeName : varchar(50)
数据库名称MySchool
新建数据库表(grade)
在历史记录中可以看到相对应的数据库操作的语句
连接数据库
使用命令行连接:
mysql -u root -p123456 --连接数据库
alter user root@localhost identified by '123456'; --修改用户密码
flush privileges; --刷新权限
------------------------------------
--所有的语句都用;结尾
show databases;--查看所有的数据库
use school; --use 数据库名 切换数据库
show tables;--查看所有的表
desc student;--查看名为student表信息
create database westos; --创建一个名为westos的数据库
exit;--退出链接
-- 单行注释
/*
多行注释
*/
操作数据库
数据库的操作
创建数据库
CREATE DATABASE IF NOT EXISTS westos
删除数据库
DROP DATABASE IF EXISTS westos
使用数据库
USE `school` --加单引号会变成字段 特殊的字符一眼加这个符号
查看数据库
SHOW DATABASES --查看所有的数据库
数据库的数据类型
整数:
tinyint :十分小的数据 1个字节
smallint :较小的数据 2个字节
mediumint: 中等大小的数据 3个字节
int: 标准的整数 4个字节 常用的
bigint: 较大的数据 8个字节
float :浮点数 4个字节
double :浮点数 8个字节
decimal :字符串形式的浮点数 金融计算的时候会用
字符串:
char :字符串固定大小 0~255
varchar: 可变字符串大小 0~65535 对应String
tinytest :微型文本 2^8-1
test :文本串 2^16 -1 保存大文本
时间日期:
data YYYY-MM-DD:日期格式
time HH:mm:ss
datetime YYYY-MM-DD HH:mm:ss: 最常用的时间格式
timestamp :时间戳 1970.1.1到现在的毫秒数 较为常用
year 年份标识
数据库的字段属性(重点)
Unsigned:无符号的整数,声明了这里面的列不能为负数。
zirofill:0填充的
不足的位数,使用0来填充, int(3), 5— 005
自增:通常理解为自增,自动在上一条记录的基础上+1(默认)
通常用来设计唯一的逐渐~ index,必须是证书类型
可以自定义设计主键自增的起始值和步长
null和not null:假设设置为not null,如果不给它赋值,就会报错!
null 如果不填写值,默认就是null!
默认:设置默认的值sex,默认值为男,如果不指定该列的值,则会有默认的值!
创建数据库
/* 每个表,都需要存在以下五个字段 未来做项目用的,表示一个记录存在的意义 拓展
id 主键
'version' 乐观锁
is_delete 伪删除 认为被删除 实际没有
gmt_create 创建时间
gmt_update 修改时间
*/
--AUTO_INCREMENT 自增
--PRIMARY KEY 主键
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT'匿名' COMMENT'姓名',
`paw` 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] `表名`(
`字段名` 列表名 [属性] [索引] [注释],
`字段名` 列表名 [属性] [索引] [注释],
......
`字段名` 列表名 [属性] [索引] [注释]
)[表类型][字符设置][注释]
show create database school -- 查看创造数据库的语句
show create table student -- 查看student数据表定义的语句
desc student -- 显示表的结构
数据表的类型
-- 关于数据库引擎
/*
INNODB 默认使用
MYISAM 早些年是用的
*/
常规使用操作:
MYISAM 节约空间,速度较快
INNODB 安全性高,事务的处理,多表多用户操作
修改:
-- 修改表名 ALTER TABLE 旧表名 RENAME AS 新表名
ALTER TABLE teacher RENAME AS teacher1
-- 增加表的字段 ALTER TABLE 表名 ADD 字段名 列属性
ALTER TABLE teacher1 ADD age INT(11)
-- 修改表的字段(重命名,修改约束)
-- ALTER TABLE 表名 MODIFY 字段名 列属性[]
ALTER TABLE teacher1 MODIFY age VARCHAR(11) -- 修改约束
-- ALTER TABLE 表名 CHANGE 旧名字 新名字 列属性[]
ALTER TABLE teacher1 CHANGE age age1 INT(11) -- 重命名,
-- 删除表的字段 表名 ALTER TABLE 表名 DROP 字段名
ALTER TABLE teacher1 DROP age1
删除:
-- 删除表 DROP TABLE 表名(如果表存在再删除)
DROP TABLE [if exists] teacher1
MySql数据管理
外键(了解)
方式一:在创建表的时候,增加约束(麻烦复杂)
CREATE TABLE `grade`(
`gradeid` INT(10) NOT NULL AUTO_INCREMENT COMMENT '年级id',
`gradename` VARCHAR(50) NOT NULL COMMENT '年级名称',
PRIMARY KEY(`gradeid`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
CREATE TABLE IF NOT EXISTS `student`(
`id` INT(4) NOT NULL AUTO_INCREMENT COMMENT '学号',
`name` VARCHAR(30) NOT NULL DEFAULT'匿名' COMMENT'姓名',
`paw` VARCHAR(20) NOT NULL DEFAULT'123456' COMMENT'密码',
`sex` VARCHAR(2) NOT NULL DEFAULT'女' COMMENT'性别',
`birthday` DATETIME DEFAULT NULL COMMENT'出生日期',
`gradeid` INT