一直做web开发,虽然也经常用sql语句,也做一些数据库性能调整和备份,但总体感觉是不太专业,所以抽个时间深入的学习一下mysql,毕竟一般的公司是没有专职的dba的。
这是第一节,就写sql语句的汇总。
sql语句分为三种:
1、ddl:数据定义语言,主要是定义数据库、表、索引等数据库对象,主要的语句就是create、drop、alter等。
2、dml:数据操纵语言,这是web开发者最熟悉的,主要是用来维护数据库记录,selelct、insert等。
3、dcl:数据控制语言,就是管理访问权限的,如grant、revoke。
一、ddl:数据定义语言
show databases;
show tables;
create database name;
create table name;
desc tablename;
show create table tablename;
drop database name;
drop table name;
alter table tname modify column column_definition first|after col_name
alter table tname add column column_definition first|after col_name
alter table tname change column old_col_name column_definition first|after col_name
alter table tname rename newname;
这些是开发人员最不常用的,都是拿图形化工具修改的。
二、dml:数据操纵语言
这里主要说几个不太常用的用法。
1、使用insert一次插入n条记录
insert into table (filed1,......) values
(val1_1,......),
(val2_1,......);
2、使用update更新多个表中的数据
update t1,t2 set t1.filed=x, t2.filed=y where.....
3、使用delete删除多个表中的数据
delete from t1,t2 where ......
4、limit关键字
这个关键字后面可以跟两个参数,也可以只跟一个参数。
跟两个参数的情况:
limit offset, count。
跟一个参数的情况:
limit count。
5、having和where
这两个关键字的后面都可以跟随条件,但性质不同。
having是在汇总之后对记录集进行过滤,二where则是在汇总之前就要过滤。
6、三种连接
内连接、左连接、右连接。
内连接:只列出相互匹配的记录
左连接:显示左边表的所有记录,右表不匹配就用null代替
右连接:显示右边表的所有记录,左表不匹配就用null代替
7、子查询
所谓的子查询,就是在查询的时候,需要的条件是另外一个select的结构,常用的关键字:in、not in、exists、not exists。
子查询是4.1以后的版本才有的功能。
8、unio和union all
union就是将union all的结果进行了一次distinct