仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 750|回复: 8
打印 上一主题 下一主题

[学习教程] MYSQL教程之软考:SQL SERVER基础语法参考

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:30:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
正如前文所提到的,MySQL易学、易部署、易管理和易维护。server|参考|语法|语法参考  1、材料界说ddl(datadefinitionlanguage)
  材料界说言语是指对材料的格局和形状下界说的言语,他是每一个材料库要创建时分时起首要面临的,举凡材料分哪些表格干系、表格内的有什麽栏位主键、表格和表格之间相互参考的干系等等,都是在入手下手的时分所必需计划好的。
  1、建表格:
  createtabletable_name(
  column1datatype[notnull][notnullprimarykey],
  column2datatype[notnull],
  ...)
  申明:
  datatype--是材料的格局,详见表。
  nutnull--可不成以同意材料有空的(还没有有材料填进)。
  primarykey--是本表的主键。
  2、变动表格
  altertabletable_name
  addcolumncolumn_namedatatype
  申明:增添一个栏位(没有删除某个栏位的语法。
  altertabletable_name
  addprimarykey(column_name)
  申明:变动表得的界说把某个栏位设为主键。
  altertabletable_name
  dropprimarykey(column_name)
  申明:把主键的界说删除。
  3、创建索引
  createindexindex_nameontable_name(column_name)
  申明:对某个表格的栏位创建索引以增添查询时的速率。
  4、删除
  droptable_name
  dropindex_name
  2、材料形状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
  包括了年、月、日、时、分、秒、千分之一秒。
  3、材料操纵dml(datamanipulationlanguage)
  材料界说好之後接上去的就是材料的操纵。材料的操纵不过乎增添材料(insert)、查询材料(query)、变动材料(update)、删除材料(delete)四种形式,以下分别先容他们的语法:
  1、增添材料:
  insertintotable_name(column1,column2,...)
  values(value1,value2,...)
  申明:
  1.若没有指定column体系则会按表格内的栏位按次填进材料。
  2.栏位的材料形状和所填进的材料必需符合。
  3.table_name也能够是景不雅view_name。
  insertintotable_name(column1,column2,...)
  selectcolumnx,columny,...fromanother_table
  申明:也能够经由一个子查询(subquery)把其余表格的材料填进。
  2、查询材料:
  基础查询
  selectcolumn1,columns2,...
  fromtable_name
  申明:把table_name的特定栏位材料全体列出来
  select*
  fromtable_name
  wherecolumn1=***
  [andcolumn2>yyy][orcolumn3zzz]
 申明:
  1.*暗示全体的栏位都列出来。
  2.where之後是接前提式,把切合前提的材料列出来。
  selectcolumn1,column2
  fromtable_name
  orderbycolumn2[desc]
  申明:orderby是指定以某个栏位做排序,[desc]是指从年夜到小分列,若没有指明,则是从小到年夜
  分列
  组合查询
  组合查询是指所查询得材料来历其实不只要单一的表格,而是团结一个以上的
  表格才干够失掉了局的。
  select*
  fromtable1,table2
  wheretable1.colum1=table2.column1
  申明:
  1.查询两个表格中个中column1值不异的材料。
  2.固然两个表格互相对照的栏位,其材料形状必需不异。
  3.一个庞大的查询其动用到的表格大概会良多个。
  整合性的查询:
  selectcount(*)
  fromtable_name
  wherecolumn_name=***
  申明:
  查询切合前提的材料共有几笔。
  selectsum(column1)
  fromtable_name
  申明:
  1.盘算出总和,所选的栏位必需是可数的数字形状。
  2.除此之外另有avg()是盘算均匀、max()、min()盘算最年夜最小值的整合性查询。
  selectcolumn1,avg(column2)
  fromtable_name
  groupbycolumn1
  havingavg(column2)>***
  申明:
  1.groupby:以column1为一组盘算column2的均匀值必需和avg、sum等整合性查询的关头字
  一同利用。
  2.having:必需和groupby一同利用作为整合性的限定。
  复合性的查询
  select*
  fromtable_name1
  whereexists(
  select*
fromtable_name2
  whereconditions)
  申明:
  1.where的conditions能够是别的一个的query。
  2.exists在此是指存在与否。
  select*
  fromtable_name1
  wherecolumn1in(
  selectcolumn1
  fromtable_name2
  whereconditions)
  申明:
  1.in後面接的是一个汇合,暗示column1存在汇合内里。
  2.select出来的材料形状必需切合column1。
  其他查询
  select*
  fromtable_name1
  wherecolumn1likex%
  申明:like必需和後面的x%相照应暗示以x为开首的字串。
  select*
  fromtable_name1
  wherecolumn1in(***,yyy,..)
  申明:in後面接的是一个汇合,暗示column1存在汇合内里。
  select*
  fromtable_name1
  wherecolumn1betweenxxandyy
  申明:between暗示column1的值介於xx和yy之间。
  3、变动材料:
  updatetable_name
  setcolumn1=***
  whereconditoins
  申明:
  1.变动某个栏位设定其值为***。
  2.conditions是所要切合的前提、若没有where则全部table的谁人栏位城市全体被变动。
  4、删除材料:
  deletefromtable_name
  whereconditions
  申明:删除切合前提的材料。
  申明:关于where前提前面假如包括有日期的对照,分歧数据库有分歧的表达式。详细以下:
  (1)假如是access数据库,则为:wheremydate>#2000-01-01#
  (2)假如是oracle数据库,则为:wheremydate>cast(2000-01-01asdate)
  或:wheremydate>to_date(2000-01-01,yyyy-mm-dd)
  在delphi中写成:
  thedate=2000-01-01;
  query1.sql.add(select*fromabcwheremydate>cast(++thedate++asdate));
  假如对照日期工夫型,则为:
  wheremydatetime>to_date(2000-01-0110:00:01,yyyy-mm-ddhh24:mi:ss)

在我们工作的过程中,经常能听到很多不使用MySQL的理由,虽然其中有一些是对MySQL的误解,不过同样也有一些是合情合理的。
飘灵儿 该用户已被删除
沙发
发表于 2015-1-19 15:23:46 | 只看该作者
发几份SQL课件,以飨阅者
因胸联盟 该用户已被删除
板凳
发表于 2015-1-24 15:51:34 | 只看该作者
从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。
柔情似水 该用户已被删除
地板
发表于 2015-2-2 07:25:19 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
再见西城 该用户已被删除
5#
发表于 2015-2-7 17:40:17 | 只看该作者
原来的计算字段其实和虚拟字段很像。只是管理方面好了而已,性能方面提高不多。但是SQL2005提供了计算字段的持久化,这就提高了查询的性能,但是会加重insert和update的负担。OLTP慎用。OLAP可以大规模使用。
若天明 该用户已被删除
6#
发表于 2015-2-22 20:11:25 | 只看该作者
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
老尸 该用户已被删除
7#
发表于 2015-3-7 02:07:27 | 只看该作者
对于数据库来说,查询是数据库的灵魂,那么SQL查询效率究竟效率如何呢?下文将带对SQL查询的相关问题进行讨论,供您参考。
变相怪杰 该用户已被删除
8#
发表于 2015-3-14 09:07:22 | 只看该作者
无法深入到数据库系统层面去了解和探究
爱飞 该用户已被删除
9#
发表于 2015-3-21 01:56:14 | 只看该作者
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 08:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表