MySQL学习笔记(一)
最近寒假在家学习MySQL,跟着名叫“秃头统治世界”的up主,有七天的课程。把每天的学习知识在此整理回顾一下,争取自己真能七天看完视频。
一、数据库的下载,安装与连接
1. 下载
下载网址:http://dev.mysql.com/downloads/mysql/
2. 安装(两种方法)
2.1 下载可执行文件直接安装(包括客户端与服务端)
2.2 下载压缩包后找到bin文件目录中的可执行文件手动安装(使用cmd)
(1)初始化服务端:文件路径\bin\mysqld --initialize-insecure
(2)启动服务端与客户端:
mysqld——服务端;E:\mysql-8.0.23-winx64\bin\mysqld\mysqld
mysql——客户端;E:\mysql-8.0.23-winx64\bin\mysqld\mysql -u root -p
(3)配置环境变量:将bin文件路下的mysql的路径添加到环境变量中;E:\mysql-8.0.23-winx64\bin\mysqld
(4)配置Windows服务:E:\mysql-8.0.23-winx64\bin\mysqld --install
E:\mysql-8.0.23-winx64\bin\mysqld --remove
配置完成后可以在cmd中使用 net start MySQL与net stop MySQL在电脑后台服务开始与结束mysql的服务端(cmd一般需要使用管理员权限)
3. 链接
(1)先启动服务端:未配置Windows服务时——mysqld;已配置Windows服务后——net start MySQL
(2)再启动客户端:是否配置Windows的登录指令都一样——mysql -u root -p
默认用户:root
二、用户的创建与赋予权限
1. 创建新用户
create user 'alex'@'%' identified by '123123';
%表示在任意IP上均可登录,’123123‘表示登录密码
2. 对新用户赋予权限
grant all privileges on db1.t1 to 'alex'@'%';
all privileges可以换成具体的各种各样的权限,以逗号分隔
3.收回权限
revoke all privileges on db1.t1 from 'alex'@'%';
三、数据库与数据表及其内容的增删改
1. 数据库(类比于文件夹)
新建数据库::create database db1;
create database db2 default charset utf8; (实现中文输入,但是现版本的MySQL不用设置’default charset utf8‘也可以实现中文输入)
查看数据库:show databases;
删除数据库:drop database db1;
2. 数据表(类比于文件,如excel)
新建数据表:use db1;
create table t1(
id int, auto_increment primary.key,
name char
)engine=innodb default charset=utf8;
# innodb 支持事务,原子性操作 (MySQL数据库自5.5版本开始,InnoDB是MySQL数据库的默认引擎(之前是MyISAM),所以其实可以不用写egnine = innodb这一项了)
# myisam myisam
查看该数据库下的数据表:show tables;
删除数据表:drop table t1;
#auto_increment即为not null,该列值必不为空
3. 数据表内容(类比于文件内容)
查看数据:select * from t1;
插入数据:insert into t1(id, name) values(1, 'xiaoming');
删除数据:delete from t1 where id<6;
修改数据:update t1 set age=18;
update t1 set age=18 where age=17;
清除数据表内容:(两种方法)
delete from t1;
truncate table t1;
四、数据类型
1.数字型
(1)tinyint, int, bigint (可存储的数字范围逐渐增大)
(2)float, double, decimal(float与double在小数点后位数过多时都是不准确的,只有decimal是最准确的,不过是以字符形式存储,但是会以数字形式显示)
2.字符型
(1)char:char(10),不足十位也用空值补齐。速度更快
(2)vachar:vachar(10):不足不补齐。节省空间
(3)text:超过255使用text存储
(3)特别大的文件的话, 文件存硬盘,db存路径
3.时间型:datatime
4.其他
(1)ENUM:枚举,设定该项目取值范围,如('a', 'b','c','d')
(2)set:同样可设定项目取值范围,如('a', 'b','c','d')但是除该四种之外还可以输入('a'b')这样的组合
create table t1(
id int signed not null auto_increment primary key, #signed代表数字为无符号型,int的无符号型与有符号型的取值范围不同
num decimal(10,5), #10代表小数点前后位数之和,5代表小数点后的位数
name char(10)
)engine=innodb default charset=utf8;
五、外键
外键即另一个表的主键,
create table userinfo(
uid bigint auto_increment primary key,
name varchar(32),
department_id int,
constraint fk_user_depar foreign key (department_id) references color(id)
)engine=innodb default charset=utf8;
create table department(
id bigint auto_increment primary key,
title char(15)
)engine=innodb default charset=utf8;
#一张表只能有一个主键
#一个主键可以是由多列组合而成的唯一值
create table table1(
nid int not null,
pid int not null,
num int,
PRIMARY KEY(nid, pid)
)engine=innodb default charset=utf8;

浙公网安备 33010602011771号