create table `goods`(
`goods_id` mediumint(8) unsigned not null auto_increment,
//auto_increment主键自增长
`cat_id` smallint(5) unsigned not null default '0',
//smallint: 从 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型数据
`goods_sn` varchar(60) not null default '' unique,
`goods_name` varchar(120) not null default '',
`click_count` int(10) unsigned not null default '0',
//unsigned 无符号
`goods_number` smallint(5) unsigned not null default '0',
`market_price` decimal(10, 2) unsigned not null default '0.00',
//decimal 所有数位10位,小数部分2位
`shop_price` decimal(10, 2) unsigned not null default '0.00',
`add_time` int(10) unsigned not null default '0',
`is_best` tinyint(1) unsigned not null default '0',
//tinyint(1) 显示长度1
`is_new` tinyint(1) unsigned not null default '0',
`is_hot` tinyint(1) unsigned not null default '0',
primary key (`goods_id`)
) engine=myisam default charset=utf8;
insert into goods
values
(1, '4', 'ECS000000', 'KD876', '25', '1', '1665.6', '1388', '1240902890', '1', '1', '1'),
(4, '8', 'ECS000004', '诺基亚N85原装充电器', '0', '17', '69.6', '58', '1241422402', '0', '0', '0'),
(3, '8', 'ECS000002', '诺基亚原装5800耳机', '3', '24', '81.6', '68', '1241422082', '0', '0', '0'),
(5, '11', 'ECS000005', '索爱原装M2卡读卡器', '3', '8', '24', '20', '1241422518', '1', '1', '0'),
(6, '11', 'ECS000006', '盛创KINGMAX内存卡', '0', '15', '50.4', '42', '1241422573', '0', '0', '0'),
(7, '8', 'ECS000007', '诺基亚N85原装立体声耳机', '0', '20', '120', '100', '1241422785', '0', '0', '0'),
(8, '3', 'ECS000008', '飞利浦9@9v', '16', '1', '478.79', '399', '1241425512', '1', '1', '1'),
(9, '3', 'ECS000009', '诺基亚E66', '88', '100', '2757.6', '2298', '1241511871', '1', '1', '1'),
(10, '3', 'ECS000010', '索爱C702c', '12', '7', '1593.6', '1328', '1241965622', '0', '0', '1'),
(11, '3', 'ECS000011', '索爱C702c', '0', '1', '0', '1300', '1241966951', '0', '0', '0'),
(12, '3', 'ECS000012', '摩托罗拉A810', '14', '8', '1179.6', '983', '1245297652', '0', '1', '0'),
(13, '3', 'ECS000013', '诺基亚5320 XpressMusic', '13', '8', '1573.2', '1311', '1241967762', '0', '0', '1'),
(14, '4', 'ECS000014', '诺基亚5800XM', '6', '1', '3150', '2625', '1241968492', '0', '1', '1'),
(15, '3', 'ECS000015', '摩托罗拉A810', '8', '3', '945.6', '788', '1241968703', '0', '1', '1'),
(16, '2', 'ECS000016', '恒基伟业G101', '3', '0', '988', '823.33', '1241968949', '0', '0', '0'),
(17, '3', 'ECS000017', '夏新N7', '9', '1', '2760', '2300', '1241969394', '1', '0', '1'),
(18, '4', 'ECS000018', '夏新T5', '0', '1', '3453.6', '2878', '1241969533', '0', '0', '0'),
(19, '3', 'ECS000019', '三星SGH-F258', '10', '12', '1029.6', '858', '1241970139', '1', '1', '1'),
(20, '3', 'ECS000020', '三星BC01', '15', '12', '336', '280', '1241970417', '1', '1', '1'),
(21, '3', 'ECS000021', '金立 A30', '4', '40', '2400', '2000', '1241970634', '0', '0', '0'),
(22, '3', 'ECS000022', '多普达Tuch HD', '18', '40', '7198.8', '5999', '1241971076', '1', '1', '0'),
(23, '5', 'ECS000023', '诺基亚N96', '17', '8', '4440', '3700', '1241971488', '1', '1', '0'),
(24, '3', 'ECS000024', 'P806', '38', '100', '2400', '2000', '1241971981', '1', '1', '1'),
(25, '13', 'ECS000025', '小灵通/固话50元充值卡', '0', '2', '57.59', '48', '1241972709', '1', '0', '1'),
(26, '13', 'ECS000026', '小灵通/固话20元充值卡', '0', '2', '22.8', '19', '1241972789', '0', '0', '1'),
(27, '15', 'ECS000027', '联通100元充值卡', '0', '2', '100', '95', '1241972894', '1', '1', '1'),
(28, '15', 'ECS000028', '联通50元充值卡', '0', '0', '50', '45', '1241972976', '0', '0', '1'),
(29, '14', 'ECS000029', '移动100元充值卡', '0', '0', '0', '90', '1241973022', '1', '0', '1'),
(30, '14', 'ECS000030', '移动20元充值卡', '1', '9', '21', '18', '1241973114', '1', '0', '1'),
(31, '3', 'ECS000031', '摩托罗拉E8', '5', '1', '1604.39', '1337', '1242110412', '0', '0', '0'),
(32, '3', 'ECS000032', '诺基亚N85', '11', '4', '3612', '3010', '1242110760', '0', '1', '1')
;
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());//连接数据库,如果出错返回错误信息
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));//设置编码,如果出错返回错误信息
$sql = "select * from goods";
$result = mysqli_query($link, $sql) or die(mysqli_error($link));//接收查询到的数据,如果出错返回错误信息
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
echo '<pre>';//pre标签:格式化输出
print_r($list);
echo '</pre>';
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());//连接数据库,如果出错返回错误信息
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));//设置编码,如果出错返回错误信息
$sql = "select * from goods";//查询所有行所有列
$result = mysqli_query($link, $sql) or die(mysqli_error($link));//接收查询到的数据,如果出错返回错误信息
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
//mysqli_fetch_all从结果集中取得所有行作为关联数组
// 此时$list是一个二维数组,索引数组嵌套关联数组,索引是一共有多少项的数据
//而其中嵌套的是每一项的具体列,相当于每一行是数组的一项
//而其中嵌套的是每一行的具体内容,所以下面要用foreach循环取值
echo '<table width="100%" border="1">';
foreach($list as $goods){
//将数组$list的项分别赋给$goods,此时$goods会变成一堆不带索引的数据
//类型是字符串,不再是一个数组
echo '<tr>';
foreach($goods as $item){//再将每一个$goods的值赋给$item,并输出
echo "<td>{$item}</td>";
}
echo '</tr>';
}
echo '</table>';
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());//连接数据库,如果出错返回错误信息
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));//设置编码,如果出错返回错误信息
// $sql = "select * from goods"; 查询所有行所有列
$sql = "select * from goods where shop_price > 2000";//之前查询所有的范围太广,现在查询售价大于2000的
$result = mysqli_query($link, $sql) or die(mysqli_error($link));//接收查询到的数据,如果出错返回错误信息
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
//mysqli_fetch_all从结果集中取得所有行作为关联数组
// 此时$list是一个二维数组,索引数组嵌套关联数组,索引是一共有多少项的数据
//而其中嵌套的是每一项的具体列,相当于每一行是数组的一项
//而其中嵌套的是每一行的具体内容,所以下面要用foreach循环取值
echo '<table width="100%" border="1">';
foreach($list as $goods){
//将数组$list的项分别赋给$goods,此时$goods会变成一堆不带索引的数据
//类型是字符串,不再是一个数组
echo '<tr>';
foreach($goods as $item){//再将每一个$goods的值赋给$item,并输出
echo "<td>{$item}</td>";
}
echo '</tr>';
}
echo '</table>';
image.png
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());//连接数据库,如果出错返回错误信息
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));//设置编码,如果出错返回错误信息
//查询分类cat_id在3, 4,11里的商品
//这里不能用and,没有商品既在3里也在4里也在11里
// $sql = "select * from goods where cat_id=3 or cat_id=4 or cat_id=11";
//上面的写法太麻烦,每一项都要写一遍,下面用 in 的写法更简练
//括号里的数顺序没有要求,谁在前谁在后都可以,这是一个集合
$sql = "select * from goods where cat_id in(3, 4, 11)";
$result = mysqli_query($link, $sql) or die(mysqli_error($link));//接收查询到的数据,如果出错返回错误信息
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
//mysqli_fetch_all从结果集中取得所有行作为关联数组
// 此时$list是一个二维数组,索引数组嵌套关联数组,索引是一共有多少项的数据
//而其中嵌套的是每一项的具体列,相当于每一行是数组的一项
//而其中嵌套的是每一行的具体内容,所以下面要用foreach循环取值
echo '<table width="100%" border="1">';
foreach($list as $goods){
//将数组$list的项分别赋给$goods,此时$goods会变成一堆不带索引的数据
//类型是字符串,不再是一个数组
echo '<tr>';
foreach($goods as $item){//再将每一个$goods的值赋给$item,并输出
echo "<td>{$item}</td>";
}
echo '</tr>';
}
echo '</table>';
image.png
between a and b
等价于[a, b ]且 b>a
等价于>=a and <=b
not between a and b
等价于 a<= or >=b
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());//连接数据库,如果出错返回错误信息
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));//设置编码,如果出错返回错误信息
$sql = "select * from goods where shop_price between 2000 and 3000";
//查询售价在2000 - 3000之间的
//not between 2000 and 3000 就是查询价格不在2000 - 3000之间的
//等价于:where shop_price>=2000 and shop_price<=3000;
$result = mysqli_query($link, $sql) or die(mysqli_error($link));//接收查询到的数据,如果出错返回错误信息
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
//mysqli_fetch_all从结果集中取得所有行作为关联数组
// 此时$list是一个二维数组,索引数组嵌套关联数组,索引是一共有多少项的数据
//而其中嵌套的是每一项的具体列,相当于每一行是数组的一项
//而其中嵌套的是每一行的具体内容,所以下面要用foreach循环取值
echo '<table width="100%" border="1">';
foreach($list as $goods){
//将数组$list的项分别赋给$goods,此时$goods会变成一堆不带索引的数据
//类型是字符串,不再是一个数组
echo '<tr>';
foreach($goods as $item){//再将每一个$goods的值赋给$item,并输出
echo "<td>{$item}</td>";
}
echo '</tr>';
}
echo '</table>';
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());
//连接数据库,如果出错返回错误信息
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));//设置编码,如果出错返回错误信息
//查询包含三星的商品
//goods_id, cat_id, goods_name, shop_price是会显示的项,goods_name是要查询的项
//如果明确知道关键字前后有几个字符,或者确认要查有几个字符的项,用下划线 _
//一条下划线表示一个字符,少一个多一个都不行
//like '三星____' 表示查询关键字为三星,前面没有字符,后面有四个字符的项
$sql = "select goods_id, cat_id, goods_name,
shop_price from goods where goods_name like '%三星%'";
$result = mysqli_query($link, $sql) or die(mysqli_error($link));
//接收查询到的数据,如果出错返回错误信息
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
//mysqli_fetch_all从结果集中取得所有行作为关联数组
// 此时$list是一个二维数组,索引数组嵌套关联数组,索引是一共有多少项的数据
//而其中嵌套的是每一项的具体列,相当于每一行是数组的一项
//而其中嵌套的是每一行的具体内容,所以下面要用foreach循环取值
echo '<table width="100%" border="1">';
foreach($list as $goods){
//将数组$list的项分别赋给$goods,此时$goods会变成一堆不带索引的数据
//类型是字符串,不再是一个数组
echo '<tr>';
foreach($goods as $item){//再将每一个$goods的值赋给$item,并输出
echo "<td>{$item}</td>";
}
echo '</tr>';
}
echo '</table>';
image.png
比较运算符:
等于 =
不等于 != 或者 <>
小于 <
小于等于 <=
大于(等于) >(=)
大于等于 >=
是否在某集合内 in (等于in(a,b,...,n)中的任意一个值) not in
在某个范围内 between...and (取值在between a and b 之间 [a, b]
取值相当于>=a b<= 并且必须b>=a)
不在某个范围内 not between ... and(用的比较少)
逻辑运算符:
逻辑非 NOT 或 !
逻辑或 OR 或 ||
逻辑与 AND 或 &&
模糊查询:
用部分关键字进行查询:
像 like
用法:列 like '关键词'
not like(查询不包含他的数据)一般不用,查询范围太广了
like中有通配符的概念:
通配任意字符 % (like(%诺基亚%))
%代表匹配关键字前后的内容(0或多个字符,如果明确的知道前或后没有关键字了,就不用写%了)
通配单个字符 _ (like(三星__))
几条下划线对应几个字符,多一个少一个都不行,因为过于确定,所以用得少,一般用%的时候多一些
group by 列1, 列2...
运用在统计场合
五个统计函数:
总数count(*) 求总数 跟列没有关系 计算一共有多少行例如一共有多少件商品
最大值max(列) 取某一列具体项的最大值,例如商品价格这一栏中的,最高价是多少
最小值min(列)
平均值avg(列)
总和max(列)
max是求具体项中数据的和,而count是统计有多少项
(这些统计函数可以单独存在,并不是非要在group by里使用)
求最大: max select max(goods_price) from goods;
select * from goods where goods_price = select max(goods_price) from goods
select cat_id,max(goods_price) from goods group by cat_id;
求最小: min()
求总和: sum select sum(goods_number) from goods;
求平均: avg select avg(goods_price) from goods;
求总数: count select count(*) from goods;
可以给列或者计算结果取别名:as (select cat_id sum(goods_number * goods_price) as ht from goods group by cat_id;)
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());//连接数据库,如果出错返回错误信息
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));//设置编码,如果出错返回错误信息
//查询一共有多少商品
$sql = "select count(*) from goods";//返回值 31
$result = mysqli_query($link, $sql) or die(mysqli_error($link));//接收查询到的数据,如果出错返回错误信息
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
//mysqli_fetch_all从结果集中取得所有行作为关联数组
// 此时$list是一个二维数组,索引数组嵌套关联数组,索引是一共有多少项的数据
//而其中嵌套的是每一项的具体列,相当于每一行是数组的一项
//而其中嵌套的是每一行的具体内容,所以下面要用foreach循环取值
echo '<table width="100%" border="1">';
foreach($list as $goods){
//将数组$list的项分别赋给$goods,此时$goods会变成一堆不带索引的数据
//类型是字符串,不再是一个数组
echo '<tr>';
foreach($goods as $item){//再将每一个$goods的值赋给$item,并输出
echo "<td>{$item}</td>";
}
echo '</tr>';
}
echo '</table>';
image.png
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());//连接数据库,如果出错返回错误信息
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));//设置编码,如果出错返回错误信息
$sql = "select count(*) as total, max(shop_price),min(shop_price) from goods";
//count(*) as total,就是给count(*)取一个别名,as后面就是取得别名
//显示在浏览器中的话,更能看出来是什么意思
//没有别名就会直接显示 count(*)就不知道这个计算出来的总和具体代表什么
$result = mysqli_query($link, $sql) or die(mysqli_error($link));
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
print_r($list);
image.png
image.png
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());//连接数据库,如果出错返回错误信息
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));//设置编码,如果出错返回错误信息
$sql = "select count(*) as '商品总数', max(shop_price) '最高价',min(shop_price) '最低价' from goods";
$result = mysqli_query($link, $sql) or die(mysqli_error($link));
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
print_r($list);
image.png
image.png
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());//连接数据库,如果出错返回错误信息
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));//设置编码,如果出错返回错误信息
//按cat_id(商品分类)进行分组,并且显示这个分类里一共有多少件商品、最高价、最低价
//select后面的字段只能出现要分组的列的字段,如此例只能出现cat_id,否则会报错
//后面的是字段就只能是统计函数
$sql = "select cat_id, count(*), max(shop_price), min(shop_price) from goods group by cat_id";
$result = mysqli_query($link, $sql) or die(mysqli_error($link));
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
echo '<table width="100%" border="1">';
foreach($list as $goods){
echo '<tr>';
foreach($goods as $item){
echo "<td>{$item}</td>";
}
echo '</tr>';
}
echo '</table>';
image.png
having也可以和where一样做比较运算、逻辑运算和模糊查询
他们的不同点在于:having的条件里出现的内容必须是前面查询条件设定好的项
就是select后面列出来的项
如果是where的话,就跟前面的项无关
算出挂科超过两科(包括两科)学生的平均分
create table stu (name varchar(10),class varchar(10),score tinyint);
insert stu
(name,class,score)
values
("zhangsan","shuxue",50),
("zhangsan","dili",40),
("zhangsan","shuxue",90),
("lisi","yuwen",55),
("lisi","zhengzhi",45),
("wangwu","zhengzhi",30);
select name,avg(score) from stu group by name;
select name,sum(score<60) from stu group by name;
select name,sum(score<60) as gk,avg(score) as pj from stu group by name having gk>=2;
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());//连接数据库,如果出错返回错误信息
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));//设置编码,如果出错返回错误信息
//输出商品的名称、售价、打折价,并输出省了多少钱market_price-shop_price(只能做简单四则运算 + - + /)
//这个售价减去打折价其实数据表里是没有这一项的,但是可以在这里通过提取出来的数据进行运算,并显示在浏览器中
$sql = "select goods_name, market_price,shop_price, market_price-shop_price '节省' from goods";
$result = mysqli_query($link, $sql) or die(mysqli_error($link));
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
print_r($list);
echo '<table width="100%" border="1">';
foreach($list as $goods){
echo '<tr>';
foreach($goods as $item){
echo "<td>{$item}</td>";
}
echo '</tr>';
}
echo '</table>';
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());//连接数据库,如果出错返回错误信息
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));//设置编码,如果出错返回错误信息
//输出商品的名称、售价、打折价,并输出省了多少钱market_price-shop_price(只能做简单四则运算 + - + /)
//这个售价减去打折价其实数据表里是没有这一项的,但是可以在这里通过提取出来的数据进行运算,并显示在浏览器中
$sql = "select goods_name '商品价格', market_price '售价',shop_price '折后价', market_price-shop_price '节省' from goods";
$result = mysqli_query($link, $sql) or die(mysqli_error($link));
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
print_r($list);
echo '<table width="100%" border="1">';
foreach($list as $goods){
echo '<tr>';
foreach($goods as $item){
echo "<td>{$item}</td>";
}
echo '</tr>';
}
echo '</table>';
image.png
image.png
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());//连接数据库,如果出错返回错误信息
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));//设置编码,如果出错返回错误信息
//输出商品的名称、售价、打折价,并输出省了多少钱market_price-shop_price(只能做简单四则运算 + - + /)
//这个售价减去打折价其实数据表里是没有这一项的,但是可以在这里通过提取出来的数据进行运算,并显示在浏览器中
$sql = "select goods_name, market_price,shop_price, market_price-shop_price '节省' from goods where market_price-shop_price > 200";
$result = mysqli_query($link, $sql) or die(mysqli_error($link));
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
echo '<table width="100%" border="1">';
foreach($list as $goods){
echo '<tr>';
foreach($goods as $item){
echo "<td>{$item}</td>";
}
echo '</tr>';
}
echo '</table>';
image.png
例如:
$sql = "select goods_name, market_price,shop_price, market_price-shop_price '节省' from goods having goods_id> 20";
这样就查不出结果来,会报错:
Unknown column 'goods_id' in 'having clause',显示是未知的列
但是,用where:
$sql = "select goods_name, market_price,shop_price, market_price-shop_price '节省' from goods where goods_id> 20";
两者除了where和having不一样之外,其他完全相同
having 的条件必须是select后面出现的项
而where与前面出现的项无关,只要是数据库有的项都可以
select之后的查询条件会建立一张临时表,having就是作用于这一张表
而where是作用于数据库原表
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());//连接数据库,如果出错返回错误信息
mysqli_set_charset($link, 'utf8') or die(mysqli_error($link));//设置编码,如果出错返回错误信息
//这里前面别名是中文要用引号引起来,但是having后面不用引号,否则查不出结果
//这里如果用where就不能用别名‘节省’,只能用market_price-shop_price
//having用来查聚合后(就是经过加工后的,数据库没有的临时项)
$sql = "select goods_name, market_price,shop_price,
market_price-shop_price '节省' from goods having 节省 > 200";
$result = mysqli_query($link, $sql) or die(mysqli_error($link));
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
echo '<table width="100%" border="1">';
foreach($list as $goods){
echo '<tr>';
foreach($goods as $item){
echo "<td>{$item}</td>";
}
echo '</tr>';
}
echo '</table>';
image.png
order by 列1, 列2,...[排序方式 升序(缺省(没写就默认升序 用asc代替)) 降序 用desc代替]
默认升序(显示声明用 asc)用 desc 可以设置为降序排列
升序排列:
$sql = "select goods_id, goods_name, shop_price from goods order by shop_price asc";//这个asc是默认升序,所以写不写效果都是升序
降序排列:
$sql = "select goods_id, goods_name, shop_price from goods order by shop_price desc";
从低到高效果截图在下面
mysql> select * from stu order by name desc;
+----------+----------+-------+
| name | class | score |
+----------+----------+-------+
| zhangsan | shuxue | 50 |
| zhangsan | dili | 40 |
| zhangsan | shuxue | 90 |
| wangwu | zhengzhi | 30 |
| lisi | yuwen | 55 |
| lisi | zhengzhi | 45 |
+----------+----------+-------+
6 rows in set (0.00 sec)
select * from stu order by name,score desc;
mysql> select * from stu order by name asc,score desc;
+----------+----------+-------+
| name | class | score |
+----------+----------+-------+
| lisi | yuwen | 55 |
| lisi | zhengzhi | 45 |
| wangwu | zhengzhi | 30 |
| zhangsan | shuxue | 90 |
| zhangsan | shuxue | 50 |
| zhangsan | dili | 40 |
+----------+----------+-------+
6 rows in set (0.00 sec)
limit[offset,]N limit [起始位置,]查询数量 (offset 可缺省,不写的话默认从0开始)
offset:偏移量
N:取出的条目
offset缺省,即(limit 0,3)等于(limit 3)
select * from stu order by name,score desc limit 2,2;
select * from stu order by score ;
$sql = "select goods_id, goods_name, shop_price from goods limit 0,3";
image.png
$sql = "select goods_id, goods_name, shop_price from goods order by shop_price desc limit 0,3";//先降序排列,再提出三条结果
image.png
<?php
//header("Content-type:text/html;charset=utf-8");
/* select 的五种子句 */
//最简单的数据库查询步骤:
//1.连接数据库,如果出错放回具体的错误信息
$link = @mysqli_connect('localhost', 'root', 'root', '180301') or die(mysqli_connect_error());
//2.设置编码
mysqli_set_charset($link, 'utf8')or die(mysqli_connect_error($link));
/*
DQL(database query language 数据库查询语言):
select 列1,列2,... from 表 [where 查询条件 附加条件]
where语句
where 条件表达式(比较运算, 逻辑运算)
比较运算:> < >= <= !=/<>(两个都是不等于)
*/
//3.查询数据库
$sql = "select * from goods";//查询所有行、所有列 *通配符,代表所有列 表goods后面没条件,表示查询所有的数据
//这种查询方式在项目中几乎不用,因为查询范围太广
//4.执行代码
$result = mysqli_query($link, $sql) or die(mysqli_error($link));
//5.将查询结果转成数组
$list = mysqli_fetch_all($result, MYSQLI_ASSOC);
//6.输出结果
//将结果输出为一个表格
echo '<table width="100%" border="1">';
foreach($link as $v){
echo '<tr>';//<tr><td>{$v['goods_id']}</td></tr>前面是这样写的,但是不一定就是查这个,所以这里不这样写了
foreach($goods as $item){//前面是一堆的td写一大行,这里用foreach一个一个的输出更好
echo "<td>{$item}</td>";
}
echo '</tr>';
}
echo '</table>';
?>
网友评论