文章目录
特别事项
- #mysql语句中关键字屏蔽用反引号,字符数据用单引号
- 插入数据是NULL为空值
- 日期值可以用单引号作为字符串传入,格式 YY-MM-DD HH:mm:ss
- 日期类型可以直接用比较运算符比较
- from db.table 库.表的形式查询,可以不用转换数据库
mysql_安装配置
mysql安装
windows系统下,准备事项: 下载mysql 5.7.19 zip文件
-
zip解压到指定目录
-
dos命令行切换到bin目录
#切换到指定目录 cd /d F:\JavaSoftware\mysql-5.7.19-winx64\mysql-5.7.19-winx64\bin
-
安装mysql 服务
#安装mysql服务 mysqld -install
-
初始化数据库
#初始化数据库 mysqld --initialize-insecure --user=mysql
-
启动mysql服务
#启动mysql服务 net start mysql #停止mysql 服务 net stop mysql
-
dos连接mysql
#密码单独输入登录 默认本地主机,3306端口 mysql -u root -p #标准登录 mysql -h 主机名 -P 端口 -u 用户名 -p密码 mysql -h 127.0.0.1 -P 3306 -u root -p12345
mysql配置
-
新建my.ini文件
解压目录下新建my.ini 文件,插入如下内容(跳过安全检测)
[client] port=3306 default-character-set=utf8 [mysqld] #设置为自己的mysql 安装目录 basedir=F:\JavaSoftware\mysql-5.7.19-winx64\mysql-5.7.19-winx64 #设置为mysql 数据目录 datadir=F:\JavaSoftware\mysql-5.7.19-winx64\mysql-5.7.19-winx64\data port=3306 character_set_server=utf8 #跳过安全检测,注销后需要输入密码 skip-grant-tables
-
修改root密码
dos命令登录mysql后修改,并刷新权限
use mysql; update user set authentication_string=password('12345') where user='root' and Host='localhost'; #刷新权限 flush privileges;
-
退出mysql,重新登录
#退出mysql exit(quit) mysql -u root -p
mysql卸载
#停止mysql 服务
net stop mysql
#卸载mysql 软件
mysqld --remove mysql
#删除mysql 服务
sc delete mysql
mysql架构
[外链图片转存失败,源站可能有防盗链机制,
来直接上传(img-nt2CJWlc-1653316908185)(F:\files\learning_files\markdown_files\images\mysql_三层架构.png)]
数据库_相关操作
创建数据库
#创建一个使用 utf8 字符集,并带校对规则的 hsp_db03 数据库
CREATE DATABASE [IF NOT EXISTS] hsp_db03
CHARACTER SET utf8 #指定数据库字符集,默认utf8
COLLATE utf8_bin;
#校对规则 utf8_bin 区分大小 默认 utf8_general_ci 不区分大小写
查看和删除数据库
#查看当前数据库服务器中的所有数据库
SHOW DATABASES
#查看前面创建的 hsp_db01 数据库的定义信息
SHOW CREATE DATABASE `hsp_db01`
#删除前面创建的 hsp_db01 数据库
DROP DATABASE [IF EXISTS] hsp_db01
备份和恢复数据库
#备份为sql语句
#dos执行, mysqldump 指令其实在 mysql 安装目录\bin
mysqldump -u 用户名 -p -B 数据库1 数据库2 数据库n > 文件名.sql
#示例
mysqldump -u root -p -B hsp_db02 hsp_db03 > d:\\bak.sql
#恢复数据库
#进入 Mysql 命令行再执行
source 文件名.sql
#示例
source d:\\bak.sql
数据类型(列类型)
数值类型
类型 | 大小 | 范围(有符号 无符号) | 说明 |
---|---|---|---|
TINYINT | 1 Bytes | (-128,127) (0,255) |
|
INT | 4 Bytes | (-2 147 483 648,2 147 483 647) (0,4 294 967 295) |
-21亿~21亿 0~42亿 |
BIGINT | 8 Bytes | (-9,223,372,036,854,775,808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) |
-900京~900京 0~1800京 |
FLOAT | 4 Bytes | (-3.402 823 466 E+38,-1.175 494 351 E-38),0,(1.175 494 351 E-38,3.402 823 466 351 E+38) 0,(1.175 494 351 E-38,3.402 823 466 E+38) |
单精度 浮点数值 精确小数点后到8-9位 |
DOUBLE | 8 Bytes | (-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) |
双精度 浮点数值 精确小数点后到15-16位 |
DECIMAL(M,D) | 对DECIMAL(M,D) ,如果M>D,为M+2否则为D+2 | M为数字总位数,被省略默认是10,最大65 D为小数位数 ,被省略默认是0,最大30 |
万万为亿、万亿为兆、万兆为京、万京为垓
日期和时间类型
类型 | 大小(bytes) | 范围 | 格式 | 说明 |
---|---|---|---|---|
DATE | 3 | 1000-01-01/9999-12-31 | YYYY-MM-DD | 日期 |
DATETIME | 8 | 1000-01-01 00:00:00/9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 日期和时间 |
TIMESTAMP | 4 | 1970-01-01 00:00:00/2038 结束时间是第 2147483647 秒,北京时间 2038-1-19 11:14:07,格林尼治时间 2038年1月19日 凌晨 03:14:07 |
YYYYMMDD HHMMSS | 时间戳 自动记录 insert update 操作时间 需要字段创建时配置 示例 login_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP |
字符串和二进制类型
类型 | 大小 | 用途 |
---|---|---|
char(size) | 0-255 bytes | 固定长度字符串,size表示字符数,最大255个字节 可提高字段的检索速度 |
varchar(size) | 0-65535 bytes | 可变长字符串,size表示字符数,最大65535个字节 ,其中1-3个字节存储长度,最大字符数根据编码而定 |
Text | 0-65 535 bytes | 文本数据 |
LongText | 0-4 294 967 295 bytes | 极大文本数据 |
blob | 0-65 535 bytes | 二进制数据 |
LongBlob | 0-4 294 967 295 bytes | 极大二进制数据 |
示例
CREATE TABLE IF NOT EXISTS`emp`(
id INT UNSIGNED,
`name` VARCHAR(32),
sex CHAR(1),
birthday DATE,
entry_date DATETIME,
job VARCHAR(32),
salary DOUBLE,
`resume` TEXT
) CHARSET utf8 COLLATE utf8_bin ENGINE INNODB;
表_相关操作
备份和恢复表
#备份表
#dos执行, mysqldump 指令其实在 mysql 安装目录\bin
mysqldump -u 用户名 -p密码 数据库 表1 表2 表n > 文件名.sql
#恢复表,同数据库恢复
创建表
CREATE TABLE table_name(
field1 datatype,
field2 datatype,
field3 datatype
)CHARACTER SET 字符集 COLLATE 校对规则 ENGINE 引擎;
#field1:列名 datatype:字段类型(列类型)
#CHARACTER SET:不指定为数据库字符集
#COLLATE:不指定为数据库校对规则
#ENGINE 存储引擎,一般为INNODB
#示例
CREATE TABLE `user` (
id INT, `name` VARCHAR(255),
`password` VARCHAR(255),
`birthday` DATE
) CHARACTER SET utf8 COLLATE utf8_bin ENGINE INNODB;
删除表
-- 要删除这个表
DROP TABLE employee;
修改表
- 添加列
ALTER TABLE table_name
ADD (COLUMN datatype [DEFAULT expr]
[,COLUMN datatype]...);
[AFTER COLUMN];
#示例
ALTER TABLE emp
ADD image VARCHAR(32) NOT NULL DEFAULT ''
AFTER RESUME
- 修改列
ALTER TABLE table_name
MODIFY (COLUMN datatype [DEFAULT expr]
[,COLUMN datatype]...);
#示例
ALTER TABLE emp
MODIFY job VARCHAR(60) NOT NULL DEFAULT ''
- 删除列
ALTER TABLE table_name
DROP (COLUMN);
#示例
ALTER TABLE emp DROP sex
- 查看表列
DESC table_name; -- 显示表结构,可以查看表的所有列
- 修改列名
ALTER TABLE table_name
CHANGE 旧表名 新表名 约束;
#示例
ALTER TABLE employee
CHANGE `name` `user_name` VARCHAR(64) NOT NULL DEFAULT ''
- 修改表名
RENAME TABLE 表名 TO 新表名
#示例
RENAME TABLE emp TO employee
- 修改表字符集
ALTER TABLE 表名 CHARACTER SET 字符集
-- 修改表的字符集为 utf8
ALTER TABLE employee CHARACTER SET utf8
DML语句
INSERT 语句
INSERT INTO table_name [(COLUMN[,COLUMN...])]
VALUES (VALUE[,VALUE...]);
#示例
INSERT INTO `goods` (id, goods_name, price)
VALUES(10, '华为手机', 2000);
细节说明:
- 字符和日期型数据应包含在单引号中。
- 列可以插入null空值[前提是该字段允许为空]
- insert into tab_name (列名…) values (),(),() 形式添加多条记录
INSERT INTO `goods` (id, goods_name, price)
VALUES(50, '三星手机', 2300),
(60, '海尔手机', 1800);
- 如果某个列没有指定 not null ,那么当添加数据时,没有给定值,则会默认给 null
- 默认值的使用,当不给某个字段值时,如果有默认值就会添加默认值
UPDATE 语句
UPDATE table_name
SET COLUMN_NAME1=expr1 [,COLUMN_NAME2=expr2 ...