SQL 语句的第二部分(MySQL中使用)

   对表的数据的增删查改

(前言,一般来说sql语句中的关键字需要大写,这样比较规范,但是我为了好认用了小写)

(因为mysql是不区分大小写的,所以全部小写也是会执行的)

   向表中增加数据

    insert into table_name (列1名,列2名,列3名,....)

   values("列1值","列2值","列3值",.....);

   需要注意的是有时我们并不需要特别的写出列名,因为我们已经知道有哪些列,有几列,所以       我们可以直接写出values;

    而且对于自动递增的列我们可以使用null来代替它,这样在数据书中该行中该列的值会自动输入上一行该列的值加一;但是我们不能用空字符串来代替它,这样会报错,因为他们的数据类型是不同的。如图所示:

insert into ordered values("21","93-12-12",1);
insert into ordered values(null,"93-12-14",2);
insert into ordered values("","93-12-15",3);

   首先第一列是自动递增的,然后输入以上三个语句,

 

  第一句结果为:

   第二行结果为:

   第三行结果为:

21:22:43	insert into ordered values("","93-12-15",3)	Error Code: 1366. Incorrect integer value: '' for column 'o_num' at row 1	0.000 sec

 

 

    查询表中数据

    select 所查询的字段 from table_name where 限制语句 [group by 字段] [having <>] [order by 列名 desc或] [limit 限制查询结果行数]

   上面的语句where 和后面的限制语句都是可选的,接下来我们一一说明他们的用法。

   首先是查询全表

    select *from table_name;    *符号是一种通配符 代表所有字段。

    查询表中的几个列

     select 列名,列名,... from table_name;      列名即字段名,查询表中的指定字段,字段名可多个也可以一个。

     查询时使用where限制条件

    select 列名,... from table_name where 限制条件;

    关于限制条件的几种方式可以点击这里查看。

     

    查询不重复的结果

     select distinct 列名,... from table_name;

 

    对查询结果进行排序   根据order by 后面的列排序 

     select 列名,... from table_name order by 列名 [desc or asc];

     desc示从上到下是降序,asc表示升序,默认是升序排列。

 

      将查询结果按列名分组

       select 列名,... from table_name  group by 列名;

      通常 group by语句是配合sql函数一起使用的,关于函数问题我们以后再细说

 

      查询分组过后的使用添加的限制条件

      select 列名,... from table_name  group by 列名 having 限制条件 ;

      该条语句通常也需要搭配sql函数使用。

 

      group by后添加with rollup关键字

      select 列名,... from table_name  group by 列名 with rollup

      该关键字可以是查询结果多出一行 这一行来表示查询记录的总和。

 

      根据多字段分组

      select 列名,... from table_name  group by 列名,列名,...;

      这个时候会先按第一个列名进行分组,然后在第一个列名值相同的情况下按第二个列名分组,第三个依次类推,

     限制查询结果的条数

     select 列名,... from table_name limit[n,m];

     n的值是查询结果的位置偏移量(当前行数-第一行的值),即如果要从第一行开始显示,n=0 (ps:1-1);从      第二行,n=1,(ps:2-1);第三行的话 n=2,(ps:3-1).

     m的值是指定返回的查询结果条数(这个应该很好理解)

 

   多表查询

   一般来说,多表查询需要多个表中有相同意义的字段,字段名字可能不同

   连接查询:⑴ 内连接查询

    select 字段1,字段2,字段3,字段4 from 表1 inner join 表2 on 表1.相同意义字段名=表2.相同意义字段名 ;

其中字段1234可能分别属于表1表2, 其实这个语句还有另外一种写法。

      select 字段1,字段2,字段3,字段4 from 表1,表2 where 表1.相同意义字段名=表2.相同意义字段名;

      而为什么不用第二种写法是因为第一种写法可以明确指出连接条件,而且where子句在有些时候影响查询条件。

 

  ⑵外连接查询

   外连接又分为左连接和右连接,

   左连接:返回左表中全部记录和右表中连接字段相等的记录,

  比如  user1表这样                   user2表这样
                                     
 执行完左连接语句:select user1.a,b,c from user1 left outer join user2 on user1.a=user2.a;
 结果是这样
  也就是说左外连接会将右表的数据根据user1.a=user2.a匹配插入到左表中,若左表一行中有数据而右表没有,则该数据用null代替。

 

   而右外连接则是这个语句,

select user1.a,b,c from user1 right outer join user2 on user1.a=user2.a;

结果为
因为查询的字段是user1.a所以结果中a字段的第4行为null,右外连接就是左外连接的反过来。
 
 

      

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值