首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL基础

从今天开始,就要正式和SQL语句接触了。我们主要以MySQL的语句举例说明,其它类型的RDBMS语句也大同小异,只有个别地方有所区别。

SQL书写基本规则

1.每一条语句,最后必须以分号(;)结尾。

2.语句的关键字(具有一定功能)、表名、列名都对大小写不敏感,也就是说不区分大小写。尽管如此,为了便于理解,有时也可将关键字和表的首字母大写。

3.语句的内容之间,要用空格分开,不要连在一起写。

数据库和表的创建

首先我们当然要建立一个自己的数据库了,像之前那样用命令行登录MySQL。然后用create database name;语句来建立你数据库,这里的name就是你要创建的库的名字:

这里我们建立了一个名为“shell”的数据库。库的名称包括之后的表名、列名,只能用英文字母、数字和下划线(_)来创建。之后我们就要在库里面创建表了,需要先声明表名、列名等其他内容:

如上图,我们创建了一个叫做‘cargo’的表,下面有3列内容:最左边是列的名字,可以看到共有6列,中间是列的数据类型,右边是列的约束条件,最下面一行primary key也是约束条件。

其中,列的数据类型必须声明。上图共出现了4种数据类型,我们挨个来看。首先是CHAR(3),代表固定长度字符串,括号中的3代表字符串的最大长度为3,若长度小于3,会自动补齐。其次是DATE,代表日期类型,意思就是date这一列都是日期类的数据。接着是VARCHAR(50),代表可变长度字符串,括号中的50同样表示最大长度为50,但若长度小于50,不会自动补齐。最后是INTEGER,代表整数型,意味着这一列只能输入整数,不能输入小数。

再来看看约束的设置,上图中id、name、type这三列设置了NOT NULL的约束,意为这几列的数据不能为空,必须得填上。最后一行PRIMARY KEY是主键约束,主键保证这一列数据唯一。也就是说id列中的数据不能重复,唯一确定一行。

至此,我们就将表格的框架搭好了,下面就该往“shell”表里插入数据了:

start transaction表明要开始的事务,最后的commit表示提交事务。中间就是我们要插入的语句,insert into + 表名 + values(数据);插入时都是按一行一行来插,所以数据必须与其对应的列的类型相匹配。在表名和数据值之间我们省略了列名,意味着我们要对所有的列插入数据;如果只想对个别列插入数据,在表名后面加上对应的列的名字即可。

增删改查

插入数据后,我们如何查看表中的内容呢?可以用以下语句来实现:

select 后面的*代表选择所有列(数据量较大时,不建议这样写),一般我们选取其中几列就可以:

如果这个表作废,我们想删除掉呢?可以使用

drop table shell;

需要注意的是,删除掉的表是无法恢复的,所以要谨慎操作。

如果想在表中添加某些列呢?

alter table shell add column 列名 数据类型;

删除某一列:

alter table shell drop column 列名;

改变表的名字:

rename table shell to 新表名;

为列设定别名

有时为了方便查询和便于理解,我们会给列名设定一个其他的名字。只需在原列名后加入AS关键字即可:

注意,如果别名是中文,必须用双引号(英文状态)括起来才可以。as关键字同样不区分大小写。

select语句后也可以有常数:

如上图,结果会将每一行都加入此常数。这个常数可以是字符串、数字,也可以是日期。

删除重复行

如果我想知道这个表总共有多少种类型的数码产品呢?我们需要用distinct关键字来去重:

可以看到,去重后,共有5种类型。原来我们有6行数据,有2行是重复类型。如果distinct作用于多列,只有这几列的行数据完全一致,才会被删除。

where语句筛选行

之前我们的查询结果都是返回的所有行,如果我只想要其中一部分的数据呢?比如:

上图只返回了电脑类型的一些列,而其他手机、耳机等类别被where语句筛选掉了,where关键字后面跟一些条件表达式即可。

最后需要注意的是,SQL中语句的书写顺序是固定的,不可随意更改。正确的顺序如下:

select...

from...

where...;

一个语句最后的分号必须要写,切记!

今天的内容到此结束,SQL语句的长征才刚刚开始。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190127G06DY100?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券