修改密码策略

查看密码策略

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~1270~255
smallint小整数-32768~327670~65535
mediumint中整型-223~2331-10~2^24-1
int大整型-231~231-10~2^32-1
bigint极大整型-263~-263-10~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 库.表

  1. 查看索引的详细信息:

    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查询决定。
  • 导出的是表记录,不包括字段名。
  • 自动创建存储数据的文件。
  • 存储数据文件,具有唯一性。

Q.E.D.