SQL中的一些简单语法总结

来源:互联网 发布:注册域名多少钱 编辑:程序博客网 时间:2024/06/05 14:29

不管是做服务端开发还是做安卓开发,对数据库的操作都不可或缺,今天特地总结了一下SQL的一些常用语法。

1.select 用法:

SELECT COLUMN_A FROM TABLB_NAME :从名字为TABLE_NAME的表里面取出名为COLUMN_A的列的值。

SELECT * FROM TABLE_NAME : 取出名字为TABLE_NAME的表里面的所有数据。返回结果在java中对应ResultSet类型数据,while循环取值。

2.select distinct用法:

SELECT DISTINCT COLUMN_A FROM TABLB_NAME:在列名COLUMN_A前面添####加DISTINCT将在结果中过滤调重复的数据。

3.where 用法:

SELECT COLUMN_A FROM TABLB_NAME WHERE COLUMN_B=’B’ : 添加筛选条件,在表中找到列名为COLUMN_B的值为B的记录的COLUMN_A的值。条件中B带有单引号,表示文本,文本应该用单引号,整型不用。<>与!=一样,表示不等于。

4.AND 和 OR 运算符 :

AND 前后的条件必须同时满足才返回数据。SELECT COLUMN_A FROM TABLE_NAME WHERE COLUMN_B = ‘B’ AND COLUMN_C = ‘C’,只有COLUMN_B的值为B 并且 COLUMN_C的值为C的记录的COLUMN_A的值才会被返回。

OR 前后条件只要满足一个就可以返回结果。SELECT COLUMN_A FROM TABLE_NAME WHERE COLUMN_B = ‘B’ OR COLUMN_C = ‘C’,只要记录中存在COLUMN_B的值为B或者COLUMN_C的值为C的记录的COLUMN_A的值都会被返回。

5. order by : 根据制定的列名进行排序,默认按照升序(ASC)进行排列,降序是DESC .

SELECT * FROM TABLE_NAME ORDER BY COLUMN_A : 如果COLUMN_A是整数数据,结果将按照从小到大的顺序进行输出,如果是字母,则是按照拼音的先后顺序进行排列。

SELECT * FROM TABLE_NAME ORDER BY COLUMN_A DESC , ORDER BY COLUMN_B ASC , 查询结果首先按照COLUMN_A进行降序排列,如果COLUMN_A中有重复数据出现,重复的数据将按照COLUMN_B的升序进行排列。

6. INSERT INTO : 向表中插入记录数据。

INSERT INTO TABLE_NAME VALUES(‘VALUES1’,’VALUES2’,’VALUES3’…);这种插入方式往表中插入数据的值需要对应上表的顺序和数量,就是表中所有的列你都要插入数据,并且位置要跟表中的位置对应。

INSERT INTO TABLE_NAME (COLUMN_A , COLUMN_B , COLUMN_C) VALUES(‘VALUESA’,’VALUESB’,’VALUESC’);这种插入方式是给表特定的列插入特定的数据,这中插入方式可以对任意的列进行数据插入,列和值的括号里面要对应上,在列括号里面插入对应值括号里面对应的值。

7. update : 修改表中的数据。

UPDATE TABLE_NAME SET COLUMN_A = ‘VALUES_1’ WHERE COLUMN_B = ‘B’:把记录中列名为COLUMN_B的值为B的记录的COLUMN_A列的值修改为VALUES1 .

UPDATE TABLE_NAME SET COLUMN_A = ‘VALUES_1’ , COLUMN_B=’VALUES_2’ WHERE COLUMN_C = ‘C’ , 把记录中列名为COLUMN_C的值为C的记录的COLUMN_A列的值修改为VALUES1 .COLUMN_B列的值修改为VALUES2.

8.delete : 删除表记录。

DELETE FROM TABLE_NAME WHERE COLUMN_A = ‘A’ : 删除表TABLE_NAME中COLUMN_A列的值为A的列。


以下是稍微复杂一点的

1.top:查询前几条数据。

SELECT TOP 5 * FROM TABLE_NAME : 从TBALE_NAME表中选取前五条数据。(这是在SQL Server MSSQL中用法)

在mysql和oracle和sqlite中都是使用的limit关键字: SELECT * FROM TABLE_NAME LIMIT 5, 跟上面的效果是一样的。

top后面添加整数则是查询前几条,在后面再加percent,就可以选出前多少比例的数据:

SELECT TOP 5 PERCENT * FROM TABLE_NAME

2.like操作符:后面接类似正则表达式进行条件筛选。

SELECT * FROM TABLE_NAME WHERE COLUMN_A LIKE ‘%A’:查询COLUMN_A列值以A结尾的数据记录。

SELECT * FROM TABLE_NAME WHERE COLUMN_A LIKE ‘A%’:查询COLUMN_A列值以A开头的数据记录。

SELECT * FROM TABLE_NAME WHERE COLUMN_A LIKE ‘%A%’:查询COLUMN_A列值包含了A的数据记录。

3. 通配符:必须与LIKE一起使用,可以替代一个或多个字符。

% 替代一个或多个字符

_ 仅替代一个字符

[charlist] 匹配一个单元符,可以是中括号里面的任意一个字符。

[^charlist] 和 [!charlist]:^和!都是非的意思,中括号仍然表示单元符,混合一起就是说,不能包含里面展示出的任一单元符。

[ ] 这个表示的是匹配一个字符

SELECT * FROM TABLE_NAME WHERE COLUMN_A LIKE ‘[HELLO]%’:查询COLUMN_A的值已HELLO任一字符开头的记录。

SELECT * FROM TABLE_NAME WHERE COLUMN_A LIKE ‘H_L_O’:查询COLUMN_A 的值在1,3,5位是HLO的记录,例如HELLO是符合的。

SELECT * FROM TABLE_NAME WHERE COLUMN_A LIKE ‘[!HELLO]%’:查询COLUMN_A 的值的第一个字符不能以HELLO中任意字符开头的记录。

SELECT * FROM TABLE_NAME WHERE COLUMN_A LIKE ‘%HELLO%’:查询COLUMN_A 的值中包含HELLO的记录。

4.IN:在筛选条件中添加一个结果集来控制判断条件。

SELECT * FROM TABLE_NAME WHERE COLUMN_A IN ( ‘VALUE1’,’VALUE2’):查询出COLUMN_A列的值属于值括号里面的集合的记录。

5.BETWEEN… AND…: 查询两个值之间的记录,这两个值可以是数字,也可以是文本

SELECT * FROM TABLE_NAME WHERE COLUMN_A BETWEEN ‘VALUE1’ AND ‘VALUE2’ :查询出COLUMN_A的值在VALUE1和VALUE2之间的数据。在MSSQL中,包括VALUE1,不包括VALUE2,在实际的数据库中,需要具体在去查寻规则。

6. ALIAS : 别名,可以给列名称或者表明称来指定别名。

表: SELECT COLUMN_A FROM TABLE_A AS TABLE_B ;

列: SELECT COLUMN_A AS COLUMN_B FROM TABLE_NAME ;

主要是为了在多表查询的语句中需要指明表的情况下来给一个简单的别名来声明。

SELECT A.COLUMN_A , B.COLUMN_B FROM TABLE_A AS A , TABLE_B AS B WHERE A.ID = B.ID

7. JOIN : 多表联合查询

使用JOIN和INNER JOIN是一样的,只有满足ON条件的时候,才会有结果返回。

JOIN : SELECT A.COLUMN_B , B.COLUMN_D FROM TABLE_A AS A LEFT JOIN TABLE_B AS B ON A.COLUMN_B = B.COLUMN_D;这个会返回所有符合A表中COLUMN_B和B表中COLUMN_D相等的记录中的A表的COLUMN_B和B表中的COLUMNE_D,如果没有符合A表中COLUMN_B和B表中COLUMN_D相等的记录,将返回空。

LEFT JOIN : SELECT A.COLUMN_B , B.COLUMN_D FROM TABLE_A AS A LEFT JOIN TABLE_B AS B ON A.COLUMN_B = B.COLUMN_D ; 首先返回左表所有的的数据,然后把符合A表中COLUMN_B和B表中COLUMN_D相等的记录的B表中COLUMN_D返回,不符合的在B表中COLUMN_D列填null 。

SELECT A.COLUMN_A , B.COLUMN_C , C.COLUMN_B FROM TABLE_A AS A LEFT JOIN TABLE_B AS B ON A.COLUMN_A=B.COLUMN_C LEFT JOIN TABLE_C AS C ON A.COLUMN_A = C.COLUMN_B

多于两个表同样符合这种情况,一一对应。

RIGHT JOIN : 和LEFT JOIN 一样,不过是返回右表TABLE_B的全部数据和符合条件的左表数据。

8.create table : 创建一个表:

CREATE TABLE_A ( COLUMN_A INTEGER PRIMARY KEY ,COLUMN_B VARCHAR(10) , COLUMN_C VARCHAR(10));

创建一个名字叫TABLE_A的表,其中有三列 COLUMN_A :整数类型, 主键 。 COLUMN_B:字符类型,长度最大为10 。COLUMN_C:字符类型,长度最大为10 。

9.ALTER :

ALTER TABLE TABLE_NAME ADD COLUMN COLUMN_A VATCHAR(10): 往TBALE_NAME表中添加一个COLUMN_A的列,字符类型,长度不大于10 。

ALTER TABLE TABLE_NAME DROP COLUMN COLUMN_A : 删除TBALE_NAME中的COLUMN_A的列。

现在的数据种类太多,可能会有些并不通用。

0 0