关于MySql的SQL语言MySQL入门教程.docx

上传人:b****3 文档编号:11591251 上传时间:2023-06-01 格式:DOCX 页数:12 大小:20.47KB
下载 相关 举报
关于MySql的SQL语言MySQL入门教程.docx_第1页
第1页 / 共12页
关于MySql的SQL语言MySQL入门教程.docx_第2页
第2页 / 共12页
关于MySql的SQL语言MySQL入门教程.docx_第3页
第3页 / 共12页
关于MySql的SQL语言MySQL入门教程.docx_第4页
第4页 / 共12页
关于MySql的SQL语言MySQL入门教程.docx_第5页
第5页 / 共12页
关于MySql的SQL语言MySQL入门教程.docx_第6页
第6页 / 共12页
关于MySql的SQL语言MySQL入门教程.docx_第7页
第7页 / 共12页
关于MySql的SQL语言MySQL入门教程.docx_第8页
第8页 / 共12页
关于MySql的SQL语言MySQL入门教程.docx_第9页
第9页 / 共12页
关于MySql的SQL语言MySQL入门教程.docx_第10页
第10页 / 共12页
关于MySql的SQL语言MySQL入门教程.docx_第11页
第11页 / 共12页
关于MySql的SQL语言MySQL入门教程.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

关于MySql的SQL语言MySQL入门教程.docx

《关于MySql的SQL语言MySQL入门教程.docx》由会员分享,可在线阅读,更多相关《关于MySql的SQL语言MySQL入门教程.docx(12页珍藏版)》请在冰点文库上搜索。

关于MySql的SQL语言MySQL入门教程.docx

关于MySql的SQL语言MySQL入门教程

关于MySql的SQL语言

目前常用的数据库有Oracle公司的Oracle,Microsoft公司的SQLServer,IBM公司的DB2和MySql公司的MySql,而免费的数据库目前只有MySql,当然盗版的不算。

SQL(StructuredQueryLanguage)结构化查询语言是目前一个国际上标准的数据库专用语言。

不过不同的数据库所使用的SQL语句都会稍有一些不同,但基本的标准还是会遵循SQL,例如:

用与SQLServer的叫做T-SQL,用于Oracle的叫做PL-SQL,它们都是SQL的子类,或者说是派生类。

用于MySql的我还不知道它叫做什么SQL,不过个人觉得它反而最接近标准的SQL语言,不过,从另一方面来说,它对SQL所做的扩展最少。

就我现在的理解SQL语言就是用来使用数据库和操作数据用的,不包括操作数据库,那些操作数据库的代码应该叫做命令,如:

启动,关闭数据库,设置字符集,设置访问连接用户数等,这些不属于SQL语言,不同的数据库都有自己的命令,这些命令是生产企业制定的。

下面,我大概来说一下SQL所做的事情创建数据库,创建表,插入、修改、删除数据,

查询数据(最主要的是这个功能,方便数据的储存和查询是人们发明数据库的理由)。

当然,我下面介绍的SQL都是用于MySql的。

SQL基础知识

一、数据类型

INT[常用]整数BIGIN大整数FLOAT(单精密)浮点数字DOUBLE[常用](双精密)浮点数字

NUMERIC(M,D)[常用]未压缩(unpack)的浮点数字,“未压缩”意味着数字作为一个字符串被存储,值的每一位使用一个字符。

例:

NUMERIC(16,2)表示这个浮点数字的储存空间为16个字节,精度为2(即小数点后保留2位数字)。

DATE[常用]日期DATETIME[常用]日期和时间组合CHAR(M)一个定长字符串

TIMESTAMP(M)[常用]时间戳记。

以YYYYMMDDHHMMSS、YYMMDDHHMMSS、YYYYMMDD或YYMMDD格式来显示TIMESTAMP值,例:

TIMESTAMP(14)格式为YYYYMMDDHHMMSS、TIMESTAMP(8)格式为YYYYMMDD

VARCHAR(M)[常用]可变长度的字符串BLOB大对象存储类型

TEXT[常用]大文本存储类型,最大长度为65535(2^16-1)个字符

我觉得用的多的类型用[常用]标记了一下,相关时间的那几个各有各的优点,就看你的需要了。

二、变量

declare@iAgeint--声明变量

set@iAge=12--给变量附值

print@iAge--打印变量

select@iAge:

=’iage’fromemployewherename=’Bill’;将查询到字段给变量附值

注意:

这里,select语句中我们不得不使用:

=句法,因为=是为比较保留的

三、逻辑控制

--IF条件判断

declare@iint

set@i=12

if(@i>10)

begin

print'Dadadada!

'

print'Dadadada!

'

end

else

begin

print'XiaoXiao!

'

print'XiaoXiao!

'

end

--While循环控制

declare@iint;

set@i=12;

print@i

return;

while(@i<18)

begin

print@i;

set@i=@i+1;

if@i<17

continue;

if@i>15

break;

end;

--CASE分支判断

selectau_lname,state,'犹他州'fromauthorswherestate='UT'

selectau_lname,state,'密西西比州'fromauthorswherestate='MI'

selectau_lname,state,'肯塔基州'fromauthorswherestate='KS'

selectau_lname,state,

casestate

when'UT'then'犹他州'

when'MI'then'密西西比州'

when'KS'then'肯塔基州'

when'CA'then'加利福利亚'

elsestate

end

fromauthors

四、函数

这部分的内容很多,我也不是很熟这里就我所知道的列一点:

--获取给定字符串的长度

printlength('abcdef')

--大小写转换

printlower('ABCDEF')

printupper('abcdef')

--去空格

printltrim('abcddfddf')

printrtrim('abcddfddf')

--求绝对值

printabs(-12)

--幂

--3的2次方

printpower(3,2)

--随机数

--0-1000之间的随机数

printrand()*1000

--获取圆周率

printpi()

--获取系统时间

printnow()

--获取指定时间之间相隔多少年

printdatediff(year,'2005-01-01','2008-01-01')

--字符串合并

print'abc'+'def'

print'abc'+'456'

--获取指定时间的特定部分

printdatepart(year,now())

--获取字符串中的一段

printSUBSTRING(‘abcdef’,1,3)

--获取纪录个数

selectcount(*)fromemploye;

--获取指定工资的和

selectsum(salary)fromemploye;

--获取年龄大于30岁员工的最高工资

selectmax(salary)fromemployewhereiage>30;

等等

五、注释

#单行注释--单行注视/*内容*/多行注释

SQL常规应用

一、创建数据库

用给定的名字创建一个数据库

CREATEDATABASEdb_name

删除数据库中给定名字的数据库(慎重使用)

DROPDATABASE[IFEXISTS]db_name

调出要用的数据库

USEdb_name

下面是一个完整的创建例子,同时创建了一个数据库log文件

--指定数据库名称

--(注:

如果数据库名中包含空格可以使用[]将其标示)

createdatabase[SuperWC]

--关于数据文件的定义

on

name=Super_WC_Data,--逻辑名

filename='C:

\',--物理路径以及物理名

size=2MB,--初始大小

maxsize=4MB,--最大限制

filegrowth=1MB--增长大小

--关于日志文件的定义

logon

name=Super_WC_Log,

filename='C:

\',

size=3MB,

maxsize=7MB,

filegrowth=20%--增长比例

二、创建表

droptableifexistsauto_incr_test;--先把以前数据库中有可能存在的表删除

createtableauto_incr_test(

idintnotnullauto_increment,--这里的notnull代表这一列的值不能为空默认是null

namechar(40),

timestamptimestamp,

primarykey(id)--创建主键

foreignkey(name)referencesstudents(no),--创建外键

/*上面出现的auto_increment代表了id这个列是一个自动增长列*/

要删除这个表就用droptableauto_incr_test;就可以了.

下面是包含约束的情况(设置约束可以增强数据库的完整性,但需要事先精确的设计,因为改动起来实在是太麻烦了):

createtablestudents

nochar(4)notnullauto_incrementprimarykey,

namenvarchar(8)notnull,

birthdaydatetimecheck(datediff(year,birthday,now())>=18),

ageasdatediff(year,birthday,now()),

sexnchar

(1)notnulldefault('女')check(sex='女'orsex='男'),

phonechar(11)check((phoneisnull)or(length(phone)=11)),

addressnvarchar(24)

注意:

表创建后修改起来比较麻烦,如果不是一定要修改的话可以删了再创建,尽量设计时就把握好需求,设计完美一点。

三、数据操作(添、删、改、查)←传说中著名的添删改查

添加操作(insert)的语法格式:

Insert[into]数据表(字段)values(数据)--[into]可以省略

例:

INSERTtbl_name(col1,col2)VALUES(15,’abc’);

 

修改操作(update)的语法格式:

Update数据表set字段=新值where条件

例:

UPDATEtbl_nameSETcol2= ’BBB’WHEREcol2=’abc’;

删除操作(delete)的语法格式:

Delete[from]数据表where条件--[]内的可写可不写,最好是写,不过懒人都不写

例:

DELETEtbl_name WHEREcol2=’abc’ ;

 

查询操作(select)的语法格式:

select字段from数据表where条件orderby字段desc/asc

/*这里的orderby是用来指定排序依赖列,desc是指以降序排列(默认的是asc升序)*/

例:

SELECTcol1,col2FROMtbl_name WHEREcol2=’abc’ORDERBYcol1DESC;

    

注意:

方便数据的储存和查询是人们发明数据库的理由,所以查询操作是SQL中的精髓之一,我上面的格式只是列出了较常用的格式,但只要是程序功能要求稍微复杂点的就要用到许多查询语句的高级特性了,我会在后面介绍我所能了解的。

SQL高级应用

一、高级查询

1.高级查询(就是把SQL定义的SELECT语句的语法都用到了的)

SELECT[STRAIGHT_JOIN][SQL_SMALL_RESULT][SQL_BIG_RESULT][HIGH_PRIORITY]  

[DISTINCT|DISTINCTROW|ALL]

select_expression,...

[INTO{OUTFILE|DUMPFILE}'file_name'export_options]

[FROMtable_references

[WHEREwhere_definition]

[GROUPBYcol_name,...]

[HAVINGwhere_definition]

[ORDERBY{unsigned_integer|col_name|formula}[ASC|DESC],...]

[LIMIT[offset,]rows]

[PROCEDUREprocedure_name]]

GROUPBY用于分组查询

HAVING用于聚合函数的查询条件

LIMIT用于限制SELECT语句返回的行数

2.多表查询(又叫联合查询)

查找与多个表相关的数据,例:

Selectname,iage,cityfromstudentsainnerjoinaddressbwhere=andname=’Bill’;

3.子查询(很多内容,我不能尽举)

有两种类型的子查询:

“嵌套”子查询和“相关”子查询。

例:

--子查询

--根据作者的名查找其编写的书籍

--先通过子查询获取作者编号

--然后,将其作为查询条件,找出相应的书籍编号

--最后,在利用所得到的书籍编号来得到书籍信息

selectau_id,title_idfromtitleauthor

whereau_id=

(selectau_idfromauthorswhereau_lname='Green')

select*fromtitles

wheretitle_idin

selecttitle_idfromtitleauthor

whereau_id=

(selectau_idfromauthorswhereau_lname='Green')

二、视图

CREATE[ORREPLACE][ALGORITHM={UNDEFINED|MERGE|TEMPTABLE}]

   VIEWview_name[(column_list)]

   ASselect_statement

   [WITH[CASCADED|LOCAL]CHECKOPTION]

例:

CREATEVIEWvASSELECTqty,price,qty*priceASvalueFROMt;

三、存储过程

CREATEPROCEDUREsp_name([proc_parameter[,...]])

   [characteristic...]routine_body

例:

createprocedureproGetJobsByPage

@CurrentPageSizeint,

@PageSizeint,

@CurrentPageint

as

Declare@strSqlnvarchar(400)

set@strSql='select*from

(selecttop'+convert(nvarchar(4),@CurrentPageSize)+'*

from(selecttop'+convert(nvarchar(4),(@PageSize*@CurrentPage))+'*fromjobs)astt

orderbyjob_iddesc)asstt

orderbyjob_id'

execsp_executesql@strSql

四、触发器

CREATETRIGGERtrigger_nametrigger_timetrigger_event

ONtbl_nameFOREACHROWtrigger_stmt

例:

--创建插入触发器

createtriggeremp_marins

onemp_mgr

forinsert

as

declare@echar(30),@mchar(30)

declarecur_mgrcursorfor

select

fromemp_mgr,inserted

where=

opencur_mgr

fetchnextfromcur_mgrinto@e

while@@fetch_status=0

begin

updateemp_mgr

set=+1

where=@e

fetchnextfromcur_mgrinto@e

end

closecur_mgr

deallocatecur_mgr

五、索引(很有用,可以提高查询语句的执行效率)

CREATE[UNIQUE|FULLTEXT|SPATIAL]INDEXindex_name

   [USINGindex_type]

   ONtbl_name(index_col_name,...)

例:

此处展示的语句用于创建一个索引,索引使用列name。

CREATEINDEXpart_of_nameONcustomer(name);

OK,先些这些啦,累死了,呵呵…

(如有错误,请大家不吝赐教…)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2