(mysql增删改查,连表,排序,等,)–教学来自(bilibili狂神!)(笔记是自己学习过程中纯手写,由于是直接复制笔记,有些可以忽略)
(学习方法“先理解,在敲一遍”之后复习三到五遍,网络搜题,做题,就OK了)
本人博客请点击
systemctl start mysqld --启动mysql
systemctl status mysqld --查看mysql状态
grep -i password /var/log/mysqld.log --通过mysqllog过滤出mysql初始密码
#### 修改密码
```mysql
mysql -uroot -p123123
alter user user() identified by '密码'; --这里注意,填写密码的时候满足8位并且尽量是混合密码(英文、下划线、数字)
--可以修改密码策略
----------------------------------------------------------
set global validate_password_policy=low; //将密码级别改为弱
set global validate_password_length=6; //将密码长度改为6
/*
执行完之后,我们可以将刚才设置的混合密码
改为自己想要的数字密码或英文密码了
*/
set password = password('123456'); //修改当前密码
-----------------------------------------------------
flush privileges; -- 刷新权限操作
-----------------------------------------------------------------------
--所用语句都用;号结尾
show databases; -- 查看所有数据库
use kuming -- 切换库kuming
show tables; -- 查看数据库中所有的表
desc biaoming; -- 展示表结构
create database kuming; -- 创建一个名为kuming的数据库
--exit 退出连接
-- 单行注释(SQL)
/*
多行注释
*/
数据库xxx语言CRUD增删改查
DDL 定义
DML操作
DQL查询
DCL控制
登录命令详解
MySQL登录:MySQL -h (sever——ip) -P (port) -u (username) -p (password) -D(database_name) --prompt=(prompt_name),
-h为服务器IP地址,本机可以写为localhost或者127.0.0.1,—P(大写)为端口号,默认为3306,-u为用户名,-p为密码,——prompt=可以设置命令行提示符
2.1操作数据库
create database if not exists ku;-- 如果不存在库ku就创建ku
drop database if exists ku; -- 如果存在ku就删除数据库ku
`特殊` 如果你的表名或者字段是一个特殊字符,就需要带上``
show databases; 查看所有数据库
2.2数据库的列类型
数值
(常用标黑)
-
tinyint 十分小的数据 1个字节
-
smallint 较小的数据 2个字节
-
mediumint 中等大小的数据 3个字节
-
int 标准的整数 4个字节 常用的 int
-
bigint 较大的数据 8个字节
-
float 浮点数 4个字节
-
double 浮点数 8个字节
-
decimal 字符串形式的浮点数 金融计算的时候,一般是使用decimal(9个字节)
-
decimal(M,D)
M的取值范围是1–65,
D的取值是0–30.(精度D最大为30,表示有30位小数。)对于浮点数(M,D),双精度数(M,D)或十进制数(M,D), M必须是>= D(列’money’)。
字符串
(常用标黑)
- 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 时间戳 , 如:1952年到现在的毫秒数! 也较为常用!
- year 年份表示
null
- 没有值,未知
- 注意,不要使用NULL进行运算,结果为NULL
- comment 注释
2.3数据库的字段属性
Unsigned:
- 无符号的整数
- 声明了该列不能声明为复数
zerofill:
-
0填充
-
不足的位数,使用0来填充; 示例:int(3)定义3个位数 , 5— 005零填充了位数
(3)是定义宽度,就算是1也可以写好多位,只是零填充而已001
自增
- 通常理解为自增,自动在上一条记录的基础上+1(默认)
- 通常用来设计唯一的主键~ index ,必须是整数类型
- 可以自定义设计主键自增的起始值和步长
非空NULL not null
- 假设设置为 not null ,如果不给他赋值,就会报错!
- NULL ,如果不填写值,默认就是null!
默认
- 设置默认的值!default
- sex,默认值为男,如果不指定该列的值,则会有默认的值!
拓展(了解就好)
/*每一个表,都必须存在以下五个字段!未来做项目用的,表示一个记录存在意义!
id 主键
`version` 乐观锁
is_delete 伪删除
gmt_create 创建时间
gmt_update 修改时间
*/
第一个练习(创建表)
-
创建学生表(列,字段)使用SQL创建
-
学号int 登录密码varchar(20) 姓名,性别varchar(2),出生年月(datatime),家庭住址,email
-
注意点,使用英文(),表的名称和字段尽量使用 `` 括起来
-
AUTO INCREMENT 自增
-
字符串使用 单引号括起来!
-
所有的语句后面加 , (英文的) , 最后一个不加
-
PRIMARY KEY 主键,一般一个表只有一个唯一的主键!
-
default默认值
-
comment注释
CREATE TABLE IF NOT EXISTS `student`(
`id` int(4) not null auto_increment comment '学号',
`name` varchar(30) not null default '匿名' comment '姓名',
`pwd` VARCHAR(20) not null default '123456' comment '密码',
`sex` VARCHAR(20) not null default '女' comment '性别',
`birthday` datetime default null comment '出生日期',
`address` varchar(100) default null comment '家庭住址',
`email` varchar(50) default null comment '邮箱',
primary key(`id`)
)ENGINE=INNODB DEFAULT charset=utf8
desc详解
| Field | Type | Null | Key | Default | Extra |
Field:字段表示的是列名
Type:字段表示的是列的数据类型
Null :字段表示这个列是否能取空值
Key :在mysql中key 和index 是一样的意思,这个Key列可能会看到有如 下的值:PRI(主键)、MUL(普通的b-tree索引)、UNI(唯一索引)
Default: 列的默认值
Extra :其它信息
create格式(必须会)
CREATE TABLE [IF NOT EXISTS]`表名`(
`字段名` 列类型[属性] [索引] [注释],
……
`字段名` 列类型[属性] [索引] [注释]
[设置主键列]
)[表类型][字符集设置][注释]
2.5、数据表的类型
引擎可能是面试题
--关于数据库引擎ENGINE=
/*
INNOOB 默认使用
MYISAM 早些年前使用
*/
对比 | MYISAM | INNODB |
---|---|---|
事务支持 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 较大,约为MYISAM的两倍 |
常规使用操作对比
- MYISAM 节约空间,速度较快
- INNODB 安全性高,事务的处理,多表多用户操作
在物理机上的位置
所有数据库文件都存在data目录下,一个文件夹就对应一个数据库
本质还是文件的储存!
Mysql 引擎在物理机文件上的区别
- innoDB在数据库表中只有一个*.frm文件,以及上级目录下的ib