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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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,'小明')