> 数据库 > MySQL >

mysql:SQL语句的分类及使用

DDL(Data Definition Languages)语句:
数据定义语言,定义不同的数据段,数据库,表,列,索引等数据库对象。
常用的关键字 create,drop,alter等,简单的说,就是对数据库内部的对象进行创建、删除、修改的操作语言。


1.create
create table 表名;                                    创建表
create database 数据库名;               创建数据库

2.drop
drop table 表名;                                       删除表
drop database  数据库名                         删除数据库


3.修改表
 改表名:   alter  table  旧表名  rename     新表名                                                   
 
修改属性类型:   alter table  表名  modify  属性名  新属性类型                                             
 
修改属性名和属性类型:alter table 表名   change  旧属性名  新的属性名  属性类型               
增加字段: alter table 表名  add  属性名  属性类型   【完整约束】             
 
删除字段:alter table 表名  drop  属性名  ;                                 
 
修改属性排序: alter table 表名  modify 属性名 属性类型 after  属性名 属性类型         
 
修改表的存储引擎: alter table 表名  engine=innodb\myisam;                 
DML(Data Manipulation language):数据操纵语句,用于添加,删除,更新和查询数据库的记录,并检查数据完整性,常用的语句关键字主要包括insert ,delete,udpate,select;
 

1.插入记录
insert into 表名(字段1,字段2,....) values(value1,value2,...)

2.更新记录
update 表名  set  字段1=值1,字段2=值2,......where  [condition]

3.删除记录
delete from 表名  [where condition]

4.查询记录
select * from 表名 【where contion】

4.1查询不重复的记录
  select  distinct  字段名  from 表名;

4.2多条件查询
在很多情况下,用户并不需要查询所有的记录,而只是需要根据限定条件来查询一部分数据,用where关键字可以实现这样的操作。
select * from 表名 where【contion】  
where之后可以是 =  > < !=  or and 

4.3排序和限制
select * from 表名  order by 字段名 【desc|asc】
order by后面可以跟多个字段
对于排序后的数据希望只显示一部分,使用limit关键字来实现;
select   ....................  limit  [offset_start,row_count]
offset_start 表示起始位置;
row_count 表示显示的行数;

4.4聚合
很多情况下,我们需要进行一些汇总操作,比如统计整个公司的人数或者统计每个部门的人数
select [字段名1,字段名2,字段名3,.....] fun_name            from   表名
[where contiton]
[group by 字段名1,字段名2,.....]
[with rollup]
[having where_contion];
fun_name 聚合函数   sum,count,max,min
group by 关键字表示要进行分类聚合的字段,
with rollup 可选语法,表明是否对分类聚合后的结果进行再汇总,
having 表示对分类后的结果再进行条件过滤。
where和having的区别:
having是对聚合后的结果进行条件过滤
where是在聚合前就对记录进行过滤。

(5)表连接
当需要同时显示多个表中的字段时,就可以用表连接来实现这样的功能。
表连接分为内连接和外链接,内连接仅仅选出两张表中相互匹配的记录,而外链接会选出其他不匹配的记录。
外连接分为左连接和右连接。
左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录
select * from   左表名  left join   右表名   on  左表名.字段=右表名.字段
右连接:包含所有的右边表中的记录甚至左边表中没有和它匹配的记录。
select * from   左表名  right  join   右表名   on  左表名.字段=右表名.字段

(6)子查询 
某些情况,当我们查询的时候,需要的条件是另外一个select语句的结果,这个时候,就要用到子查询。
用于子查询的关键字主要包括in ,in not   =  !=   exists  not exists

(7)记录联合
经常会碰到将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示出来,
需要用到union 和union all 关键字
select 字段名 from 表名1
union all  |union
select 字段名  from 表名2
union与union all主要区别:
unino all把结果集直接合并在一起,union是将union all 后的结果进行一次distinct,去除重复记录后的结果。
DCL语句:主要是DBA用来管理系统中的对象权限时所使用。
dcl数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。定义了数据库,表、字段、用户的访问权限和安全级别。主要包括grant,revoke;



(责任编辑:IT)