Rainie999 发表于 2018-10-16 09:41:13

SQL常用命令

  SQL常用命令
  http://blog.csdn.net/jenny0107/article/details/1332815
  下面是一些常用的SQL语句,虽然很基础,可是却很值得收藏,对于初学者非常实用
  SQL常用命令使用方法:
  (1) 数据记录筛选:
  sql="select * from 数据表 where 字段名=字段值 order by 字段名 "
  sql="select * from 数据表 where 字段名like '%字段值%' order by 字段名"
  sql="select top 10 * from 数据表 where 字段名 order by 字段名 "
  sql="select * from 数据表 where 字段名in ('值1','值2','值3')"
  sql="select * from 数据表 where 字段名between 值1 and 值2"
  (2) 更新数据记录:
  sql="update 数据表 set 字段名=字段值 where 条件表达式"
  sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式"
  (3) 删除数据记录:
  sql="delete from 数据表 where 条件表达式"
  sql="delete from 数据表"(将数据表所有记录删除)
  (4) 添加数据记录:
  sql="insert into 数据表 (字段1,字段2,字段3 …)values (值1,值2,值3…)"
  sql="insert into 目标数据表 select * from 源数据表"(把源数据表的记录添加到目标数据表)
  (5) 数据记录统计函数:
  AVG(字段名) 得出一个表格栏平均值
  COUNT(*|字段名) 对数据行数的统计或对某一栏有值的数据行数统计
  MAX(字段名) 取得一个表格栏最大的值
  MIN(字段名) 取得一个表格栏最小的值
  SUM(字段名) 把数据栏的值相加
  引用以上函数的方法:
  sql="select sum(字段名) as 别名from 数据表 where 条件表达式"
  set rs=conn.excute(sql)
  用 rs("别名") 获取统的计值,其它函数运用同上。
  (6) 数据表的建立和删除:
  CREATE TABLE 数据表名称(字段1 类型1(长度),字段2 类型2(长度) …… )
  例1:CREATE TABLE tab01(namevarchar(50),datetime default now())
  例2:CREATE TABLE table_name(
  column1 DATATYPE ,
  column2 DATATYPE ,
  ...)
  说明: 
  DATATYPE --是资料的格式,详见表。
  NUT NULL --可不可以允许资料有空的(尚未有资料填入)。
  PRIMARY KEY --是本表的主键。
  DROP TABLE 数据表名称 (永久性删除一个数据表)
  (7)记录集对象的方法:
  rs.movenext            将记录指针从当前的位置向下移一行
  rs.moveprevious          将记录指针从当前的位置向上移一行
  rs.movefirst            将记录指针移到数据表第一行
  rs.movelast            将记录指针移到数据表最后一行
  rs.absoluteposition=N    将记录指针移到数据表第N行
  rs.absolutepage=N      将记录指针移到第N页的第一行
  rs.pagesize=N            设置每页为N条记录
  rs.pagecount            根据 pagesize 的设置返回总页数
  rs.recordcount         返回记录总数
  rs.bof                  返回记录指针是否超出数据表首端,true表示是,false为否
  rs.eof                  返回记录指针是否超出数据表末端,true表示是,false为否
  rs.delete                删除当前记录,但记录指针不会向下移动
  rs.addnew                添加记录到数据表末端
  rs.update                更新数据表记录
  (8) 更改表格 
  ALTER TABLE table_name
  ADD COLUMN column_name DATATYPE
  说明:增加一个栏位(没有删除某个栏位的语法。
  ALTER TABLE table_name
  ADD PRIMARY KEY (column_name)
  说明:更改表得的定义把某个栏位设为主键。
  ALTER TABLE table_name
  DROP PRIMARY KEY (column_name)
  说明:把主键的定义删除。
  (9)建立索引,删除索引 
  CREATE INDEX index_name ON table_name (column_name)
  说明:对某个表格的栏位建立索引以增加查询时的速度。
  DROP index_name
  (10)数据类型DATATYPEs
  smallint 16 位元的整数。
  interger 32 位元的整数。
  decimal(p,s)
  p 精确值和 s 大小的十进位整数,精确值p是指全部有几个数(digits)大小值,s是指小数点後有几位数。如果没有特别指定,则系统会设为 p=5; s=0 。
  float 32位元的实数。
  double 64位元的实数。
  char(n) n 长度的字串,n不能超过 254。
  varchar(n) 长度不固定且其最大长度为 n 的字串,n不能超过 4000。
  graphic(n)和char(n) 一样,不过其单位是两个字元 double-bytes,n不能超过127。这个形态是为了支援两个字元长度的字体,例如中文字。
  vargraphic(n) 可变长度且其最大长度为 n 的双字元字串,n不能超过 2000。
  date 包含了 年份、月份、日期。
  time 包含了 小时、分钟、秒。
  timestamp 包含了 年、月、日、时、分、秒、千分之一秒。
  (11)查询资料:
  基本查询
  SELECT column1,columns2,...
  FROM table_name
  说明:把table_name 的特定栏位资料全部列出来
  SELECT *
  FROM table_name
  WHERE column1 = xxx
  
  说明:
  1.'*'表示全部的栏位都列出来。
  2.WHERE 之後是接条件式,把符合条件的资料列出来。
  SELECT column1,column2
  FROM table_name
  ORDER BY column2
  说明:ORDER BY 是指定以某个栏位做排序,是指从大到小排列,若没有指明,则是从小到大排列
  组合查询
  组合查询是指所查询得资料来源并不只有单一的表格,而是联合一个以上的
  表格才能够得到结果的。
  SELECT *
  FROM table1,table2
  WHERE table1.colum1=table2.column1
  说明:
  1.查询两个表格中其中 column1 值相同的资料。
  2.当然两个表格相互比较的栏位,其资料形态必须相同。
  3.一个复杂的查询其动用到的表格可能会很多个。
  整合性的查询:
  SELECT COUNT (*)
  FROM table_name
  WHERE column_name = xxx
  说明:
  查询符合条件的资料共有几笔。
  SELECT SUM(column1)
  FROM table_name
  说明:
  1.计算出总和,所选的栏位必须是可数的数字形态。
  2.除此以外还有 AVG() 是计算平均、MAX()、MIN()计算最大最小值的整合性查询。
  SELECT column1,AVG(column2)
  FROM table_name
  GROUP BY column1
  HAVING AVG(column2) > xxx
  说明:
  1.GROUP BY: 以column1 为一组计算column2 的平均值必须和 AVG、SUM等整合性查询的关键字一起使用。
  2.HAVING : 必须和 GROUP BY 一起使用作为整合性的限制。
  复合性的查询
  SELECT *
  FROM table_name1
  WHERE EXISTS (
  SELECT *
  FROM table_name2
  WHERE conditions )
  说明:
  1.WHERE 的 conditions 可以是另外一个的query。
  2.EXISTS 在此是指存在与否。
  SELECT *
  FROM table_name1
  WHERE column1 IN (
  SELECT column1
  FROM table_name2
  WHERE conditions )
  说明: 
  1. IN 後面接的是一个集合,表示column1 存在集合里面。
  2. SELECT 出来的资料形态必须符合 column1。
  其他查询
  SELECT *
  FROM table_name1
  WHERE column1 LIKE 'x%'
  说明:LIKE 必须和後面的'x%' 相呼应表示以 x为开头的字串。
  SELECT *
  FROM table_name1
  WHERE column1 IN ('xxx','yyy',..)
  说明:IN 後面接的是一个集合,表示column1 存在集合里面。
  SELECT *
  FROM table_name1
  WHERE column1 BETWEEN xx AND yy
  说明:BETWEEN 表示 column1 的值介於 xx 和 yy 之间。
  (12) 连接查询
  SQL-92标准所定义的FROM子句的连接语法格式为:
  FROM join_table join_type join_table
  
  其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。
  join_type 指出连接类型,可分为三种:内连接、外连接和交叉连接。
  内连接(INNERJOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。
  外连接分为左外连接(LEFT OUTER JOIN或LEFTJOIN)、右外连接(RIGHT OUTER JOIN或RIGHTJOIN)
  和全外连接(FULL OUTER JOIN或FULLJOIN)三种。与内连接不同的是,外连接不只列出与连接条件相匹配的行,而是列出左表(左外连接时)、右表(右外连接时)或两个表(全外连接时)中所有符合搜索条件的数据行。
  交叉连接(CROSS JOIN)没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积,其结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。
  连接操作中的ON (join_condition) 子句指出连接条件,它由被连接表中的列和比较运算符、逻辑运算符等构成。
  无论哪种连接都不能对text、ntext和image数据类型列进行直接连接,但可以对这三种列进行间接连接。例如:
  SELECT p1.pub_id,p2.pub_id,p1.pr_info
  FROM pub_info AS p1 INNER JOIN pub_info AS p2
  ON DATALENGTH(p1.pr_info)=DATALENGTH(p2.pr_info)
  (一)内连接
  内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:
  1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接
  表中的所有列,包括其中的重复列。
  2、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些
  运算符包括>、>=、
页: [1]
查看完整版本: SQL常用命令