1.mysql的特点及应用

.主要特点:
1.适用于中小规模,关系型数据库系统
2.支持linux,unix,windows等多种操作系统
3.支持python,perl,java,php等编程语言

.典型应用环境
1.LAMP平台 : 与Apache Http server 组合
2.LNMP平台 : 与Nginx 组合

1+.SQL命令使用规则

1.SQL命令不区分字母大小写(密码,变量值除外)
2.每条命令以;结束
3.默认命令不支持Tab键自动补齐
4.Ctrl+c 终止sql命令

2.常用命令

1.主配置文件 : /etc/my.cnf
2.数据库目录: /var/lib/mysql
3.错误日志文件 : /var/log/mysqld.log
4.查看初始密码命令 : grep -i “password” /var/log/mysqld.log
5.链接MySQL命令: mysql -hlocalhost -uroot -p"密码"
6.修改密码命令: alter user user root@“lcoalhost” identified by “密码”;
7.查看密码策略命令 : show variables like “%password%” ;
--------set global validata_password_policy=0; ##修改密码策略
--------set global validata_password_length=6; ##修改密码长度
8.密码策略:
0/LOW ------>长度
1/MEDIU(默认)------>长度;数字;小写/大写,和特殊字符
2/STRONG -------->长度;数字;小写/大写和特数字符,字典文件
9.密码策略永久配置: 将密码策略命令写入到主配置文件即可.
10.常用的SQL命令分类
管理数据库使用SQL(结构化查询语言)
-1.DDL 数据定义语言 如: create , alter , drop
-2.DML 数据操作语言 如:insert ,update ,delete
-3.DCL 数据控制语言 如:grant ,revoke
-4.DTL 数据事物语言 如:commit , rollback,savepoint

库管理命令

1.显示已有的库 : show databases;
2.显示当前连接用户 : select user();
3.切换库 : use 库名;
4.显示当前所在的库: select databases();
5.创建新库 : create database 库名;
6.显示已有的库:show databases;
7.显示已有的表: show tables;
8.删除库 : drop database 库名;
9.库名的命名规则:
--------仅可以使用数字,字母,下划线,不能纯数字
--------区分字母大小写,具有唯一性
--------不可以使用指令关键字,特殊字符

表管理命令

1.创建新表: create table 库名.表名 (
字段名1 类型(宽度),
字段名2 类型(宽度),
…);
2.查看表结构: desc 库名.表名;
3.删除表命令: drop table 库名.表名;
4.查看表记录命令: select * from 库名.表名; #※号表示查看表中所有的记录,可以替换为想要查看表的字段名,如果是多个字段名,字段名中间用逗号隔开

5.插入(增加)表记录命令: insert into 库名.表名 values(值列表)
6.修改表记录命令: update 库名.表名 set 字段=值 where 字段=值; #where表示进一步约束条件
7.删除表记录命令: delete from 表名;
8.基本匹配条件:
- 数值比较条件项: = , > , >= , < , <= , != (不相等)
- 字符比较/匹配空/非空 : =(相等) , != (不相等) , is null (为空) , is not null (非空)
- 逻辑匹配(多个判断条件时使用) : or ( 逻辑或) 条件1 or 条件2 or 条件3
and (逻辑与) 条件1 and 条件2 and 条件3
! / not (逻辑非)
- 范围匹配/去重显示 (匹配范围内的任意一个值即可) : in (值列表) 在…里…
not in (值列表) 不在…里…
between 数字 and 数字 在…之间…
distinct 字段名 去重显示
- 模糊查询 : mysql> select 字段名 from 库名.表名 where 字段名 like “通配符”

常见信息种类

1.数值型: 体重,身高,成绩,工资…
2.字符型: 姓名,工作单位,通信地址…
3.枚举型: 兴趣爱好,性别,专业…
4.日期时间型: 出生日期,注册时间…

修改表结构命令

1.语法结构: alter table 库名.表名 执行操作

可执行操作的命令:
				1.add 添加字段
				2.modify 修改字段类型
				3.change 修改字段名
				4.drop 删除字段
				5. rename 修改表名

1.1添加新字段语法结构: alter table 库名.表名 add 字段名 类型(宽度) 约束条件 [ after 字段名 | first ];

1.2修改字段类型语法结构: alter table 库名.表名 modify 字段名 类型(宽度) 约束条件 [ after 字段名 | first ];

1.3 修改字段名语法结构: alter table 库名.表名 change 源字段名 新字段名 类型(宽度) 约束条件 [ after 字段名 | first ] ;

1.4 删除字段语法结构: alter table 库名.表名 drop 字段名 ;

1.5 修改表名语法结构: alter table 表名 rename 新表名 ;

2.primary key 主键

2.1 foreign key 外键

文件导入导出

1.数据导入步骤:
- 默认只有root用户有数据导入的权限
- 建表
- 导入数据

(1)命令格式
mysql> load data infile “目录名/文件名” into table 库名.表名 fields terminated by “分隔符” lines terminated by “\n”;

(2)注意事项:
- 字段分隔符要与文件一致
- 表字段类型和字段个数要与文件匹配
- 导入数据时指定文件的绝对路径

2.数据导出步骤:

(1)命令格式: select 命令项 into outfile “目录名/文件名” fields terminated by “分割符” lines terminated by “\n” ; ##### \n 为换行字符

(2).注意事项:

- 导出数据行数由SQL查询决定
	- 导出的是表记录,不包括字段名
	- 自动创建存储数据的文件
	- 存储数据的文件,具有唯一性

用户授权

1.命令格式: mysql > grant 权限列表 on 库名.表名 to 用户名@“客户端地址” identified by “密码” with grant option;
 ##### identified by “密码” //授权用户密码命令
 ##### with grant option //用户有再授权权限
 2.权限列表
 - all //所有权限
 - usage //无权限
 - select update , insert … //授权个别权限
 - select update (字段名1… , 字段名N) //授权用户在指定的字段里有对应的权限3.客户端地址格式:
 - % //表示所有主机
 - 192.168.4.% //表示网段内的所有主机
 - 192.168.4.1 //表示指定IP的一台主机
 - localhost //数据库服务器本机4.相关命令(登录用户使用)
 - select user() ; //显示登录用户名及客户端地址
 - show grants; //显示登录用户自身访问数据库已有的权限
 - show grants for 用户名@“客户端地址” ; // 管理员查看已有授权用户的权限
 - set password=password (“密码”) //授权用户连接数据库后修改密码命令
 - set password for 用户名@“客户端地址” = password(“密码”) 管理员充值授权用户连接密码
 - drop user 用户名@“客户端地址” //删除授权用户(必须有管理员权限)5.撤销权限命令: mysql > revoke 权限列表 on 库名.表名 from 用户名@“客户端地址”;
6.恢复root密码:
 - 停止mysql服务程序
 - 跳过授权表启动MySQL程序
 - 修改root密码
 - 已正常方式重启mysql 服务程序主要操作过程如下:
 vim /etc/my.cnf
 [ mysqld ]
 …
 skip-grant-tables
 :wq
 ]# systemctl restart mysqld
 ]# mysql
 ]# mysql> update mysql.user set password=password(“密码”) where user=“root” and host=“localhost”;
 ]# mysql> flush privileges7.重置root密码
 ]# mysqladmin -uroot -p password “新密码”
 ]#Enter password : //输入旧密码