数据库管理
一、常用数据库
MYSQL:轻量级数据库,适用于中小型企业,性能好,开源的
MSSQL:微软,需要安装NT系统,不支持跨平台,适用于中大型企业
ACCESS:小巧方便,适用于小型企业和小型项目
ORACLE:甲骨文开发的,收费,适用于大型企业,跨平台,性能高,需要良好的底层硬件支持
二、常用框架组合
mysql+php
mssql+asp、aspx
oracle+Java、jsp
access+asp
三、数据库模型
关系型数据库(结构化数据库)mysql mssql oracle db2等
非关系型数据库(非机构化数据库)redis mongodb nosql postgresql Hbase 等
四、配置MySQL的环境变量
DOS-mysql:需要配置mysql的环境变量 mysql -uroot -proot
phpmyadmin 基于网页的数据库管理平台
mysql-front 开源的基于C/S模式的数据库管理平台
Navicat 功能强大的数据库管理平台 收费
五、mysql数据库结构:
数据库名--->数据库表---->表头(字段名)--->数据内容
表中有几个字段就会有几列数据
一行数据叫做记录
六、管理mysql数据库的常用命令:(注意:在DOS-mysql命令中需要加;)
mysql -uroot -proot (二进制方式登录)
exit 退出数据库
show databases;查看所有的数据库
information_schema 是5.0版本以后数据库自带的,汇总数据库信息
mysql 存放当前数据库信息,如登录信息、权限设置、安全设置等
use mysql;使用mysql,表示进入选中的数据库
show table;查看当前数据库中所有的表
select * from users;查看表user中的所有数据内容
select version(); 查看当前运行的数据库版本
七、修改密码
1、知道原密码
Step1:需要进入到数据库中,mysql -uroot -p
Step2:
1)低版本(5.0 、5.1、5.5、5.6):
update mysql.user set password=password('新密码') where user='root' and host='127.0.0.1'; flush privileges; //刷新数据库
2)高版本(5.7、8.0)
use mysql; alter user "root"@"localhost" identified by "新密码";
update mysql.user set authentication_string=Password("root") flush privileges
Step3:使用新密码登录测试
在mysql系统之外修改密码
在mysql/bin cmd
mysqladmin.exe -uroot -p password"新密码"
2、忘记原密码
1)Windows中:phpstudy中点击修改。
2)Linux中
Step1:关闭mysql服务,修改配置文件my.ini或者my.conf
Step2:打开mysql的配置文件,找到[mysql] 加上:skip-grant-tables(跳过密码验证),重启服务
Step3:直接免密码登录mysql数据库,利用上述方法修改密码:
update mysql.user set password=password('新密码') where user='root' and host='127.0.0.1'; flush privileges; //刷新数据库
exit;
Step4:修改配置文件,将添加的命令使用#注释掉,重启服务
Step5:使用新密码测试
八、在mysql数据库中添加账户并授权
1、添加账号
create user "用户"@"主机IP" identified by "密码";
主机IP:允许哪个主机可以登录,(localhost:本机可登录;%:任意用户可登录)
2、添加权限
grant 权限 on 库名.表名 to "用户名"@"主机IP";
权限:insert drop update select all;
库名.表名 :表示能够操作的数据库和表; *.* 表示所有的数据库以及所有数据表
例:grant all on *.* to "hqw"@"192.168.1.1";
注意:配置文件中的 bind 127.0.0.1 需要注释掉,或者根据需求进行修改
九、数据库外联:(允许远程连接)
update mysql.user set host="%" where user='root' and host='localhost'; flush privileges;
注意:配置文件中的 bind 127.0.0.1 需要注释掉,或者根据需求进行修改
十、MySQL常用函数
version(); select @@version; 查询版本
user(); select @@hostname; 查询当前用户
select @@tmpdir; 查询临时目录
select @@basedir; 数据库服务所在位置
select @@datadir; 数据存放的位置
mid(被截取的字符串,开始索引,截取的长度); 截取字符串
ord(); 显示字符ascii (首字母的)
concat( ,,…); 拼接字符串
concat_ws(分隔符,,…); 使用分隔符拼接字符串
group_concat(); 分组并拼接字符串
sleep(1); 让数据库等待一秒钟
十一、数据库文件格式
.opt 编码方式
.MYD 存储数据,数据内容
.frm 存储表结构
.MYI 存储当前数据的配置信息和索引信息
十二、SQL语法
1、创建数据库
create database db_name; (交互模式)
mysqladmin -uroot -proot create db_name 在DOS命令中,需要使用mysqladmin.exe
2、删除数据库
drop database db_name;
mysqladmin -uroot -proot drop db_name
3、数据库中的数据类型
int 整型
bigint 大整型
float 浮点型 3.0
date 日期
time 时间
char 字符
varchar 变长字符
text 文本
timestamp 时间戳
double 双精度浮点数 3.00
bit 比特
tinyint 0/1 表示布尔
4、创建表:use 表;
create table 表名(字段名1 数据类型,字段名2 数据类型,……);
primary key 主键
表中需要一个主键,该主键唯一,具有代表性,通过该主键能过确定一个记录。
后续添加主键:alter table db_name add primary key(字段名称);
auto_increment 自增
not null 不为空
5、查看表中字段:
show create table db_name;
desc db_name;
6、插入数据
insert into db_name(字段1,字段2) value(数据1,数据2);
注意:自增的字段可以不插入数据
7、查询数据
select 字段1,字段2 from db_name;
select 字段 from db_name where 字段名1=指定值1 and/or 字段名2=指定值2;
8、限制查询
limit a,b a,b均为数字,a表示记录的索引(从0开始),b表示记录的长度
limit a 表示从 0 开始选择 a 个记录
9、去重查询
select distinct 字段名 from 表名;
10、更新数据
update 表名 set 字段1=值1,字段2=值2; 更改字段所有的值
update 表名 set 字段1=值1 where 字段=指定值; 更改字段指定的值
11、删除表中的值
delete from 表名; 慎用
12、字段
删除字段
alter table 表名 drop 字段名;
添加字段
alter table 表名 add 字段名 数据类型;
13、修改表名
alter table 原表名 rename to 新表名
14、like子句
通配符
% 任意字符 _单个字符
select * from stu where name like "pingfan%" 模糊查询 (查找pingfanshijie)
15、数据的导入导出
1)导入数据
方法一:
mysql -uroot -proot < 需要导入的数据库文件(data.sql)
注意:data.sql需要自动创建数据库,并且需要选择该数据库。如果data.sql不会自动创建数据库,需手工创建
mysql -uroot -proot
create database 数据库
use 数据库
source 数据库文件
方法二:使用phpmyadmin等平台导入数据,如果data.sql不会自动创建数据库,需手工创建
方法三:mysqlimport -uroot -proot --local 数据库名 数据库文件
--local 表示本地任意位置均可导入数据 -L
首先需要创建数据库,创建表(该表的表名、字段名要和导入的数据的保持一致)
2)导出数据
方法一:借助平台:(navicat 、phpmyadmin、mysql-fornt等)
方法二:mysqldump -uroot -proot 数据库名 > ./data.sql
mysqldump -uroot -proot 数据库名 表名 > ./data.sql
方法三:select 字段 from 表名 into outfile “文件”; 将数据库中的字段内容导入到文件中。
首次从数据库中导出文件,数据库会运行“--secure-file-priv”安全机制,会限制导出文件。
查看该安全项的值:show global variables like '%secure-file-priv%';
secure-file-priv 为NULL表示mysql限制导入导出
secure-file-priv 没有值 表示mysql不限制导入导出
secure-file-priv=/tmp 表示mysql只能在/tmp目录下执行导入导出,其他目录是不允许
修改该安全选项
临时方法:set global secure-file-priv='';
注意: 表示不能通过sql语句修改
长久方法:修改配置文件,在配置文件中找到[mysql] ,后面添加 secure-file-priv='' 保存 退出 重启服务
十三、Union 联合查询
语法:查询语句1 union 查询语句2
将他们查询出来的结果放在一张表中显示,他们查询出来的字段个数必须一致
可以根据查询语句2的字段数判断查询语句1的字段数
十四、order by 的使用
order by 条件:根据给定的条件排序,默认情况下表的排序是升序
select * from 表 order by 字段名 [ASC/DESC] 根据执行的字段名去排序
ASC 升序
DESC 降序
select * from 表 order by n(数字) 表示对第n列数据进行排序,如果数字超过表格的列数,则会报错
可以根据数字来推断表中的列数