数据库篇1
1.1、什么是数据库
数据库 (DB DateBase)
概念:数据仓库,软件,安装在操作系统(Window Linux max…)之上
作用:存储数据。管理数据
2.1、数据库分类
关系型数据库:
- MySQL, Oracle,Sql Server DB2 Sql, SQlite
- 通过表和表之间,行和列之间进行数据的存储
非关系型数据库 (NoSQL)Not Only
- Redis,MongDB
- 对象存储,通过对象自身的属性来决定
3、DBMS 数据库管理系统
- 数据库管理软件。科学有效的管理我们的数据,维护和获得数据
- MySQL,数据库管理系统
4、MySQL简介
前身:由瑞典My SQL AB 公司开发
现在:属于Oracle旗下产品
MySQL 是最流行的关系型数据库管理系统关系型数据库管理系统之一
开源数据库软件 体积小、速度快、总体拥有成本低。
中小型网站或者大型网站,集群
企业用到最多的是5.7版本数据库(稳定) 8.0也热门
1、安装建议:尽量不要使用exe安装,因为卸载的时候比较麻烦,会往注册表走。
2、尽可能使用压缩包安装
5、安装MySql教程
1、压缩版的安装教程如下:
2、解压安装包到相对的路径,
3、去我的电脑高级属性环境变量的path 在里面增加一个刚才安装包的bin目录 全部路径
4、新建mysql配置文件 ini后缀
//目录一定要换成自己的
[mysqld]
basedir=E:\Environment\mysql-5.7.19
datadir=E:\Environment\mysql-5.7.19\data
port=3306
skip-grant-tables
5、以管理员模式启动CMD,运行所有的命令。再打开MySQL文件的bin目录
6、然后输入: cd /d E:\Environment\mysql-5.7.19\bin (访问bin目录)
7、然后再输入:
mysqld -install -- 安装数据库或者安装Mysql的服务
8、然后再输入:
mysqld --initialize-insecure --user=mysql -- 初始化数据文件)会在mysql-5.7.19目录下自动生成一个data文件夹
9、然后启动Mysql,进去修改密码:
net start mysql -- 启动数据库
10、启动成功之后通过命令行进入Mysql:
mysql -u root -p -- 进入数据库
进入mysql管理界面 (密码可为空) 千万千万要记住-p后面不需要加空格。千万千万要记住-p后面不需要加空格。千万千万要记住-p后面不需要加空格!!!然后就显示输入密码;不需要输入;直接回车。
进入mysql>界面之后更改root密码:
mysql>:update mysql.user set authentication_string=password('123456') where user='root' and Host='localhost'; -- 修改sql密码
11、最后输入
flush privileges; -- 刷新权限
12、修改my.ini文件,删除最后一句,或者注释掉 #skip-grant-tables 在前面加个#
13、重启mysql即可正常使用
net stop mysql (停止mysql)
net start mysql (启动mysql)
14、进入mysql的两种方式:mysql -u root -p (回车加密码 现在密码是123456)
mysql -u root -p123456 (第二种在-p后面加密码)
15、最后附加一个命令:sc delete mysql; – 清空数据库信息
注:下面的是在sqlyog工具下进行操作的
安装sqlyog之后,激活码百度自己找。然后点击新建
密码:123456
数据库默认端口3306
6、连接接数据库
1.命令行连接:以管理员身份打开CMD
```sql
mysql -user -p123456 --连接数据库
-- -------------------------------------------------------
show databases; -- 查看所有的数据库
use school; -- 切换数据库名 use切换!!
show tables; -- 查看数据库中所有的表
describe student; -- 查看数据库表中的信息
show databases; -- 创建一个数据库
– 所有的语句都是分号(;)结尾
```
2、数据库xxx语言 (将要学习的东西)
DDL 定义
DML 操作
DQL 查询
DCL 控制
7、操作数据库
操作数据库 > 操作数据库中的表 > 操作数据库中表的数据 >
Mysql关键字不区分大小写
7.1 操作数据库
1、创建数据库
CREATE DATABASE westos; -- 创建数据库
CREATE DATABASE IF NOT EXISTS westos; -- 创建数据库 中间的IF NOT EXISTS 可选 用在数据库中已经创建了westos数据库;还想用这个名的时候用、
2、删除数据库
DROP DATABASE hello; -- 删除hello这个数据库;没有这个数据库就会报错。
DROP DATABASE IF EXISTS hello; -- 也是删除hello这个数据库.语句不一样,意思是 如果有这个hello数据库就会删除。
3、使用数据库
-- tab 键的上面那个` 叫着重号。如果表明或者字段是一个特殊字符,就需要带``
USE `school`
SELECT USER FROM student; -- 这句sql语句的意思是 我想从student这个表中差user的信息,但是可以看到 user是高量的,这时候就应该用着重号 ``
SELECT `user` FROM student; -- 用这个
4、查看数据库
SHOW DATABASES; -- 查看所有的数据库
学习思路:
1、对照sqlyog可视化历史记录查看sql
2、固定的语法或者关键字必须要强行记住!
8、数据库表的列类型
数值
- tinyint 十分小的数据 一个字节
- smallint 较小的数据 2个字节
- mediumint 中等大小的数据 3个字节
- **int 标准整数 4个字节** 常用的
- big 较大的数据 8字节
- float 浮点数 4字节
- double 浮点数 8字节
- decamal 字符串形式浮点数 金融计算的时候,一般使用decamal
字符串
- char 字符串固定大小 0~255
- varchar 可变字符串 0-65535 常用的变量 一把都是用varchar去保存
- tingtext 微型文本 2^8-1
- text 文本串 2^16-1
时间和日期
- java.util.Date
- date YYY-MM-DD 日期格式
- time HH:mm:ss 时间格式
- datatime YYY-MM-DD HH:mm:ss 最常用的时间格式
- timestamp 时间戳,1970.1.1到现在的毫秒数! 也较为常用
- year 年份表示
null
Unsigend:
- 无符号的整数
- 声明了该列不能声明为负数
zerofill:
- 0填充 比如写了一个长度为10的int类型 但是只写了一个1,它会显示0000000001;意思就是不足的位数使用0来填充
自增:
- 通常理解位自增,自动在上一条的基础上+1;(默认)
- 通常用来设置唯一的主键~index;必须是整数类型
- 可以自定义设置主键自增的起始值和步长
非空 Null not null
- 假设设置为 not null,如果不给它赋值。就会报错!
- Null,如果不填写值,默认就是null!
默认 :
- 设置默认的值!
- sex,默认值为 男,如果不指定该列的值;则会有默认的值
-- //拓展:每一个表,都必须存在一下五个字段;未来做项目用的,表示一个记录存在的意义。
-- id 主键
-- version 乐观锁
-- is_delete 伪删除
-- gmt_create 创建时间
-- gmt_update 修改时间
10、代码方式创建表
-- 目标:创建一个school的数据库
-- 创建学生表(列,字段);使用SQL创建
-- 学号 int 登录密码varchar(20) 姓名 性别varchar(2) 出生日期(datatime),家庭住址,email
-- 注意点:使用英文(),表的名称 和字段 尽量使用 ` ` 括起来
-- AUTO_INCREMENT 自增单词
-- 字符串使用单引号或者双引号括起来
-- 所以的语句后面加英文逗号,最后一个字段不用加
-- DEFAULT默认
-- PRIMARY KEY 主键 一般一个表只有一个,唯一的
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
-- 常用命令
SHOW CREATE DATABASE school -- 查看创建数据库的语句
SHOW CREATE TABLE DATABASE student -- 查看student数据表的定义语句
DESC student -- 显示表的结构
11、关于数据库引擎MYISAM 和INNODB的区别
- INNODB 默认使用
- MYISAM 早些年使用的
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为2倍 |
- 常规使用操作
- MYISAM 节约空间 速度较快
- INNODB 安全性高 支持事务的处理,支持多表多用户操作
在物理空间存在的位置(data)
所有的数据库文件都存在data目录下
本质还是文件的存储!
- MySQL引擎在物理文件上的区别
- INNODB在数据表中只有一个*.frm文件,以及上级目录ibdata1文件
- MYISAM 有三个。
设置数据库表的字符集编码
- CHARSET=utf8
- 不设置的话。会是数据库默认的字符集编码 (反正不写的话就是不支持中文)
- 在my.ini中配置默认的编码
character-set-server=utf8 -- 在my.ini中配置默认的编码
12、修改和删除表
- 修改表明
ALTER TABLE student RENAME teacher -- ALTER TABLE student(旧表明) RENAME teacher(新表明)
-
增加表的字段
ALTER TABLE student ADD age INT(11) -- 增加表的字段 ALTER TABLE 表明 add 字段名 列属性
-
增加表的字段
ALTER TABLE student MODIFY age VARCHAR(11) -- 修改约束 ALTER TABLE student CHANGE age age1 VARCHAR(11) -- 字段重命名
-
-
删除表的字段
ALTER TABLE student DROP age1 -- 删除表的字段