MySQL教程
一、初识MySQL
1.1 数据库(DB,DataBase):
概念:
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、有共享的、统一管理的数据集合。
作用:
存储,管理数据
1.2 数据库分类:
关系型数据库(SQL):
- MySQL,Oracle,Sql Server,DB2,SQLlite
- 通过表与表之间,行与列之间的关系进行数据的存储
非关系型数据库(NoSQL):
- Redis,MongDB
- 非关系型数据库,对象存储,通过对象自身的属性来决定。
DBMS(数据库管理系统):
- 数据库的管理软件,科学有效的管理数据。维护和获取数据。
- MySQL,数据库管理系统
1.3 MySQL简介:
MySQL是一个关系型数据库管理系统
安装建议:
不建议下载exe,注册表
1.4 连接数据库:
mysql -uroot -pxxxxx --连接数据库
update mysql.user set authentication_string=password('设置的密码') where user='root' and Host='localhost'; --修改数据库密码
flush privileges; --刷新权限
--------------------------------------------------------------
--所有的语句使用:结尾
show datebase; --查看所有的数据库
use xxx --切换数据库
show tables; --查看数据库中所有的表
describe 表名 --显示数据库中所以表的信息
create database 数据库名称 --创建数据库
exit --退出连接
-- --单行注释
/**/ --多行注释
1.5 数据库语言:CRUD 增删改查
DDL 定义
DML 操作
DQL 查询
DCL 控制
二、操作数据库
操作数据库>操作数据库中的表>操作数据库中表的数据
mysql关键字不区分大小写
2.1 操作数据库
创建数据库:
CREATE DATABASE [IF NOT EXISTS] 数据库名 --[]代表可选(避免重复)
删除数据库:
DROP DATEBASE [IF EXISTS] 数据库名
使用数据库:
-- tab 键的上面,如果你的表名或者字段名是一个特殊字符,就需要带``
USE 数据库名
查看数据库:
SHOW DATABASE
2.2 数据库的列类型:
数值
- tinyint 十分小的数据 1个字节
- smallint 较小的数据 2个字节
- int 4个字节
- bigint 8个字节
- float 4个字节
- double 8个字节
- decimal 金融计算时使用
字符串
- char 0-255
- varchar 0-65535
- tinytext 2^8 - 1
- text 2^16 - 1
时间日期
- date YYYY-MM-DD,日期
- time HH:mm:ss 时间格式
- datetime YYYY-MM-DD HH:mm:ss 最常用
- timestamp 1970年到现在的毫秒数!
- year 年份表示
null
- 没有值
- 不要使用null计算,结果为null
2.3 数据库的字段属性:
Unsigned
- 无符号的整数
- 声明了该列不能声明为负数
zerofill
- 0填充的
- 不足的位数,使用0来填充,int(3),5 --- 05
自增
- 通常理解为自增,自动在上一条记录的基础上+1(默认)
- 通常用来设计唯一的主键~ index,必须是整数类型
- 可以自定义设计主键自增的起始值和步长
非空 NULL not null
- 假设设置为 not null,如果不给他赋值,就会报错
- NULL,如果不填写,默认就是null
默认
- 设置默认的值
- sex,默认值为男,如果不知道该列的值,则会有默认的值
2.4 创建数据库表:
-- AUTO_INCREMENT 自增
-- 字符串使用单引号括起来
-- 所有语句后面加,最后一个不用加
-- comment 注释
-- default 默认值
-- primary key 主键 (不建议写在语句里,写到最后明了) 一般一个表只有唯一一个的主键
-- ENGINE 引擎 INNODB
-- CHARSET 编码
create table if not exists `student`(
`id` int(20) not null auto_increment comment '学号',
`name` varchar(30) not null default '匿名' comment '姓名',
`password` 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(20) default null comment '邮箱',
primary key (`id`)
)ENGINE = INNODB DEFAULT CHARSET = UTF8
格式:
CREATE TABLE [IF NOT EXISTS] '表名' (
'字段名' 列类型 [属性] [索引] [注释],
'字段名' 列类型 [属性] [索引] [注释],
'字段名' 列类型 [属性] [索引] [注释],
.......
'字段名' 列类型 [属性] [索引] [注释]
)[表类型] [字符集] [注释]
常用命令:
show create database school; -- 查看创建数据库的语句
show create table student; -- 查看建表语句
DESC student; -- 查看一张表的具体结构
2.5 数据表的类型
-- 数据库引擎
INNODB 默认使用
NYISAM 早年使用
MYISAM | INNODB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为2倍 |
常规使用操作:
- MYISAM 节约空间,速递较快
- INNODB 安全性高,事务的处理,多表多用户操作
在物理空间存在的位置
所有的数据库文件都放在data目录下
本质都是文件的存储!
MySQL引擎在物理文件上的区别
- InnoDB在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
- MYISAM对应文件
- *.frm -表结构的定义文件
- *.MYD 数据文件(data)
- *.MYI 索引文件(index)
设置数据库表的字符集编码
CHARSET=utf8
不设置,mysql默认字符集(不支持中文)
mysql默认编码为Latin1,不支持中文
在my.ini中设置默认编码
character-set-server=utf8
2.6 修改删除表
修改
-- 修改表名称 alter table 旧表名 rename as 新表名;
alter table teacher rename as student;
-- 增加表的字段 alter table 表名 add 字段名 列属性;
alter table student add age int(11);
-- 修改表的字段
-- 修改约束 alter table 表名 modify 字段名 列属性;
alter table student modify age varchar(11);
-- 字段重命名 alter table 表名 change 旧字段名 新字段名 列属性;
alter table student change age age1 int(11);
-- 删除表的字段
alter table student drop age;
删除
-- 删除表
drop table if exists student;
== 所有的创建和删除操作尽量加上判断,以免报错==