DDL
对表的增删改
创建表
Create table 表名(字段 数据类型,。。。)engin=..,charset=utf8
修改表
改表名:
Alter table 表名 rename 新表名
添加属性
Alter table 表名 add 字段 数据类型
删除列
Alter table 表名 drop 列名
删除表
Drop table 表名
MDL
增删改查
增:
Insert into 表名 (字段,。。。) values(值)
删:
Delete from 表名 where 条件
改
Update 表名 set 字段=值 where 条件
查:
Select 表属性 from 表名 where 条件
数据备份
最好使用管理员权限
cmd命令:mysqldump -uroot -p密码 表名>文件位置/表名.sql:备份
添加:mysql -uroot -p密码 表名<文件位置/
多表查询
Select * from 表一,表二
这样会出现一个问题笛卡儿积,造成数据的叠加,消除笛卡儿积的方式
内链接
显示内链接:
Select * from 表名1,表名2 where 表1.字段=表2.字段
隐式内链接:
Select * from 表1 inner join 表二 on 表1.字段=表2.字段
外连接
左外连接(以左表为基础,没有的数据就显示为null)
Select * from 表1 left join 表二 on 表1.字段=表2.字段
右外连接(以右表为基础,没有的数据就显示为null)
Select * from 表1 right join 表二 on 表1.字段=表2.字段
自连接
Select * from 表名 表1 inner join 表1 on 表1.字段=表2.字段
子查询
Select * from 表名 where 字段 >(Select 字段 from 表名)
Select * from 表名 where (字段1,字段2) >(Select 字段1,字段2 from 表名)
函数
Min,max,sum,avg
Cost 与convert都是转化数据类型用法不同
Cost(值 as 数据类型),convert(值,数据类型)
Ifnull(参数1,参数2)如果不是参数1为null则返回参数2

CREATE TABLE xs(id int(2),name VARCHAR(2))ENGINE=INNODB CHARSET=utf8
修改表名
ALTER TABLE xs RENAME study
添加字段
ALTER TABLE study add sex VARCHAR(2)
修改字段类型:
ALTER TABLE study MODIFY sex int(2)
删除字段
ALTER TABLE study drop sex
删除表
DROP TABLE study
新增
insert INTO student (name,age) VALUES('小张',20)
修改
UPDATE student SET name='小路' WHERE id=4
删除
DELETE FROM student WHERE id=3
查询
SELECT * FROM student
查询货品id,货品名称,货品所属分类名称
查询零售价大于200的无线鼠标
SELECT p.id,p.productname,pd.dirname FROM product p INNER JOIN productdir pd on p.dir_id = pd.id
查询零售价大于200的无线鼠标(使用表的别名)
SELECT p.*,pd.dirname FROM product p INNER JOIN productdir pd on p.dir_id=pd.id WHERE p.saleprice>200 AND pd.dirName='无线鼠标'
查询每个货品对应的分类以及对应的库存
SELECT p.*,pd.dirName,ps.store_num FROM product p INNER JOIN productdir pd ON p.dir_id=pd.id INNER JOIN product_stock ps ON p.id=ps.product_id
如果库存货品都销售完成,按照利润从高到低查询货品名称,零售价,货品分类(三张表).
SELECT
p.*, pd.dirname ,(p.saleprice - p.costprice) lr
FROM
product p
INNER JOIN productdir pd ON p.dir_id = pd.id
INNER JOIN product_stock ps ON p.id = ps.product_id
ORDER BY lr
查询每种商品分类的名称和包含的商品库存总数
SELECT
p.*,
ps.store_num
FROM
product p
INNER JOIN product_stock ps ON p.id = ps.product_id
查询零售价比罗技MX1100更高的所有商品信息
SELECT * FROM product WHERE saleprice>(SELECT saleprice FROM product WHERE productname='罗技MX1100')
查询分类编号和折扣与罗技M100相同的所有商品信息。
SELECT * FROM product WHERE (dir_id,cutoff)=(SELECT dir_id,cutoff FROM product WHERE productname='罗技MX1100')
SELECT IFNULL(null,'小明')
