Mysql 知识点总结
官网:社区版下载:http://downloads.mysql.com/archives/community/
1、什么是SQL
SQL:结构化查询语言.
Sql数据库备份:
数据库的备份是指将数据库转换成对应的sql文件。
数据库导出sql脚本的格式:
l mysqldump -u用户名 -p密码 数据库名>生成的脚本文件路径
例如:
mysqldump -uroot -pwangyunhong day0401>d:\day04.sql
以上备份数据库的命令中需要用户名和密码,即表明该命令要在用户没有登录的情况下使用
Sql数据库恢复:
数据库的恢复指的是使用备份产生的sql文件恢复数据库,即将sql文件中的sql语句执行就可以恢复数据库内容。因为数据库备份只是备份了数据库内容,所以备份产生的sql文件中没有创建数据库的sql语句,在恢复数据库之前需要自己动手创建数据库。
在数据库外恢复:
格式:mysql -uroot -p密码 数据库名 < 文件路径
例如:mysql -uroot -p1234 day0401<d:\day04.sql
注意:要求数据库必须先创建出来.
在数据库内恢复:
格式:source SQL脚本路径
例如:source d:\day0401.sql
注意:使用这种方式恢复数据,首先要登录数据库.
2、SQL的分类
DDL:数据定义语言.
create,alter,drop...
DML:数据操纵语言
insert,delete,update
DCL:数据控制语言
if,grant
DQL:数据查询语言.
Select
DQL语句操作总结:
综合我们学习的查询相关关键字:select,from,where,group by,having,order by;它们的执行顺序是如下:
lfrom:首先执行from,找到要查询的表;
lwhere:判断条件,筛选符合条件所有记录;
lgroup by:根据之前操作对记录按照指定列进行分组
lhaving:对分组后的信息进行筛选;
lselect:选择所需要的列信息;
lorder by:对查询信息进行排序。
在SQL语言中,第一个被处理的子句是from字句,尽管select字句最先出现,但是几乎总是最后被处理。
3、修改表语句
3.1、单表约束:
* 主键约束:primary key
* 唯一约束:unique
* 非空约束:not null
3.2、修改表
- 修改表名称
格式:
1.alter table 表名 rename [to] 新表名;
2.rename table 表名 to 新表名;
- 添加字段(列) add
格式:alter table 表名 add [column] 字段描述;
例如:alter table user add column memo varchar(100);
- 修改字段(列)类型 modify
格式:alter table 表名 modify [column] 新字段描述
例如:alter table user modify memo int;
- 修改字段(列)名称 change
格式:alter table user change [column] 旧字段名称 新字段描述;
例如: alter table user change memo introduce varchar(100);
- 删除字段(列) drop
格式:alter table 表名 drop [column] 列名;
例如:alter table user drop introduce;
- 单表语句
4.1、模糊查询
Select * from table where 字段 like ‘% %’;
4.2、范围查询in
Select * from table where 字段 in ();
4.3、降序、升序
Select * from table order by 字段 acs (desc)
4.4、聚合函数
Sum ()、avg()、main()、count()
4.4.1、求和
Select sum(字段) from table
4.4.2、平均值
Select avg(字段) from table
4.5、分组(group by)
Select * from table group by 字段
5、表间添加外键约束
CREATE TABLE category(
cid VARCHAR(32) PRIMARY KEY ,
cname VARCHAR(100) #分类名称
);
CREATE TABLE `products` (
`pid` VARCHAR(32) PRIMARY KEY ,
`name` VARCHAR(40) ,
`price` DOUBLE
);
//向products表中添加外键category_id
ALTER TABLE products ADD COLUMN category_id VARCHAR(32);
//进行外键约束
ALTER TABLE products ADD CONSTRAINT product_fk FOREIGN KEY (category_id) REFERENCES category (cid);
6、多表关联查询
向数据库中添加相应的表和数据:
题目:查询哪些分类的商品已经上架。
6.1、交叉连接查询
交叉连接查询(基本不会使用-得到的是两个表的乘积)。
SELECT cname FROM category c , products p WHERE c.cid=p.category_id
6.2、内连接查询
使用的关键字 inner join -- inner可以省略。Didtinct关键字,去除重复。
6.2.1、隐式内连接
SELECT DISTINCT cname FROM category c , products p WHERE c.cid=p.category_id
6.2.2、显示内连接
SELECT DISTINCT cname FROM category c INNER JOIN products p ON c.cid=p.category_id
6.3、外连接查询
题目:查询所有商品上架的个数。
6.3.1、左外连接
SELECT cname , COUNT(category_id) FROM category c LEFT OUTER JOIN products p ON c.cid = p.category_id GROUP BY cname;
6.3.2、右外连接
SELECT cname , COUNT(category_id) FROM category c right OUTER JOIN products p ON c.cid = p.category_id GROUP BY cname;
6.4、子查询
题目:查询“化妆品”上架商品详情
SELECT * FROM products WHERE category_id = (SELECT cid FROM category WHERE cname = '化妆品')
6.5、分页查询
分页查询每个数据库的语句是不通用的.
MYSQL:使用limit的关键字.
* select * from product limit a,b; --a:从哪开始,b:查询多少条.
Oracle:使用SQL语句嵌套.
SQLServer:使用top的关键字.