SQL语句

SQL分类

SQL语句主要分为以下几类:
  • DDL(Data Definition Language)语句:数据定义语言。这些语句包括不同的数据段,数据库,表,列和索引等数据库对象的定义。常见的关键字有create、alter和drop。
  • DML(Data Manipulation Language)语句:数据操纵语言。用于添加,删除,更新和查询数据库记录,并检查数据的完整性。
  • DCL(Data Control Language)语句:数据控制语言。用于控制不同数据段直接的许可和访问级别的语句。主要的关键字包括grant和revoke等。

DDL

(1)创建数据库
create database dbname
(2)删除数据库
drop database dbname;
(3)创建表
create table tbname (col_name_1 col_type constrains,...,)engine='MyISAM'(InnoDB)  default chaset ='gbk'(utf)
(4)删除表
drop table tbname
(5)修改表
修改表类型:alter table tbname modify col_name col_definition
增加表字段:alter table tbname add [column] col_name column_definition
删除表字段:alter table tbname drop [column]  col_name
字段改名:alter table tbname change old_col_name new_col_name column_definition
修改字段排列顺序:add/change/modify,有一个可选项first、after col_name,这个选项用来修改字段在表中的位置,默认ADD增加的新字段是加载表的最后位置
修改表名:alter table tbname rename new_tbname

modify和change都可以修改字段的定义,但是change需要写两次表名,但是modify只需要写一次;但是change可以修改字段的名称,而modify则不可以。
字段增加和修改语法(ADD/CHANGE/MODIFY)中,都有一个可选项first|after column_name,这个字段可以用来修改字段在表中的位置,默认ADD增加的新字段是加在表的最后位置,而change/modify默认都不会改变字段的位置。

DML

(1)插入记录
insert into tbname (field1, field2, field3, ... ,fieldn) values(value1,value2,value3, ... ,valuen)

insert语句可以一次性插入多条记录:
insert into tablename (field1, field2, field3, ... ,fieldn)
values
(record1_value1, record1_value2, record1_value3, ... ,record1_valuesn),
(record1_value1, record1_value2, record1_value3, ... ,record1_valuesn),
.......
(recordn_value1, recordn_value2, record1_value3, ... ,recordn_valuesn)

insert into tbname select *,从一个或者多个表中向一个表中插入多行数据
load data (local) infile filename into tbname,高速的从一个文本文件中读取行,并装入一个表中。文本文件的名称必须为一个文字字符串。local表示filename是本地的文件。
replace into tbname select *,类似于insert into tbname select *,如果表中的一个旧记录与一个用于或一个PRIMARY KEY索引或者UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。
(2)修改记录
update tbname set field1=value1, field2=value2, ... fieldn=valuen where condition
(3)删除记录
delete from tbname where condition
(4)查询记录
查询不重复的记录

 使用distinct进行实现。


条件查询

有时用户只需要根据限定条件来查询一部分数据,用where关键字可以来实现这样的操作。
结果集中将符合条件的记录列出来。where后面的条件可以是=,<,>,>=,<=,!=等比较运算符
多个条件之间还可以使用or,and 等逻辑运算符进行多条件联合查询。


排序和限制

使用关键字order by,其中DESC是按照字段进行降序排列,而ASC是按照字段进行升序排列。
order by后面可以跟多个不同的排序字段,并且每个排序字段可以有不同的书序排序。


对于排序后的记录,如果希望只显示一部分,而不是全部。这是,就可以使用LIMIT关键字来实现。limit的语法如下
SELECT ......[LIMIT offset_start, row_count],其中offset_start表示记录的起始偏移量,row_count表示显示的行数。


聚合
  1. 常见的聚合函数有max,min,sum,count
  2. group by关键字表示要进行分类聚合的字段
  3. having表示对分类后的结果再进行过滤的结果;
  4. having和where的区别在于having是对聚合后的结果进行条件的过滤,而where是在聚合前就对记录进行过滤。
  5. 如果逻辑允许,我们尽可能用where先过滤条件,这样因为结果集减小,将对聚合的效率大大提高。 
  6. with rollup是可选语法,表明是否对分类聚合后的结果进行再汇总。


表连接

    外连接

    1. 左连接:包含所有左边表中的记录甚至是右边表中没有和他匹配的记录
    2. 右连接:包含所有右边表中的记录甚至是左边表中没有和他匹配的记录
    3. 完全外连接:MySQL不支持完全连接

    内连接
    内连接选出两张表中互相匹配的记录。


    子查询

    当进行查询的时候,需要的条件是另外一个select语句的结果,需要使用子查询。
    关键字包括in,not in,=,!=,exist,not exist

    如何子查询记录数唯一,还可以使用=代替in。


    记录联合

    结果合并到一起显示。
    union all是把结果集合直接合并在一起。
    union是将union all后的结果进行一次distinct后,取出重复记录后的结果。

    DCL

    (1)grant
    授予权限, grant select,insert on table_name to 'username'@'localhost' identified by password
    (2)revoke
    收回权限,revoke insert on table_name from 'username'@'localhost'
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值