一句sql语句在mysql中_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);

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

第一句结果为:

27951b703243080af67e82c5865aa3d3.png

第二行结果为:

8436370644df6c82d51e18fd74325f94.png

第三行结果为:

21:22:43insert into ordered values("","93-12-15",3)Error Code: 1366. Incorrect integer value: '' for column 'o_num' at row 10.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_namewhere 限制条件;

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

查询不重复的结果

select distinct 列名,... from table_name;

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

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

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

将查询结果按列名分组

select 列名,... from table_namegroup 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表这样

16a053d0caf65882f0562104494ddea3.png                                     

f48a72886e24110db44116bb4cf042df.png

执行完左连接语句:select user1.a,b,c from user1 left outer join user2 on user1.a=user2.a;

结果是这样

082001d03b6f74d7220e2e7a1ff432b2.png  也就是说左外连接会将右表的数据根据user1.a=user2.a匹配插入到左表中,若左表一行中有数据而右表没有,则该数据用null代替。

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

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

结果为

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值