SQL第二天

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)如果不是参数1null则返回参数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,'小明')
View Code
原文地址:https://www.cnblogs.com/xiaoruirui/p/11337703.html