sql 语句的基本知识,比较杂。

来源:互联网 发布:java 生成流程图 编辑:程序博客网 时间:2024/06/03 17:13

基本用法

1增

INSERT INTO table_name VALUES (value1,value2,value3,...);

2删

DELETE FROM table_name WHERE some_column=some_value;

3改

UPDATE table_name SET column1=value1,column2=value2,... WHERE some_column=some_value;

4查

SELECT column_name,column_name FROM table_name;

除了上面的基本用法,sql还有一些函数及替他关键字的用法

LIKE用法

在查找一个不确定的字段,这个字段的一部分能够确定的时候用like关键字 比如 我要找出中国所有以“江”命名的河流。可以这样写:

SELECT * FROM tb_river where name like ‘%江’

like后面的%是通配符代表所有字符。这样查出的结果可能有黑龙江,湘江,松花江,长江,金沙江,嫩江....等

通配符

百分号%:可匹配任意类型和长度的字符,如果是中文,请使用两个百分号即%%。 
  下划线_:匹配单个任意字符,它常用来限制表达式的字符长度。
  方括号[]:指定一个字符、字符串或范围,要求所匹配对象为它们中的任一个。[^]:其取值也[] 相同,但它要求所匹配对象为指定字符以外的任一个字符。
如“%go_gle [^ia]%”可以匹配到   "because goegle has a good plan." 但是匹配不到 "I think google is a good company"
需要注意的是 不同的数据库支持的通配符可能会不同 比如access 数据库就不支持%,而是用*代替%。比如 sql server  下'banana%'在access 下的写法应该是'banana*'。在用到特定数据库的时候再具体查那个数据库的用法吧
Trim和replace函数
在处理数据库中的数据时往往需要去掉数据头或尾的空格,这时候就用到trim函数了,不同数据库对此支持不同,有的还支持ltrim(去除左边的空格)和rtrim(去除右边的空格)。sqlserver不支持trim只支持后两个。如果我需要去除前后的空格则sql语句可以这样写:
update table set col =rtrim(ltrim(col))
有的时后要去掉的并不是空格可能是一些别的字符甚至是不可见的特殊字符比如换行符。这时候就用到了replace函数。这个函数有三个参数,第一个参数是原字符串,第二个参数是要替换的字符串,第三个参数是替换目标。比如去掉回车换行符的sql这样写:
update table set col =replace(col,CHAR(13)+CHAR(10), '');
其中CHAR(13)和CHAR(10)分别表示回车和换行。顺序千万不要弄错,否则达不到想要的效果。既然这样,那么我怎么知道我该replace掉回车换行还是换行回车还是其中某一个还是另外看不见的字符呢?下面又有一个函数可以帮助你。
instr和charindex函数
instr和charindex功能一样用法也相似,不同数据库支持不同。sqlsever只支持charindex。下面以charindex为例。

CHARINDEX ( expression1 , expression2 [ , start_location ] )

Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在expression2中找expression1的位置,如果不存在返回0而不是-1

如果想知道数据中是否包含回车可用下面的sql语句:
select * from table where charindex(char(13),col)>0
简单总结 对于sql语句而言不同的数据库支持不太一样 所以查找资料的时候还是要注意这一点,否则很难排查问题,比如%和*的通配符问题,我在access下用%用的理直气壮,最后无意中发现access支持的是*而不是%,害我浪费大量时间。
知识还是得靠实践去积累,毕竟编程是要动手的。


 

原创粉丝点击