浅谈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个动词,语法接近英语口语。