文章目录
安装MySQL
- 1.下载安装包,解压。
- 2.创建并配置配置文件
- 3.使用管理员权限将MySQL服务安装到系统,切换到bin目录下。 mysqld -install
- 4.初始化数据目录data
- 启动MySQL并修改密码。
- 刷新权限: flush privileges;
- 删除跳过密码配置,重新启动MySQL。
连接数据库
mysql -u root -p123456; -- 登录本机
update user set authentication_string=password('123456') where user='root' and Host='localhost'; -- 修改root密码
flush privileges; -- 刷新权限,使修改后的密码生效
show databases; -- 查看所有的数据库
use mysql; -- 切换数据库。
show tables; -- 查看所有的表
describe user; -- 查看表的结构信息
create database testdb; -- 创建数据库
exit; -- 退出连接
DDL 数据库定义语言
DML 数据库操作语言
DQL 数据库查询语言
DCL 数据库控制语言
2.操作数据库
表=》表的数据。
-- 创建数据库
create database [if not exists] testdb01;
-- 删除数据库
drop database [if exists] testdb;
-- 使用数据库
use testdb01;
-- 查看数据库
show databases;
show create database [dbname]; -- 查看数据库定义语句
show create table student; -- 查看表的定义语句
2.1数据库的列类型
数值
- tinyint 十分小的数据 1个字节
- smallint 比较小的数据 2个字节
- int 标准的整数 4个字节
- mediumint 中等的字节 3个字节
- 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.1.1到现在的毫秒数。
- year 年份表示
null
- 没有值,未知。
- 不要使用null进行计算。
2.2 数据库的字段属性
- Unsigned
无符号的整数,不能为负数。 - zerofill
0填充,不足的位数,使用0来填充。int(3) 5 --> 005 - 主键
- 自增
通常理解为自增,自动在上一条记录的基础上+1
用来设计唯一的主键index,必须是整数类型。
可以自定义设计自增的起始值和自增步长。 - 非空
null 和 not null - 默认
设置默认值,插入数据时该字段没有指定值的时候会使用默认值填充。 - 更新
version 乐观锁 - 备注
- 常用字段: id/ version/ is_delete/ gmt_create /gmt_update
2.3数据库创建表
create table if not exists `student`(
`id` int(4) NOT NULL AUTO_INCREMENT comment 'id字段',
`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 '家庭地址',
primary key (`id`)
) ENGINE = innodb default charset=utf8
- 格式
CREATE TABLE [IF NOT EXISTS] `表名`(
·字段名· 列类型 [属性] [索引] [注释],
·字段名· 列类型 [属性] [索引] [注释],
·字段名· 列类型 [属性] [索引] [注释],
······
·字段名· 列类型 [属性] [索引] [注释]
)[表类型] [字符集设置][注释]
2.4数据表的类型
- INNODB 默认使用
安全性高,支持事务处理,多表多用户操作。 - MYISAM 早些年使用
节约空间 速度较快 - 区别
> 在物理文件存储上的区别
所有的数据文件都存在data目录下,本质还是文件的存储!一个文件夹就对应一个数据库
MySQL引擎在物理文件上的区别 - InnoDB在数据库表中只有一个*.frm文件,以及上级目录下的ibdata1文件
- MYISAM对应的文件
*.frm(表结构定义文件)
*.myd 数据文件
*.MYI 索引文件
设置数据库表的字符集编码 CHARSET=utf8,可以在my.ini中设置默认的字符集编码cahracter-set-server=utf8
2.5修改删除表
-- 修改表名
alter table student rename as student1;
-- 增加字段
alter table sutdent1 add age int(3);
-- 修改表的字段(重命名,修改约束)
alter table student1 modify age varchar(11); -- 修改约束
alter table student1 change age age1; -- 重命名字段
-- 删除表字段
alter table student1 drop age1;
-- 删除表
drop table student1;
3.MySQL的数据管理
3.1外键
key `FK_gradeid` (`gradeid`),
constraint `FK_gradeid` FOREIGN KEY(`gradeid`) REFERE NCES `grade`(`gradeid`);
alter table `student` add constraint `FK_gradeud` FOREIGN KEY (`gradeid`) REFERENCES `grade`(`gradeid`);
3.2DML语言
- insert
- update
- delete
-- truncate 清空一个表的数据。
truncate `student`;
- delete 和 truncate的区别
truncate会重置自增序列。
truncate不会影响事物。
3.3DQL查询语句
-- 函数 concat(a,b) 拼接字符串
select concat('姓名:',name) from student ;
-- 去重 distinct
select distinct(name) from student where age >18;
-- 查看系统版本
select version();
-- 查询张姓同学
select * from student where name like '张%'
-- 查询张姓单字名称同学。
select * from student where name like '张_'
CREATE DATABASE shop CHARACTER SET utf8 COLLATE utf8_general_ci;
use shop;
create table `account`(
`id` int(3) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(30) NOT NULL,
`money` DECIMAL(8,2) NOT NULL,
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
insert into account (`name`,`money`) VALUES('A',8000.00),('B',20000.00);
select * from account;
SET autocommit = 0; -- 关闭自动提交
START TRANSACTION; -- 开启事务
update account set money =money -500 where `name`='A'; -- A 账户减少500
update account set money =money +500 where `name`='B'; -- B 账号增加500
COMMIT; -- 提交事务
ROLLBACK; -- 回滚事务
SET autocommit = 1; -- 开启自动提交