#alter table 表名 change 旧字段名 新字段名 类型(); #修改字段名
ALTER TABLE xxx CHANGE xx xxx VARCHAR(32);
#alter table 表名 drop 字段名; #删除字段
ALTER TABLE xxx DROP xxx;
-- 操作表
#insert into 表名 values #添加表字段数据
(),
();
#带条件删除数据,删除xxx为xxx的数据
DELETE FROM xxx WHERE xxx='xxx';
DELETE FROM xxx; #删除表中所有数据
#select 字段名, 字段名 from 表名; #查询xxx表中的 xxx和 xxx列
SELECT xxx,xxx FROM xxx; #细节:查询只是查看xxx和xxx的所有数据,不会修改表中数据
#select * from 表名; #查询所有字段, 使用*代表所有列 列就是字段
SELECT * FROM xxx;
#selet *, xx * xx from 表名; #查询 xxx * xxx; #查询结果参与运算
SELECT *, xxx * xxx FROM 表名; #只有数字才能进行运算
SELECT xxx AS 别名, xxx AS 别名 FROM 表名;select xxx as 别名, xxx as 别名 from 表名;
SELECT xxx 别名, xxx 别名 FROM 表名; #取别名的时候as可以忽略
# 条件判断语句WHERE(where)
#select * from 表名where 数字类型的xxx判断;
SELECT * FROM 表名 WHERE 数字类型的xxx<1000;
#查询的数据 表名 where进行判断 数字类型的xxx<1000;
#逻辑运算符
#select * from 表名 where 字段名判断 && 字段名判断
#select * from 表名 where 字段名判断 and 字段名判断
# 并且 &&/and # 或者 ||/or
SELECT * FROM goods WHERE price>1000 AND sales_volume<500;
SELECT * FROM goods WHERE price>8000 OR sales_volume<100;
#where条件判断 查询name是 xxx 和 xxx 和 xxx 的商品
#select * from 表名 where name in (字段名内容); #select * from 表名 where xxx in (字段名内容);
SELECT * FROM goods WHERE NAME IN ('华为P40', '小米11', '米糊');
#查询name不是xxx和xxx和xx的商品
#select * from 表名 where name not in (字段名内容); #select * from 表名 where xxx not in (字段名内容);
SELECT * FROM 表名 WHERE NAME NOT IN ('华为P40', '小米11', '米糊');
#范围: BETWEEN 值1 AND 值2 -- 表示从值1到值2范围,包头又包尾
SELECT * FROM goods WHERE price BETWEEN 1000 AND 5000;
#select * from 表名 where 字段名 between 小范围 and 大范围; #大的范围不能写前面
SELECT * FROM 表名 WHERE NAME IS NULL; #查询商品名称是空的商品 不要用=,要用is
SELECT * FROM goods WHERE NAME IS NOT NULL;#查询商品名称不是null的商品
#模糊查询like
# %任意字符 _一个字符
SELECT * FROM 表名 WHERE NAME LIKE '米%';(米开头的商品) %米%(包含'米')
'_米%'(第二个字为米) '%米'(最后字为米)
/* 查询排序 */
-- order by 表示排序, ASC升序, DESC降序
#select * from 表名 order by 字段名 asc; (desc)
#查询所有数据,在price降序排序的基础上,如果price相同再以sales_volume降序排序
SELECT * FROM 表名 ORDER BY 价格xxx DESC, 销量xxx DESC; #大到小
CREATE TABLE `select` ( INSERT INTO `select` VALUES
); ();
-- 查询统计个数 COUNT
SELECT COUNT(NAME) FROM goods; #统计时会忽略NULL值
SELECT COUNT(*) FROM goods; #统计包含null个数
#select count (*) from 表名 where 字段名判断
SELECT COUNT(*) FROM xxx WHERE 数字类型的字段名>1000; #判断得出个数
SELECT COUNT(*) FROM 表名 WHERE 字段名 IN ('xx', 'xx'); #IN是包含的意思 #扩展用法:统计手机 加 食物 的总个数
#查询所有商品总销量
SELECT SUM (xxx) FROM 表名; #总销量是把所有商品的销量加起来
sum(总和) max(最大值) min(最小值) avg(平均值)
#ROUND(数据, 小数位数)
#select round (avg(字段名),指定留几位小数) from 表名;
SELECT ROUND(AVG(price), xxx) FROM 表名; #只能是数据类型否则为0
/* 分组查询 */
按商品类型分组
SELECT * FROM 表名 GROUP BY xxx; #分组后会返回每组的第一条数据
SELECT category FROM goods GROUP BY category; #获取分组字段
#查询销量大于100的商品,按商品类型分组,统计每组的数量
WHERE xxx>100 #查询销量大于100的商品
SELECT xxx, COUNT(*) FROM 表名 WHERE xxx>100 GROUP BY xxx;
#查询销量大于100的商品,按商品类型分组,统计每组的数量,并只显商品类型数量大于2的数据
HAVING COUNT(*)>2; #只显商品类型数量大于2的数据
SELECT xxx, COUNT(*) FROM 表名 WHERE xxx>100 GROUP BY xxx HAVING COUNT(*)>2;
#查询商品表中数据,跳过前面x条,显示y条
SELECT * FROM goods LIMIT x, y; 跳过的条数是0,可以省略x
-- 扩展查询的七个关键字顺序
SELECT -> FROM -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY -> LIMIT
先查询表里面所有的数据并进行过滤。(此时用where关键字过滤的是表里面的数据,把name为null的给过滤掉了)
然后进行分组,并统计每一组有多少条数据。
利用HAVING关键字对查询的结果再次过滤 把个数大于等于2的展示出来。
对having过滤之后的结果按照个数进行排序
最后再跳过第一个,展示两条数据
SELECT category, COUNT(*) AS 个数 FROM 表名
WHERE NAME IS NOT NULL GROUP BY category
HAVING 个数 >= 2
ORDER BY 个数 ASC
LIMIT 1,2;
-- 约束
CREATE TABLE 表名 (
id INT alter table 表名 add primary key(字段名);
); ALTER TABLE 表名 ADD PRIMARY KEY(id);#添加主键约束
alter table 表名 drop primary key; #删除主键约束
#主键不能重复,不能为空
#一般都是创建表的时候就添加主键约束
CREATE TABLE 表名 (
id INT PRIMARY KEY
); (主键约束)PRIMARY KEY
CREATE TABLE 表名 (
id INT PRIMARY KEY AUTO_INCREMENT
);