学习笔记Mysql-相关知识

MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 MySQL是一个轻量级的数据库,与PHP配合使用效果非...

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 也可以。

  • 发表于 2021-04-03 11:58
  • 阅读 ( 274 )
  • 分类:互联网

0 条评论

请先 登录 后评论
帆天锄禾
帆天锄禾

691 篇文章

你可能感兴趣的文章

相关问题