php操作mysql
来源:互联网 发布:淘宝上好玩的大人玩具 编辑:程序博客网 时间:2024/05/18 02:58
一、mysql简介:
在我们学习mysql 之前来理解一下什么叫开源精神:
开源精神是 Free & Open Source,意思是自由及开放源代码,Free指的是自由不是免费。
GNU Free Software是这么定义其所谓的“自由”的:
1. 出于任何目的使用该软件的自由;
2. 研究、修改该软件以使其实现你的目的的自由;源码的公开是实现此项的前提条件;
mysql 是来自于瑞典有 mysql AB 公司一个产品,它诞生于79年,在那个年底oracle也只是小打小闹, mssql还没有出生,从这里我们可以知道mysql的资历。
在2000年的时候 mysql 公布了自己的源代码,并采用GPL(GNU General Public License)许可协议,并正式进入开源世界
二、mysql 平台命令:
连接MYSQL: mysql -h110.110.110.110 -uroot -pabcd123 (注:u与root可以不用加空格,其它也一样)
本机: mysql -hlocalhost -uroot -ptest123
退出MYSQL命令: exit (回车) \q
修改密码: mysqladmin -uroot -p旧密码 password 新密码
增加新用户: grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"
比如:
增加一个用户test1密码为abc,让他可以在指定主机上登录,并对指定数据库有查询、插入、修改、删除的权限。
首先用以root用户连入MYSQL,然后键入以下命令:
grant select,insert,update,delete on mytest.* to test1@"10.0.0.16" Identified by "abc";
显示数据库: show databases;
使用一个数据库: use 数据库名;
显示表: show tables;
纠正数据库编码: set names '编码';
创建一个数据库: create database '库名';
创建一个表
create table 表名(
字段名 类型(长度) 参数,
....,
....
)engine=myisam charset=utf8;
显示数据表的结构: desc 表名;
删库和删表: drop database 库名;
drop table 表名;
将表中记录清空: delete from 表名;
将表中结构清空: truncate 表名
备份导出:mysqldump -u 用户名 -p 数据库 > 路径+文件名
导入>>>>(3个步骤:)
1、创建一个库
2、进入这个库
3、source 路径+文件名
mysql -uroot -p密码 < c:\school.sql #导入
将文本数据转到数据库中
1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用\n来代替.
例:
3 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23
2、数据传入命令 load data local infile "文件名" into table 表名;
注意:你最好将文件复制到\mysql\bin目录下,并且要先用use命令打表所在的库
create table teacher
(
id int(3) auto_increment not null PRimary key,
name char(10) not null,
address varchar(50) default '深圳',
year date
);
运算操作:
Select (20+5)*4;
查询当前用户与时间
select USER(),now();
数据类型的选择和区别:
数字类型 字符串类型 时间类型
tinyint 1个字节 3位数 带符号在 -128 127 无符号0--255
mediumint 2个字节 5位数 带符号在 -32768 32767 无符号0--65535
smallint 3个字节 8位数 带符号在 -8388608 8388607 无符号8位数 0--16777215
int 4个字节 10位数 带符号在 -2147483648 2147483647 无符号0--4294967295
bigint 8个字节 19位数 带符号在-9223372036854775808 9223372036854775807 无符号0--18446744073709551615
保存价格通常使用 decimal(m,n);
mysql> create table test2(
-> price decimal(5,3) not null
-> );
Query OK, 0 rows affected (0.05 sec)
mysql> insert into test2 values(12.36);
Query OK, 1 row affected (0.00 sec)
字符串类型 :
char(长度) 最大 255
varchar(长度) 最大 65535
区别:
char和varchar 保存以及检索的规则不相同,char(m)保存数据的如果数据长度不够m,那么char将自动填充空格,varchar不会填充,char(m)在检索数据的时候会自动把尾部空格删除,varchar不会删除。
char(m) 通常用于固定长度数据存储 varchar(m) 可变长度数据存储
text与 blob:
text 通常用于存储文本
blob 通常用于存储二进制资源文件,但是字实际的应用中,如果有更好的方式代替那么尽量不适用.
mysql是基于表引擎的关系型数据库服务器, myisam innodb
如果要使用innodb 那么需要在mysql配置文件 my.ini 注释掉skip-innodb,保存后重启服务器
默认值:
CREATE TABLE `myuser` (
`uid` int(11) NOT NULL auto_increment,
`username` varchar(250) NULL default '王兵',
`photo` varchar(250) NULL default '32423342',
PRIMARY KEY (`uid`),
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
上面的后两个字段均设置了默认值,在mysql命令行下可用如下命令插入默认值:
insert into myuser (username,photo) values (default,default);
枚举的应用:
创建一个表
create table student
(
name varchar(20) not null,
sex enum('f','m') not null,
student_id int not null auto_increment primary key
)
插入: insert into student values('aaa','m');
外键的应用:
create table dage( #大哥表
id int not null primary key auto_increment,
name varchar(30) not null
)engine=myisam default charset=utf8;
create table xiaodi( #小弟表
id int not null primary key auto_increment,
dage_id int not null,
name varchar(32) not null,
constraint xiaodiId_fk_dageId foreign key (dage_id) references dage(id)
)engine=myisam default charset=utf8;
插入个大哥:
mysql> insert into dage(name) values('铜锣湾');
Query OK, 1 row affected (0.01 sec)
mysql> select * from dage;
插入个小弟:
mysql> insert into xiaodi(dage_id,name) values(1,'铜锣湾_小弟A');
Query OK, 1 row affected (0.02 sec)
mysql> select * from xiaodi;
删除大哥:
delete from dage where id=1; #在mysql里面是可以删除的
没有大哥也可以插入小弟
insert into xiaodi(dage_id,name) values(2,'旺角_小弟A');
注意:
**但是在innodb 引擎就不能删除大哥 也不能直接插入小弟
删除列
alter table tablename drop 列名称;
增加列
alter table tablename add 列名称 类型信息与约束 COMMENT '注释说明';
修改列的类型信息
alter table tablename change 列名称 新列名称 类型信息与约束 COMMENT '注释说明';
重命名列
alter table tablename change 列名称 新列名称 类型信息与约束 COMMENT '注释说明'
添加索引
alter table tablename add index 索引名称(列名称);
添加唯一限制条件索引
alter table tablename add unique 唯一性索引名称(列名称);
删除索引
alter table tablename drop index 索引名称;
sql 查询语句整理
用各种操作符来设定检索条件 = > < >= <=
select * from score where score>95; //显示所有分数在95分以上的信息
对不同类型的值进行组合查找
select last_name,first_name,birth,state from president where birth<'1950-1-1' and (state='VA' or state='BA');
//找出1950年前出生于VA州或BA州的总统
NULL 值的特别处理
select last_name,first_name,birth,state from president where death is null; //找出所有没死的总统
在某些情况下,NULL 值是很有用的类型,大家慢慢就会理解的。
查询结果进行排序
select last_name,first_name,birth,state from president order by last_name; //让总统们的名字按字母顺序排列
可以设置排列的升序降序--多字段排序
select last_name,first_name from president order by state DESC,last_name ASC;
限制查询结果中数据行个数使用limit
select * from zfdm limit 2,2;
只要用limit 子句就可以了,看两个例子:
select last_name,first_name,birth,state from president order by birth limit 5; //只想看前5个
select last_name,first_name,birth,state from president order by birth limit 10,5; //返回从第11个记录开始的5个记录(跳过了10个,默认从0开始的)
批量查询数据,可以用in来实现
select * from article where id in(1,3,5)
使用concat连接查询的结果
select concat(id,"-",con) as res from article where id=1
返回"1-articlecontent"
模式匹配
有些情况下,模糊查询是很必要的,我们使用like和not like加上一个带通配符的字符串就可以了。共有两个通配符”_”(单个字符)和”&”(多个字符)
select concat(first_namem,last_name) where last_name like 'W%'; //找到以W或w开头的人
统计语句
distinct 去除重复
select distinct state from president //看看美国总统们都来自那些州?(distinct 去除重复)
select distinct city from customer order by id desc; 从customer表中查询所有的不重复的city
组合子句
where、group by、having、order by(如果这四个都要使用的话,一般按这个顺序排列)
select state,count(*) as count from president group by state order by count desc limt4; //看看出生总统最多的前四个州是哪几个
使用group by
group by 是把相同的结果编为一组
select city ,count(*) from customer group by city;
group by 经常与AVG(),MIN(),MAX(),SUM(),COUNT()一起使用
使用having
having 允许有条件地聚合数据为组
$sql="select city,count(*),min(birth_day) from customer
group by city having count(*)>10";
这句话是先按city归组,然后找出city地数量大于10的城市
btw:使用group by + having 速度有点慢
同时having子句包含的表达式必须在之前出现过
三、php 操作mysql
在我们学习mysql 之前来理解一下什么叫开源精神:
开源精神是 Free & Open Source,意思是自由及开放源代码,Free指的是自由不是免费。
GNU Free Software是这么定义其所谓的“自由”的:
1. 出于任何目的使用该软件的自由;
2. 研究、修改该软件以使其实现你的目的的自由;源码的公开是实现此项的前提条件;
mysql 是来自于瑞典有 mysql AB 公司一个产品,它诞生于79年,在那个年底oracle也只是小打小闹, mssql还没有出生,从这里我们可以知道mysql的资历。
在2000年的时候 mysql 公布了自己的源代码,并采用GPL(GNU General Public License)许可协议,并正式进入开源世界
二、mysql 平台命令:
连接MYSQL: mysql -h110.110.110.110 -uroot -pabcd123 (注:u与root可以不用加空格,其它也一样)
本机: mysql -hlocalhost -uroot -ptest123
退出MYSQL命令: exit (回车) \q
修改密码: mysqladmin -uroot -p旧密码 password 新密码
增加新用户: grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"
比如:
增加一个用户test1密码为abc,让他可以在指定主机上登录,并对指定数据库有查询、插入、修改、删除的权限。
首先用以root用户连入MYSQL,然后键入以下命令:
grant select,insert,update,delete on mytest.* to test1@"10.0.0.16" Identified by "abc";
显示数据库: show databases;
使用一个数据库: use 数据库名;
显示表: show tables;
纠正数据库编码: set names '编码';
创建一个数据库: create database '库名';
创建一个表
create table 表名(
字段名 类型(长度) 参数,
....,
....
)engine=myisam charset=utf8;
显示数据表的结构: desc 表名;
删库和删表: drop database 库名;
drop table 表名;
将表中记录清空: delete from 表名;
将表中结构清空: truncate 表名
备份导出:mysqldump -u 用户名 -p 数据库 > 路径+文件名
导入>>>>(3个步骤:)
1、创建一个库
2、进入这个库
3、source 路径+文件名
mysql -uroot -p密码 < c:\school.sql #导入
将文本数据转到数据库中
1、文本数据应符合的格式:字段数据之间用tab键隔开,null值用\n来代替.
例:
3 rose 深圳二中 1976-10-10
4 mike 深圳一中 1975-12-23
2、数据传入命令 load data local infile "文件名" into table 表名;
注意:你最好将文件复制到\mysql\bin目录下,并且要先用use命令打表所在的库
create table teacher
(
id int(3) auto_increment not null PRimary key,
name char(10) not null,
address varchar(50) default '深圳',
year date
);
运算操作:
Select (20+5)*4;
查询当前用户与时间
select USER(),now();
数据类型的选择和区别:
数字类型 字符串类型 时间类型
tinyint 1个字节 3位数 带符号在 -128 127 无符号0--255
mediumint 2个字节 5位数 带符号在 -32768 32767 无符号0--65535
smallint 3个字节 8位数 带符号在 -8388608 8388607 无符号8位数 0--16777215
int 4个字节 10位数 带符号在 -2147483648 2147483647 无符号0--4294967295
bigint 8个字节 19位数 带符号在-9223372036854775808 9223372036854775807 无符号0--18446744073709551615
保存价格通常使用 decimal(m,n);
mysql> create table test2(
-> price decimal(5,3) not null
-> );
Query OK, 0 rows affected (0.05 sec)
mysql> insert into test2 values(12.36);
Query OK, 1 row affected (0.00 sec)
字符串类型 :
char(长度) 最大 255
varchar(长度) 最大 65535
区别:
char和varchar 保存以及检索的规则不相同,char(m)保存数据的如果数据长度不够m,那么char将自动填充空格,varchar不会填充,char(m)在检索数据的时候会自动把尾部空格删除,varchar不会删除。
char(m) 通常用于固定长度数据存储 varchar(m) 可变长度数据存储
text与 blob:
text 通常用于存储文本
blob 通常用于存储二进制资源文件,但是字实际的应用中,如果有更好的方式代替那么尽量不适用.
mysql是基于表引擎的关系型数据库服务器, myisam innodb
如果要使用innodb 那么需要在mysql配置文件 my.ini 注释掉skip-innodb,保存后重启服务器
默认值:
CREATE TABLE `myuser` (
`uid` int(11) NOT NULL auto_increment,
`username` varchar(250) NULL default '王兵',
`photo` varchar(250) NULL default '32423342',
PRIMARY KEY (`uid`),
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
上面的后两个字段均设置了默认值,在mysql命令行下可用如下命令插入默认值:
insert into myuser (username,photo) values (default,default);
枚举的应用:
创建一个表
create table student
(
name varchar(20) not null,
sex enum('f','m') not null,
student_id int not null auto_increment primary key
)
插入: insert into student values('aaa','m');
外键的应用:
create table dage( #大哥表
id int not null primary key auto_increment,
name varchar(30) not null
)engine=myisam default charset=utf8;
create table xiaodi( #小弟表
id int not null primary key auto_increment,
dage_id int not null,
name varchar(32) not null,
constraint xiaodiId_fk_dageId foreign key (dage_id) references dage(id)
)engine=myisam default charset=utf8;
插入个大哥:
mysql> insert into dage(name) values('铜锣湾');
Query OK, 1 row affected (0.01 sec)
mysql> select * from dage;
插入个小弟:
mysql> insert into xiaodi(dage_id,name) values(1,'铜锣湾_小弟A');
Query OK, 1 row affected (0.02 sec)
mysql> select * from xiaodi;
删除大哥:
delete from dage where id=1; #在mysql里面是可以删除的
没有大哥也可以插入小弟
insert into xiaodi(dage_id,name) values(2,'旺角_小弟A');
注意:
**但是在innodb 引擎就不能删除大哥 也不能直接插入小弟
删除列
alter table tablename drop 列名称;
增加列
alter table tablename add 列名称 类型信息与约束 COMMENT '注释说明';
修改列的类型信息
alter table tablename change 列名称 新列名称 类型信息与约束 COMMENT '注释说明';
重命名列
alter table tablename change 列名称 新列名称 类型信息与约束 COMMENT '注释说明'
添加索引
alter table tablename add index 索引名称(列名称);
添加唯一限制条件索引
alter table tablename add unique 唯一性索引名称(列名称);
删除索引
alter table tablename drop index 索引名称;
sql 查询语句整理
用各种操作符来设定检索条件 = > < >= <=
select * from score where score>95; //显示所有分数在95分以上的信息
对不同类型的值进行组合查找
select last_name,first_name,birth,state from president where birth<'1950-1-1' and (state='VA' or state='BA');
//找出1950年前出生于VA州或BA州的总统
NULL 值的特别处理
select last_name,first_name,birth,state from president where death is null; //找出所有没死的总统
在某些情况下,NULL 值是很有用的类型,大家慢慢就会理解的。
查询结果进行排序
select last_name,first_name,birth,state from president order by last_name; //让总统们的名字按字母顺序排列
可以设置排列的升序降序--多字段排序
select last_name,first_name from president order by state DESC,last_name ASC;
限制查询结果中数据行个数使用limit
select * from zfdm limit 2,2;
只要用limit 子句就可以了,看两个例子:
select last_name,first_name,birth,state from president order by birth limit 5; //只想看前5个
select last_name,first_name,birth,state from president order by birth limit 10,5; //返回从第11个记录开始的5个记录(跳过了10个,默认从0开始的)
批量查询数据,可以用in来实现
select * from article where id in(1,3,5)
使用concat连接查询的结果
select concat(id,"-",con) as res from article where id=1
返回"1-articlecontent"
模式匹配
有些情况下,模糊查询是很必要的,我们使用like和not like加上一个带通配符的字符串就可以了。共有两个通配符”_”(单个字符)和”&”(多个字符)
select concat(first_namem,last_name) where last_name like 'W%'; //找到以W或w开头的人
统计语句
distinct 去除重复
select distinct state from president //看看美国总统们都来自那些州?(distinct 去除重复)
select distinct city from customer order by id desc; 从customer表中查询所有的不重复的city
组合子句
where、group by、having、order by(如果这四个都要使用的话,一般按这个顺序排列)
select state,count(*) as count from president group by state order by count desc limt4; //看看出生总统最多的前四个州是哪几个
使用group by
group by 是把相同的结果编为一组
select city ,count(*) from customer group by city;
group by 经常与AVG(),MIN(),MAX(),SUM(),COUNT()一起使用
使用having
having 允许有条件地聚合数据为组
$sql="select city,count(*),min(birth_day) from customer
group by city having count(*)>10";
这句话是先按city归组,然后找出city地数量大于10的城市
btw:使用group by + having 速度有点慢
同时having子句包含的表达式必须在之前出现过
三、php 操作mysql
0 0
- PHP学习-PHP操作MYSQL
- PHP 操作mysql数据库
- php操作mysql大全
- PHP+MYSQL操作类
- PHP mysql 操作数据库
- PHP操作MySQL
- php操作mysql数据库
- php mysql 操作
- php mysql 操作类
- php操作mysql
- php操作mysql数据库
- php mysql分页操作
- php操作mysql
- php操作mysql类库
- php mysql操作类
- PHP操作MySQL数据库
- php操作mysql
- PHP操作MySQL服务器
- #学习笔记#(6)mouseenter-mouseleave显示隐藏内容-jQuery
- Eclipse学习摘记
- 传智播客展望2016年大学毕业生求职现状
- 概要设计和详细设计的区别与联系
- UI图层层级,学IOS开发必备
- php操作mysql
- js console 函数详解(js开发调试的利器)即 Firebug控制台
- 阿里
- leetcode Happy Number
- mongodb 复制集
- php操作xml,xml 常用
- Java基础——Java重点基础之IO流(三)
- oracle exists与in并不能互用
- Java Base —— 复用类(继承)