MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL是一个轻量级的数据库,与PHP配合使用效果非常好,MySQL支持大部分SQL语句。
常见的数据库:oracle、mysql、sql server
安装mysql
wamp集成环境中已经自带mysql。安装wamp时,已经安装上了mysql软件。
要想操作mysql中的数据,我们需要使用一种语言叫做sql来实现。
SQL(Structured Query Language) 是一种结构化查询语言,使用它可以对数据库中的数据进行增删改查。
编写sql语句
mysql安装的时候默认自带客户端和服务端的,在mysql客户端中编写sql就可以操作数据库中的数据。
使用mysql客户端,需要在cmd中进入到mysql安装的bin目录中,执行以下命令:
mysql -u 用户名 -p 密码
敲回车就进入到了mysql模式的交互环境了,此时可以写sql语句进行数据库的操作。
设置中文(window下)
set names utf8;
set character_set_database=utf8;
set character_set_server=utf8;
set character_set_client=gbk;
set character_set_connection=gbk;
show variables like "character%"; #查看数据库的默认编码格式
数据库操作相关sql语句
show databases; # 查看mysql有多少个数据库
create database 数据库名 charset utf8; # 创建数据库
drop database 数据库名; # 删除数据库
use 数据库名;# 选择操作哪个数据库
数据表操作相关sql语句
创建数据表(务必要先选择一个数据库)
create table 表名(字段名 类型,字段名 类型.....); #创建数据表 添加字段
create table user(id int primary key auto_increment not null,name char(30) not null default "小错",sex enum("男","女","未知") default "未知",age tinyint(5) not null default 1) charset utf8;
主键 primary key auto_increment
实际开发中每个表基本都会有一个主键,其作用是确保每条记录的唯一性,后面就是通过此主键值对表中的每条记录进行增删改查操作。
主键的值是自动增长的,设置auto_increment即可,该主键字段的值由mysql自动维护。
show tables; #查看数据库中的数据表
desc 表名; #查看表结构
drop table 表名; #删除数据表
数据操作相关sql语句
添加 (insert into)
insert into user set name="小张",sex="女",age="21"; #向表中添加数据
删除 (delete)
delete from user where id=4; #删除id=4的数据
更新 (update)
update user set age="24" where id=1; #更新user表中id=1的age字段
查询(select)
select * from user where id=1; #查询表中id=1的内容
select * from user where sex="男"; #查询所有sex="男"的数据
通过php操作mysql
通过php操作mysql的基本步骤:
连接mysql ->选择数据库->编写sql语句->执行sql语句获取结果
* 连接数据库
$link = mysql_connect('ip地址','用户名','密码');
* 选择数据库
mysql_query('use 数据库名')
* 执行sql语句
$result = mysql_query('sql语句')
* 获取select查询语句的结果
$result = mysql_query('select * from users'); //返回结果集
$rows = [];
echo "<pre />";
while(row=mysqlfetchassoc(row=mysqlfetchassoc(result)){
rows[]=rows[]=row;
}
print_r($rows);
* 获取增删改语句的结果
$sql = "insert/update/delete...."; result=mysqlquery(result=mysqlquery(sql); $num = mysql_affected_rows() ; //返回受影响行数,大于0说明成功 if($num > 0){ echo '成功'; }else{ echo '失败'; }
数组转JSON字符串
res=mysqlquery(res=mysqlquery(sql); // 执行sql语句,返回结果集
$num = mysql_affected_rows(); //返回受影响行数,大于0说明成功
if($num > 0){
$rows = [];
// mysql_fetch_assoc函数每次从结果集中取得一行作为关联数组
while(row=mysqlfetchassoc(row=mysqlfetchassoc(res)){
rows[]=rows[]=row;
}
echo json_encode($rows,JSON_UNESCAPED_UNICODE);//数组转JSON字符串
exit();
}else{
echo '{"err": "true", "msg": "找不到用户"}';
exit();
}
相关小知识
1、Mysql 中空值('')是不占用空间的,Mysql 中的NULL其实是占用空间的
不使用NULL可以提高索引效率,因为树形索引结构中将NULL也视作一般数据节点。
2、mysql 索引方法 btree 和 hash
btree支持范围查找 如 >,<,order by等场景
hash仅仅能满足 =,!=,in 等场景
3、mysql索引类型normal,unique,full text的区别是什么?
normal:表示普通索引
unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique
full textl: 表示 全文搜索的索引。 FULLTEXT 用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的 INDEX 也可以。