浅谈SQL--常用SQL语句

日常开发中,避免不了要跟数据库打交道。也就避免不了要使用SQL语句对数据进行“增删改查”操作。那么现在就让我们来走进SQL语言的世界。

sql.png

首先就让我们来了解下究竟什么是SQL?

SQL(Structured Query Language)结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。
结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能。

版本

各种不同的数据库对SQL语言的支持与标准存在着细微的不同,这是因为,有的产品的开发先于标准的公布,另外,各产品开发商为了达到特殊的性能或新的特性,需要对标准进行扩展。迄今为止已有100多种遍布在从微机到大型机上的数据库产品SQL,其中包括DB2、SQL/DS、ORACLE、INGRES、SYBASE、SQLSERVER、DBASEⅣ、PARADOX、MICROSOFTACCESS等。

语句结构

结构化查询语言包含6个部分:
一:数据查询语言(DQL:Data Query Language)

也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。

二:数据操作语言(DML:Data Manipulation Language)

它的语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。

三:事务处理语言(TPL:Things Processing Language)

它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。

四:数据控制语言(DCL:Data Control Language)

它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。

五:数据定义语言(DDL:Data Definition Language)

其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREATE TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。

六:指针控制语言(CCL)

它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。

今天就简单的为大家介绍几种最基本的SQL语句。

创建数据表

1.创建数据表格式

格式: create table 表名 (字段名1 字段类型1, 字段名2 字段类型2, …) ;

示例: create table t_student (id integer, name text, age inetger, score real) ;
2.SQLite数据类型

为了保持良好的编程规范、方便程序员之间的交流,编写建表语句的时候最好加上每个字段的具体类型
建表时声明类型或者不声明类型都可以,也就意味着创表语句可以这么写:
就算声明为integer类型,还是能存储字符串文本(主键除外)

create table t_student(name, age);
3.创建表推荐写法

创建表格时, 最好加个表格是否已经存在的判断, 这个防止语句多次执行时发生错误.
格式: create table if not exists 表名 (字段名1 字段类型1, 字段名2 字段类型2, …) ;
if not exists: 判断表不存在时才创建表.

4.创建表,设置主键(主键自动递增)

SQL不区分大小写,编写SQL规范,最好关键字都使用大写.表名最好加上t_前缀.
PRIMARY KEY: 约束为主键.
AUTOINCREMENT: 自动递增.
创建表SQL语句:

CREATE TABLE IF NOT EXISTS t_student (id integer PRIMARY KEY AUTOINCREMENT, name text, age integer, score integer);

删除表

1.删除表的格式
格式: DROP TABLE IF EXISTS 表名;
2.删除表示例
删除表SQL语句: DROP TABLE IF EXISTS t_student;

修改表(重命名表)和添加字段

1.重命名数据表的格式
格式: ALTER TABLE 旧表名 RENAME TO 新表名;
2.重命名表示例
重命名表SQL语句: ALTER TABLE t_student RENAME TO t_person;

数据表添加字段

1.数据表添加字段的格式
格式: ALTER TABLE 表名 ADD COLUMN 字段名 数据类型 限定符
2.数据表添加字段示例
数据表添加字段SQL语句: ALTER TABLE t_student ADD COLUMN address text;

DML数据库操作操作(增删改)

插入数据(insert)

1.插入数据格式注意: 数据库中的字符串内容应该用单引号 ’ 括住;
格式:insert into 表名 (字段1, 字段2, …) values (‘字段1的值’, ‘字段2的值’, …) ;
2.插入数据示例
示例:INSERT INTO t_student (name, age) VALUES ('James', 18);

更新数据(update)

1.更新数据格式
格式:update 表名 set 字段1 = 字段1的值, 字段2 = 字段2的值 where 条件;
2.更新数据示例注意: WHERE 条件是=号,不是==号.
 示例:UPDATE t_student SET age = 19 WHERE name = 'James';

删除数据(delete)

1.删除数据格式
格式:delete from 表名 where 条件;
2.更新数据示例
示例:DELETE FROM t_student WHERE name = 'James';

DQL数据库查询语句(查询)

1.查询数据格式
格式1:select * from 表名;

*表示:通配符,表示所有字段.格式2:select 字段1, 字段2, … from 表名;
格式3:select 字段1, 字段2, … from 表名 where 条件;

2.查询数据示例
示例1:SELECT * FROM t_student;
示例2:SELECT name, age FROM t_student;
示例3:SELECT name, age FROM t_student where name = 'James';

查询相关语句

统计查询

1.count(X):计算记录个数
计算所有记录个数:SELECT count(*) FROM t_student;
计算age有值的记录个数(Null不计算在内):SELECT count(age) FROM t_student;
2.avg(X):计算某个字段的平均值。
3.sum(X):计算某个字段的总和。
4.max(X):计算某个字段的最大值。
5.min(X):计算某个字段的最小值。

排序查询

1.升序ASC

格式:SELECT 字段1(或*) FROM 表名 ORDER BY 要排序的字段名 ASC;

示例:SELECT * FROM t_student ORDER BY age ASC;
2.降序

格式:SELECT 字段1(或*) FROM 表名 ORDER BY 要排序的字段名 DESC;

示例:SELECT * FROM t_student ORDER BY age DESC;
3.多个字段排序

格式:SELECT * FROM 表名 ORDER BY 字段名1 排序类型, 字段名2 排序类型;

示例:SELECT * FROM t_student ORDER BY age ASC, score DESC;

limit分页查询

1.limit分页查询

格式:select * from 表名 limit 数值1, 数值2 ;

 示例:SELECT * FROM t_student LIMIT 4, 8;//跳过最前面4条语句,然后取8条记录.
2.查询第n页的数据假设一页显示5条数据.
示例:SELECT * FROM t_student LIMIT 5*(n-1), 5;
3.特殊案例
示例:select * from t_student limit 7;
相当于:select * from t_student limit 0, 7;

多表查询

1.多表查询数据

格式:select 字段1, 字段2, … from 表名1, 表名2;

别名

应用场景: 当两个表的字段同名时,可以使用别名来区分不同表同名字段.

1.数据表别名

格式:select 别名1.字段1 as 字段别名1, 别名2.字段2 as 字段别名2, … from 表名1 as 别名1, 表名2 as 别名2 ;

可以给表或者字段单独起别名, as 可以省略.

表连接查询

格式: select 字段1, 字段2, … from 表名1, 表名2 where 表名1.id = 表名2.id;

SQL特点

1.一体化:SQL集数据定义DDL、数据操纵DML和数据控制DCL于一体,可以完成数据库中的全部工作。
2.使用方式灵活:它具有两种使用方式,即可以直接以命令方式交互使用;也可以嵌入使用,嵌入到C、C++、FORTRAN、COBOL、JAVA等主语言中使用。
3.非过程化:只提操作要求,不必描述操作步骤,也不需要导航。使用时只需要告诉计算机“做什么”,而不需要告诉它“怎么做”。
4.语言简洁,语法简单,好学好用:在ANSI标准中,只包含了94个英文单词,核心功能只用6个动词,语法接近英语口语。

sql.jpg

以上就是一些常用的SQL语句,欢迎大家补充一起学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容