修改密码策略
查看密码策略
show variables;
show variablses like "%password%"; 查看包含password的变量
SHOW VARIABLES LIKE "validate_password_policy"; 查看指定变量
修改密码策略
set global validate_password_policy=0; 修改改密码策略
set global validate_password_length=6;修改密码长度为6
类型规定
字符类型: char varchar text blob
数值类型:
整数类型: 12 40 -12 ...
浮点类型: 1.88 2.122 .....
日期时间类型:
年: year YYYY 必须四位数的年
日期: date HHMMSS
时间:time
日期时间:datetime或timestamp YYYYMMDDHHMMSS
时间函数
MYSQL服务内置命令
- 可以使用时间函数给字段赋值
类型 | 用途 |
---|---|
curtime() | 获取当前的系统时间 |
curdate() | 获取当前的系统日期 |
now() | 获取当前系统日期和时间 |
year() | 获取年 |
month | 获取月 |
day() | 获取日 |
date() | 获取日期 |
time() | 获取时间 |
SELECT YEAR(NOW());
当使用2位数赋值时:
01~69视为2001~2069
70~99视为1970~1999
datetime和timestamp 区别
1 存储范围
2 赋值方式不同:当未给timestamp字段赋值时自动以当前系统时间赋值,而datetime值为NULL。
整数型
- 只能存储整数
类型 | 名称 | 有符号范围 | 无符号范围 |
---|---|---|---|
tinyint | 微小整数 | -128~127 | 0~255 |
smallint | 小整数 | -32768~32767 | 0~65535 |
mediumint | 中整型 | -223~2331-1 | 0~2^24-1 |
int | 大整型 | -231~231-1 | 0~2^32-1 |
bigint | 极大整型 | -263~-263-1 | 0~2^64-1 |
unsigned | 使用无符号存储范围 |
create table t4(num int zerofill); 默认用空格补充,加zerofill使用0填充。
字符类型
char 定长字符类型
varchar 变长
text / blob 大文本
定长:char(字符个数)
- 最大字符个数255
- 不够指定字符个数时在右边用空格补全
- 字符个数超出时,无法写入数据
变长:varchar(字符个数)
- 按数据实际大小分配存储空间
- 字符个数超出是,无法写入数据
大文本类型:text/blob
- 字符数大于65535存储时使用
MYSQL键值(标签)每种都有自己的功能和约束条件
种类:普通索引index 全文索引fulltext 主键 primary key
唯一索引 unique 外键 foreign key
Default 定义表头的默认值,向表里添加新行是,如果不给表头赋值,使用默认值赋值。MYSQL默认设置的默认值都是NULL,定义默认值default值 (值要与表头的类型匹配)
修改表结构
表结构的使用 desc 库.表; 看到的信息
命令格式:alter table 库.表 执行操作;
对应的操作:
#################################
添加表头 add
mysql> ALTER TABLE T11 ADD TEL CHAR(11) NOT NULL DEFAULT 119; 默认添加到最后
mysql> ALTER TABLE T11 ADD CLASS CHAR(7) NOT NULL DEFAULT "NSD2020" FIRST; 放到首位
mysql> ALTER TABLE T11 ADD MAIL VARCHAR(15) AFTER NAME; 指定放到NAME后面
#############################################
删除表头 drop
mysql> ALTER TABLE xinxi drop 学号; 单个删除
mysql> ALTER TABLE xinxi DROP 姓名, DROP 手机号; 多个删除
#############################################
修改表头类型 modify:修改的新类型和约束条件不能与已经存储的数据矛盾。
#############################################
修改表头名 change
类型及约束条件原样不变,是只改表头名,反之就是即改类型又改约束条件。
mysql> ALTER TABLE T4 CHANGE MEETING MET CHAR(50) ;
##############################################
修改表名 rename
mysql> ALTER TABLE T4 RENAME T44;
##############################################
MYSQL键值
MYSQL键值(标签)每种都有各自的功能和约束条件
种类:
普通索引 index
全文索引 fulltext
主键 primary key
唯一索引 unique
外键 foreign key
index 普通索引:
类似书的目录,给表头下存储的数据生产排队信息到表对应.idb文件里,把排队信息。目的是加快查询数据的速度。(缺点:1.索引会占用物理存储空间 2.降低写数据的速度(update insert delete)
普通索引
使用规则
- 一个表中可以有多个index字段
- 字段的值允许重复,且可以赋NULL值
- 通常把做为查询的字段设置为index字段
- index字段标志是MUL
创建索引
1.已有表创建索引
在已有表里添加索引:CREATE INDEX 名 on 表名(列名);
mysql> CREATE INDEX XXX ON T44(MET);
2.创建表时设置索引(索引名默认和表头名相同):
mysql> CREATE TABLE T12(NAME CHAR(10), AGE INT, CLASS CHAR(7),
-> INDEX(NAME), INDEX(AGE));
查看索引
1.查看是否有索引:
DESC 库.表
-
查看索引的详细信息:
SHOW INDEX FROM 库.表
mysql> SHOW INDEX FROM T44 \G;
*************************** 1. row ***************************
Table: T44 #表名
Non_unique: 1
Key_name: XXX #索引名
Seq_in_index: 1
Column_name: MET #表头名
Collation: A
Cardinality: 3
Sub_part: NULL
Packed: NULL
Null: YES
Index_type: BTREE #算法
Comment:
Index_comment:
1 row in set (0.00 sec)支持3中算法:Btree(默认) B+tree hash
删除索引
DROP INDEX 名 ON 库.表
主键 primary key
核心功能不允许给表头存储重复的值和NULL值
使用规则
-
字段值不允许重复,且不允许赋NULL值
-
一个表中只能有一个primary key字段
-
多个字段都作为主键,称为复合主键,必须一起创建
-
主键字段的标志时PRI
-
主键通常与auto_increment连用
-
通常把表中唯一标识记录的字段设置为主键
[记录编号字段]
一、 一个表头做主键
建表时创建主键
create table 库.表 (字段名列表, primary key(字段名));
删除主键
alter table 库.表 drop primary key;
mysql> ALTER TABLE T13 DROP PRIMARY KEY;
复合主键
mysql> CREATE TABLE T18(CIP CHAR(15), PORT SMALLINT, STATUS ENUM('YES','NO') , PRIMARY KEY(CIP, STATUS));
主键与auto_increment 连用
让表头通过自加1 (默认1,可以ALTER TABLE USER AUTO_INCREMENT=1;修改增长长度) 的计算结果赋值
补充:auto_increment 与primary key 关系
auto_increment 依赖主键 配置auto_increment 必须同时配置主键
auto_increment 设置存在时,不能删除主键,要先去掉auto_increment 主键才能删除
例:mysql> ALTER TABLE USER MODIFY ID INT NOT NULL;
外键foreign key
定义:让当前表表头的值 必须在另1张表的主键表头值里选择。
外键功能
- 插入记录时,字段值在另一个表字段值范围内选择。
使用规则
- 表存储引擎必须时innodb
- 字段类型要一致
- 被参照字段必须要是索引类型的一种(通常是primary key)
创建外键
CREATE TABLE 表名(
字段名列表,
foreign key(字段名) references 表名(字段名) #指定外键
on update cascade #同步更新
on delete cascade #同步删除
)ENGINE=INNODB; #指定存储引擎
mysql> CREATE TABLE GZ(GZ_ID INT, PAY FLOAT(7,2), FOREIGN KEY(GZ_ID) REFEERENCES YG(YG_ID) ON UPDATE CASCADE ON DELETE CASCADE)ENGINE=INNODB;
Query OK, 0 rows affected (0.01 sec)
已有表加入外键
命令:alter table 需加外键的表 add constraint 外键名 foreign key(需加外键表的字段名) referencnes 关联表名(关联字段名);
注意:外键名不能重复
mysql> ALTER TABLE GZ ADD CONSTRAINT WAIJIAN FOREIGN KEY(GZ_ID) REFERENCES YG(YG_ID) ON UPDATE CASCADE ON DELETE CASCADE ;
Query OK, 1 row affected (0.10 sec)
Records: 1 Duplicates: 0 Warnings: 0
数据导入导出
数据导入导出检索目录:导入导出是存放数据的文件 保存的目录。
查看默认检索目录的位置:
mysql> SHOW VARIABLES LIKE "secure_file_priv";
+------------------+-----------------------+
| Variable_name | Value |
+------------------+-----------------------+
| secure_file_priv | /var/lib/mysql-files/ |
+------------------+-----------------------+
1 row in set (0.01 sec)
修改检索目录的位置:
vim /etc/my.cnf #修改配置文件
[mysql]
secure_file_priv='/myload'
systemctl restart mysqld #重启服务
数据导入
把系统文件内容存储到数据库的表里
具体操作:
1.创建存储数据的库和表
2.把系统文件拷贝到检索目录下
3.执行导入数据的命令
4.查看数据并做优化配置
导入数据的注意事项
命令格式
数据导入步骤
- 默认只有root用户有数据导入权限
- 建表
- 导入数据
mysql>LOAD DATA INFILE "/目录名/文件名"
INTO TABLE 库名.表名
FIELDS TERMINATED BY "分隔符"
LINES TERMINATED BY "\n";
数据导出
命令格式
SELECT查询命令 INTO OUTFILE "/检索目录/文件名";
注意事项:
- 导出数据行数有SQL查询决定。
- 导出的是表记录,不包括字段名。
- 自动创建存储数据的文件。
- 存储数据文件,具有唯一性。