MySQL基础(二)
一、数据表的修改
总格式:ALTER TABLE tbl_name +具体命令;
1.1添加列的具体命令为:
ADD [COLUMN] column_definition [FIRST | AFTER col_name ]
比如:
ALTER TABLE seckill ADD age INT AFTER NAME;//在seckill表中name列后加一列age
ALTER TABLE seckill ADD age2 INT FIRST;//在seckill表中加一列age(加在第一列)
ALTER TABLE seckill ADD age INT AFTER NAME,ADD age2 INT AFTER NAME;
1.2删除列的具体命令为:
DROP [COLUMN] col_name
比如:
ALTER TABLE seckill DROP age2 ;//删除age2列
ALTER TABLE seckill DROP age2,DROP age; 删除两列
1.3修改列的定义(数据类型或位置)
MODIFY,CHANGE
1.4添加约束具体命令为:
添加/删除主键约束:
ALTER TABLE success_killed DROP
PRIMARY KEY;
ALTER TABLE success_killed ADD
PRIMARY KEY(seckill_id,state);添加/删除唯一约束:
ALTER TABLE success_killed ADD
UNIQUE user_phone;添加/删除外键约束:
ALTER TABLE success_killed ADD
FOREIGN KEY(user_phone) REFERENCES seckill(seckill_id);
二、操作数据表记录
1.增删查改insert,delete,selectk,update(略)
2.where条件(略)
3.group by 语句(把列相同的记录分组整合一起)
我们拥有下面这个 "Orders" 表:
O_Id OrderDate OrderPrice Customer 1 2008/12/29 1000 Bush 2 2008/11/23 1600 Carter 3 2008/10/05 700 Bush 4 2008/09/28 300 Bush 5 2008/08/06 2000 Adams 6 2008/07/21 100 Carter
现在,我们希望查找每个客户的总金额(总订单)。
我们想要使用 GROUP BY 语句对客户进行组合。
我们使用下列 SQL 语句:
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
结果集类似这样:
Customer SUM(OrderPrice) Bush 2000 Carter 1700 Adams 2000
4.having子句(分组条件)
分组可以添加分组的条件语句,但是不能用where子句,得用having子句
在上面3 group by的数据基础上,
现在,我们希望查找订单总金额少于 2000 的客户。
我们使用如下 SQL 语句:
SELECT Customer,SUM(OrderPrice) FROM Orders
GROUP BY Customer
HAVING SUM(OrderPrice)<2000
结果集类似:
Customer SUM(OrderPrice) Carter 1700
5.order by 将查询结果进行排序
ORDER BY 语句默认按照升序ASC对记录进行排序
以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
SELECT Company, OrderNumber FROM OrdersORDER BY Company DESC, OrderNumber ASC
6.limit语句限制查询数量
分两种形式:
一个参数的:SELECT * FROM table LIMIT 5; //检索前 5 个记录行
两个参数的:SELECT * FROM table LIMIT 5,10; //检索记录行6-15 注意是第六行