MySQL 安装使用笔记
安装
国内镜像地址也有很多。
- 配置环境变量
新添加系统变量:
变量名:
MYSQL_HOME
变量值: 安装路径(解压路径)
- 生成 data 文件
- 以管理员身份运行 cmd
- 进入安装目录in>文件夹下
- 执行命令:
mysqld --initialize-insecure --user=mysql
- 安装MySQL:
mysqld -install
- 启动服务:
net start MySQL
- 登陆MySQL
因为之前没有设置密码,所以密码为空,不用输入密码,直接回车。
d:mysql-8.0.12inmysql -u root -p
回车
基础常用命令
- 查看服务器版本
select version();
- 查看所有数据库
show databases;
- 切换指定数据库
use 数据库名;
- 查看该数据库下的表
show tables;
- 获取帮助
? contents;
? functins;
? numeric functions;
? round;
? data types;
? longblob;
======
操作命令
数据库
- 查看当前有哪些DB:
show databases;
- 添加DB:
create databases 数据库名称;
- 删除DB:
drop databases 数据库名称;
数据类型
- 文本类
数据类型 | 描述 |
---|---|
CHAR(size) | 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。 |
VARCHAR(size) | 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。 注释: 如果值的长度大于 255,则被转换为 TEXT 类型。 |
TINYTEXT | 存放最大长度未 255 个字符的字符串。 |
TEXT | 存放最大长度为 65535 个字符的字符串。 |
BLOB | 用于 BLOBs(Binary Large OBjects)。存放最多 65535 字节的数据。 |
MEDIUMTEXT | 存放最大长度为 16,777,215 个字符的字符串。 |
MEDIUMBLOB | 用于 BLOBs(Binary Large OBjects)。存放最多 16,777,215 个字符的字符串。 |
LONGTEXT | 存放最大长度为 4,294,967,295 个字符的字符串。 |
LONGBLOB | 用于 BLOBs(Binary Large OBjects)。存放最多 4,294,967,295 个字符的字符串。 |
ENUM(x,y,z,etc.) | 允许你输入可能值的列表,可以在 ENUM 列表中列出最大 65535 个值。 如果列表中不存在插入的值,则插入空值。 注释:这些值是按照你输入的顺序存储的。 可以按照此格式输入可能的值: ENUM('x','y','z') |
SET | 与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。 |
- 数字类
数据类型 | 描述 |
---|---|
TINYINT(size) | -128 到 127 常规。0 到 255 无符号*。在括号中规定最大位数。 |
SMALLINT(size) | -32768 到 32767 常规。0 到 65535 无符号*。在括号中规定最大位数。 |
MEDIUMINT(size) | -8388608 到 8388607 普通。0 到 16777215 无符号*。在括号中规定最大位数。 |
INT(size) | -2147483648 到 2147483647 常规。0 到 4294967295 无符号*。在括号中规定最大位数。 |
BIGINT(size) | -9223372936854775808 到 9223372936854775808 常规。0 到 18446744073709551615 无符号*。在括号中规定最大位数。 |
FLOAT(size,d) | 带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数右侧的最大位数。 |
DOUBLE(size,d) | 带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数右侧的最大位数。 |
DECIMAL(size,d) | 作为字符串存储的 DOUBLE 类型,允许固定的小数点。 |
- 日期类
数据类型 | 描述 |
---|---|
DATE() | 日期。格式:YYYY-MM-DD 注释:支持的范围从 "1000-01-01" 到 "9999-12-31" |
DATETIME() | *日期和时间的组合。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 "1000-01-01 00:00:00" 到 "9999-12-31 23:59:59" |
TIMESTAMP() | *时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC)至今的描述来存在。格式:YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 "1970-01-01 00:00:01" UTC 到 "2038-01-09 03:14:07" UTC |
TIME() | 时间。格式:HH:MM:SS 注释:支持的范围是从 "-838:59:59" 到 "838:59:59" |
YEAR() | 2 位或 4 位格式的年。 注释:4位格式所允许的值: 1901 到 2155。2 位格式所允许的值: 70 到 69 ,表示从 1970 到 2069。 |
数据表
- 创建数据表 table
creat table table_name(
colum_name data_type,
colum_name data_type,
.
.
.
colum_name data_type,
);
实例:
creat table account(
id bigint(20),
createTime datatime,
ip varchar(255),
mobile varchar(255),
nickname varchar(255),
username varchar(255),
brief text,
);
- 删除数据表 table
drop table table_name;
describe table_name;
可以输出表的描述信息
增加、删除列
- 增加列
alter table 【table_name】 add 【column_name】 【data_ytpe】 [not null] [default]
例如:
alter table account add c1 int(11) not null default 1;
在 account 表中加 c1 列,并指定位 int 类型,且不为空,默认值为 1
- 删除列
alter table 【table_name】drop 【column_name】
例如:
alter table account drop c1;
修改某个数据列的名字或者数据类型
- 修改列信息
alter table 【table_name】change 【old_column_name】 【new_column_name】 【data_type】
1. 只改列名:
data_type 和原来一样, old_column_name != new_column_name
2. 只改数据类型:
old_column_name == new_column_name, data_type 改变
3. 列名和数据类型都改了
- 修改表名
alter table 【table_name】rename 【new_table_name】
例如:
alter table account rename newaccount;
查看或插入表数据
- 查看表数据
select * from table_name;
select col_name1,col_name2, ... from table_name;
- 插入数据
insert into 【table_name】 values(value1,value2, ...)
insert into 【table_name】 (col1,col2,...) values(value1,value2, ...)
where 条件查询
- 语法
select * from table_name where col_name 运算符 值
例如:
select * from book where title = 't';
- 运算符
运算符 | 描述 |
---|---|
= | 等于 |
!= | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
between | 在两个值范围内 |
like | 按某个模式查找 |
- 组合条件 and 和 or
where 后面可以通过 and 与 or 运算符组合多个条件筛选
语法:
select * from table_name where col1 = xxx and col2 = xx or col3 > xx
null 字段的判断
select * from table_name where col_name is null
select * from table_name where col_name is not null
select distinct(精确的)去掉重复查询结果
select distinct col_name from table_name;
例如:
select distinct title form book;
使用 order by 对查询结果排序
1.按单一列名排序:
select * from table_name [where 子句] order by col_name [asc/desc]
2.按多列排序:
select * from table_name [where 子句] order by col1 [asc/desc], col2[asc,desc] ...
不加 asc 或者 desc 时,默认为 asc
asc 顺序排序
desc 倒序排序
使用 limit 截取查询结果
select * from table_name [where 子句] [order by 子句] limit [offset,] rowCount
offset:查询结果的起始位置,第一条记录的起始是 0
rowCount:从 offset 位置开始,获取的记录条数
注意: limit rowCount = limit 0,rowCount
插入命令 insert 和查询命令 select 的组合使用
- insert into 与 select 组合使用
一般用法:
insert into 【table_name】 values(值1,值2,...)
insert into 【table_name】 (列1, 列2) values(值1,值2,...)
insert into 与 select 的组合用法:
insert into 【table_name1】 select 列1, 列2 from 【table_name2】
insert into 【table_name1】 (列1,列2)select 列3, 列4 from 【table_name2】
例如:
insert into book2 select * from book where id != 1;
从 book 表中 id 不等于 1 的数据插入到 book2 中
insert into book2(title) select coutent from book where id != 1;
从 book 表中 id 不等于 1 的数据条目的 content 列的数据插入到 book2 表中的 title 列
更新表数据
- updata 语句
修改单列:
updata 表名 set 列名 = xxx [where 子句]
修改多列:
updata 表名 set 列名1 = xxx, 列名2 = xxx.... [where 子句]
where 语句中 in 操作符使用
- in 语法
select * from 表名 where 列名 in (value1,value2...)
select * from 表名 where 列名 in (select 列名 from 表名)
注释: 列名 in (value1,value2...) 等同 列名 = value1 or 列名 = value2
where 语句中 between 操作符使用
在 值1 和 值2 之间的数据
select * from 表名 where 列名 between 值1 and 值2
不在 值1 和 值2 之间的数据
select * from 表名 where 列名 not between 值1 and 值2
where 语句中 like 操作符使用
select * from 表名 where 列名 [not] like pattern
pattern:匹配模式,比如:'abc', '%abc', 'abc%', '%abc%';
"%" 是一个通配符,理解上可以把他当成任何字符串
例子: '%abc' 能匹配 'erttsabc'
hare
2020.7.29