1.8 MySql使用
- 建数据库
- 每一个图形化界面操作后对应一条sql语句
1.9 链接数据库
- 命令行连接
mysql -u root -p123456 -- 链接数据库
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘mm123456’;-- 修改数据库密码
flush privileges; -- 刷新权限
-- 所有语句都用;结尾 不;结尾则为换行,sql可以换行
show DATABASES; -- 查看所有数据库
show TABLES; -- 查看所有表
DESC/DESCRIBE student; --查看表信息
CREATE DATABASE duplicDB; -- 创建数据库
exit --退出链接
/*多行注释*/
# 也是单行注释
- DDL 定义
- DML 操作
- DQL 查询
- DCL 控制
2.操作数据库
- 操作数据库>操作表>操作表数据
- mysql关键字,字段值不区分大小写,一般时小写
2.1 操作数据库
- 创建数据库
CREATE database [if not EXISTS] duplicDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
- 删除数据库
DROP DATABASE [if EXISTS] duplicDB;
- 使用数据库
-- 如果表名或字段名是个特殊字符,需要带``飘 tab键上方
use `test`
- 查看数据库
show DATABASES; -- 查看所有数据库
2.2 数据库的表的列数据类型
2.1.1 数值
tinyint 最小的整数 1个字节 byte
smallint 较小的整数 2个字节 short
mediumint 中间整数 3个字节
int 标准整数 4个字节
bigint 较大的整数 8个字节
float 单精度浮点型 4个字节
double 双精度浮点型 8个字节(精度问题)
decimal 字符串形式的浮点数 金融计算
2.1.2 字符串
char 字符串固定大小 0-255
varchar 可变长字符串 0-65536 常用变量 String varchar(m)时显示长度
tinytext 微型文本 2^8-1
text 文本串 2^16-1 大文本
2.1.3 时间日期
data yyyy-MM-DD
time hh:mm:ss 时间格式
datatime yyyy-MM-DD hh:mm:ss常用的格式
timestamp 时间戳 1970.1.1 到现在的毫秒输,常用,没有日期格式问题
year 年份
2.1.4 null
- 没有值,未知
- 不用null进行运算,结果为null
2.3 数据库字段属性***
- unsigned:无符号整数,java中用绝对值。该列数据不能为负数
- zerofill :0填充,不足的长度位数,用0来填充
- 自增:设计唯一主键,必须是整数、可以自定义自增起始值和步长,插入时报错但也插入了主键,所以下一条时+2
- 非空(null/not null):设置为not null 不赋值则报错
- 默认:设置默认值
- int(m) 显示宽度不限制可以在列内保存值得范围,也不限制超过列的指定宽度的值的显示
- 因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有),如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。
2.3.2 表字段必须加的列(阿里规范)
- id
- version 乐观锁
- is_delete 逻辑删除
- createtime
- updatetime
-- 使用表名后面用英文将字段括起来,表名和字段名用飘包起来
-- AUTO_INCREMENT自增
-- 注释等字符串用单引号包括
-- 所有字段语句后加,英文,最后一句不加
-- PRIMARY KEY 主键,一般一个表只有一个唯一的主键
CREATE TABLE if NOT EXISTS `persion`(
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`name` VARCHAR(50) NOT NULL DEFAULT '名字' COMMENT '名字',
`pwd` VARCHAR(30) 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(30) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8
-- 格式
CREATE TABLE [if NOT EXISTS] `tablename`(
`字段名` 列类型 [属性][索引][注释],
...
`字段名` 列类型 [属性][索引][注释]
)[表类型][字符集设置][注释]
- 创建数据库,表的sql不会时:
show CREATE DATABASE test; -- 查看创建数据库的sql
show CREATE TABLE persion; -- 查看创建表的sql
DESC/DESCRIBE student; --查看表结构信息
2.4 数据库引擎
2.4.1 数据库引擎类型
InnoDB -- mysql5.7/8.0默认使用
myISAM -- mysql5.5以前
myISAM | InnoDB | |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 (是表锁) | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 不支持 | 支持、搜索 |
表空间大小 | 较小 | 较大,是myISAM的2倍 |
-
优点
-
myISAM:节约空间,速度快
-
InnoDB:安全性高,事务处理,允许多用户多表操作(行锁、外键)
-
物理空间存在的位置:所有数据库存放在data目录下,一个文件是一个数据库,本质是文件存储
2.4.1 数据库引擎物理文件上区别
-
InnoDB:数据存放在.frm文件,ibd是备份,以及上级目录下ibdata1文件(5.7以前)
-
8.0之后的取消frm,元数据存储到表空间.frm是表空间文件,ibd是数据文件+索引
-
myISAM对应文件
- .frm 表结构定义文件
- .myd 数据文件
- .myI 索引文件
-
设置数据库表的字符集编码: CHARSET=utf8
-
不设置,会设置默认编码Latin1(不支持中文)
-
设置1如上在创建表时设置,设置2在my.ini文件中[client]和[mysqld]下均设置character-set-server=utf8mb4,设置2存在跨平台数据库使用字符集没设置问题。
Mysql表级操作见本专栏下篇
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123967.html