mysql数据库学习总结.docx

上传人:b****5 文档编号:28116478 上传时间:2023-07-08 格式:DOCX 页数:21 大小:134.87KB
下载 相关 举报
mysql数据库学习总结.docx_第1页
第1页 / 共21页
mysql数据库学习总结.docx_第2页
第2页 / 共21页
mysql数据库学习总结.docx_第3页
第3页 / 共21页
mysql数据库学习总结.docx_第4页
第4页 / 共21页
mysql数据库学习总结.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

mysql数据库学习总结.docx

《mysql数据库学习总结.docx》由会员分享,可在线阅读,更多相关《mysql数据库学习总结.docx(21页珍藏版)》请在冰豆网上搜索。

mysql数据库学习总结.docx

mysql数据库学习总结

(说明,1、2、4是基本的,大家参考一下就行了,对于3请大家多多研究一下,提出意见和方法,共同完善此文档,以作为实验室学习的资料)

1、安装软件

2、Mysql基本语句

2.1、数据库语句

2.1.1列出数据库

2.1.2创建数据库

2.1.3删除数据库

2.1.4连接数据库

2.1.5当前选择(连接)的数据库

2.1.6显示数据库包含的表

2.2、表语句

2.2.1建表

2.2.2获取表字段信息

2.2.3获取表所有信息

2.2.4删除表

2.2.5修改表定义

2.2.6数据操作语句

3、存储过程

3.1、存储过程的定义

3.2、存储过程的调用

3.3、删除存储过程

3.4、DECLARE语句

3.5、举例

4、连接和联合

4.1、连接查询

4.1.1内连接

4.1.2外连接

4.1.3交叉连接

4.2、联合查询

 

1、安装软件

1)安装mysql软件

mysql软件安装好后,会在服务中新增mysql服务

但此时对mysql操作只能在命令行下面进行

点击MySQLCommandLineClient进入命令行界面

当然可以配置环境变量,以可以在“开始——运行”中直接键入“mysql–uroot–p”进入命令行界面,连接远程mysql时需要键入“mysql-h主机地址-u用户名-p用户密码”如:

mysql-h110.110.110.110–uroot-pabcd123

2)安装mysql可视化操作软件MySQL-Front

如果觉得在命令行下面不方便,可以安装MySQL-Front软件,这样就可以通过MySQL-Front来进行可视化操作,其界面如下:

2、Mysql基本语句

在mysql中,每一条完整的语句以分号“;”结束,当语句以分号结束则mysql才会执行些条语句,如:

mysql>usemsgfdb;

Databasechanged

2.1、数据库语句

此部分主要介绍关于mysql中数据库操作相关语句

2.1.1列出数据库

命令:

showdatabases;(注意:

最后有个s)

例如执行此语句我机器上的结果为:

mysql>showdatabases;

+--------------------+

|Database|

+--------------------+

|information_schema|

|house_sl|

|house_v2009|

|msgfdb|

|mysql|

|school|

|temp|

|test|

|zentao|

+--------------------+

9rowsinset(0.00sec)

2.1.2创建数据库

命令:

createdatabase;

例如:

建立一个名为db_name的数据库

mysql>createdatabasedb_name;

QueryOK,1rowaffected(0.08sec)

2.1.3删除数据库

命令:

dropdatabase<数据库名>

例如:

删除名为xhkdb的数据库

mysql>dropdatabasexhkdb;

2.1.4连接数据库

命令:

use<数据库名>

例如:

如果db_name数据库存在,尝试存取它:

mysql>usedb_name;

Databasechanged

2.1.5当前选择(连接)的数据库

命令:

selectdatabase();

例如:

如果已经连接了数据库db_name,则有:

mysql>selectdatabase();

+------------+

|database()|

+------------+

|db_name|

+------------+

1rowinset(0.00sec)

2.1.6显示数据库包含的表

命令:

showtables;(注意:

最后有个s,显示当前数据库中表)

showtablesfrom(显示指定数据库dbname中表)

例如:

显示msgfdb数据库中的表

mysql>showtablesfrommsgfdb;

+------------------+

|Tables_in_msgfdb|

+------------------+

|admintable|

|ausertable|

|ghtable|

|rentmanage|

+------------------+

4rowsinset(0.00sec)

2.2、表语句

2.2.1建表

命令:

createtable<表名>(<字段名1><类型1>[,..<字段名n><类型n>]);

mysql>createtableMyClass(

>idint(4)notnullprimarykeyauto_increment,

>namechar(20)notnull,

>sexint(4)notnulldefault''0'',

>degreedouble(16,2));

2.2.2获取表字段信息

命令:

desc表名,或者showcolumnsfrom表名

例如:

查看当前数据库下MyClass表字段信息

mysql>DESCRIBEMyClass或者describe数据库名.表名

mysql>descMyClass;

或:

mysql>showcolumnsfromMyClass;

2.2.3获取表所有信息

命令:

showcreatetable<表名>;

例如:

查看当前数据库下MyClass表所有信息

mysql>showcreatetableMyClass

2.2.4删除表

命令:

droptable<表名>

例如:

删除表名为MyClass的表

mysql>droptableMyClass;

2.2.5修改表定义(数据定义语言有CREATE、DROP、ALTER等语句,此处用alter语句)

1)更改表名

命令:

renametable<原表名>to<新表名>;

例如:

把表MyClass名字更改为YouClass

mysql>renametableMyClasstoYouClass;

或者:

altertable<原表名>rename<新表名>;

例如:

把表t1重新命名为t2

mysql>ALTERTABLEt1RENAMEt2;

2)在表中增加字段:

命令:

altertable<表名>add<字段><类型>[其他];

例如:

在表MyClass中添加了一个字段passtest,类型为int(4),默认值为0

mysql>altertableMyClassaddpasstestint(4)default''0'';

3)修改列属性

命令:

altertable<表名>modifycolumn<列名><修改类型>;

例如:

把fieldname列数据类型varchar(4)改为varchar(14)

Mysql>altertabletablenamemodifycolumnfieldnamevarchar(14);

4)更改列名

命令:

altertable<表名>change<原来列名><新列名>[数据类型];

例如:

将msgfdb数据库中的ausertable中的statu列名改为status

Mysql>Altertablemsgfdb.ausertablestatustatusint(3);

5)给表添加表级约束

命令:

altertable<表名>addconstraint<约束名><约束>;

例如:

添加主键

Mysql>altertabletemptableaddconstraintpk_temptableprimarykey(name);

6)删除表级约束

删除主键约束:

altertable表名dropprimarykey;

删除外键约束:

altertable表名dropforeignkey外键(区分大小写);

另一种格式:

altertable表名dropconstraint约束名;运行不通

7)总体语句如下:

ALTER[IGNORE]TABLEtbl_name

alter_specification[,alter_specification]...

alter_specification:

ADD[COLUMN]column_definition[FIRST|AFTERcol_name]

|ADD[COLUMN](column_definition,...)

|ADDINDEX[index_name][index_type](index_col_name,...)

|ADD[CONSTRAINT[symbol]]

PRIMARYKEY[index_type](index_col_name,...)

|ADD[CONSTRAINT[symbol]]

UNIQUE[index_name][index_type](index_col_name,...)

|ADD[FULLTEXT|SPATIAL][index_name](index_col_name,...)

|ADD[CONSTRAINT[symbol]]

FOREIGNKEY[index_name](index_col_name,...)

[reference_definition]

|ALTER[COLUMN]col_name{SETDEFAULTliteral|DROPDEFAULT}

|CHANGE[COLUMN]old_col_namecolumn_definition

[FIRST|AFTERcol_name]

|MODIFY[COLUMN]column_definition[FIRST|AFTERcol_name]

|DROP[COLUMN]col_name

|DROPPRIMARYKEY

|DROPINDEXindex_name

|DROPFOREIGNKEYfk_symbol

|DISABLEKEYS

|ENABLEKEYS

|RENAME[TO]new_tbl_name

|ORDERBYcol_name

|CONVERTTOCHARACTERSETcharset_name[COLLATEcollation_name]

|[DEFAULT]CHARACTERSETcharset_name[COLLATEcollation_name]

|DISCARDTABLESPACE

|IMPORTTABLESPACE

|table_options

|partition_options

|ADDPARTITIONpartition_definition

|DROPPARTITIONpartition_names

|COALESCEPARTITIONnumber

|REORGANIZEPARTITIONpartition_namesINTO(partition_definitions)

|ANALYZEPARTITIONpartition_names

|CHECKPARTITIONpartition_names

|OPTIMIZEPARTITIONpartition_names

|REBUILDPARTITIONpartition_names

|REPAIRPARTITIONpartition_names

ALTERTABLE用于更改原有表的结构。

例如,您可以增加或删减列,创建或取消索引,更改原有列的类型,或重新命名列或表。

您还可以更改表的评注和表的类型。

2.2.6数据操作语句(insert、update、delete)

1)插入数据

命令:

insertinto<表名>[(<字段名1>[,..<字段名n>])]values(值1)[,(值n)]

例如,往表MyClass中插入二条记录,这二条记录表示:

编号为1的名为Tom的成绩为96.45,编号为2的名为Joan的成绩为82.99,编号为3的名为Wang的成绩为96.5.

mysql>insertintoMyClassvalues(1,''Tom'',96.45),(2,''Joan'',82.99),(2,''Wang'',96.59);

2)更新数据

命令:

update<表名>set字段名=新值[,字段名=新值][where_statements]或者update<表名>set字段名=replace(字段名,''旧内容'',''新内容'')

例如:

往文章前面加4个空格:

mysql>updatearticlesetcontent=concat(''  '',content);

总体语法:

Single-table语法:

UPDATE[LOW_PRIORITY][IGNORE]tbl_name

SETcol_name1=expr1[,col_name2=expr2...]

[WHEREwhere_definition]

[ORDERBY...]

[LIMITrow_count]

Multiple-table语法:

UPDATE[LOW_PRIORITY][IGNORE]table_references

SETcol_name1=expr1[,col_name2=expr2...]

[WHEREwhere_definition]

其中:

UPDATE语法可以用新值更新原有表行中的各列。

SET子句指示要修改哪些列和要给予哪些值。

WHERE子句指定应更新哪些行。

如果没有WHERE子句,则更新所有的行。

如果指定了ORDERBY子句,则按照被指定的顺序对行进行更新。

LIMIT子句用于给定一个限值,限制可以被更新的行的数目。

UPDATE语句支持以下修饰符:

如果您使用LOW_PRIORITY关键词,则UPDATE的执行被延迟了,直到没有其它的客户端从表中读取为止。

如果您使用IGNORE关键词,则即使在更新过程中出现错误,更新语句也不会中断。

如果出现了重复关键字冲突,则这些行不会被更新。

如果列被更新后,新值会导致数据转化错误,则这些行被更新为最接近的合法的值。

如果您在一个表达式中通过tbl_name访问一列,则UPDATE使用列中的当前值。

例如,以下语句把年龄列设置为比当前值多一:

mysql>UPDATEpersondataSETage=age+1;

3)删除数据

命令:

deletefrom<表名>[where_statements]

总体语法:

单表语法:

DELETE[LOW_PRIORITY][QUICK][IGNORE]FROMtbl_name

[WHEREwhere_definition]

[ORDERBY...]

[LIMITrow_count]

多表语法:

DELETE[LOW_PRIORITY][QUICK][IGNORE]

tbl_name[.*][,tbl_name[.*]...]

FROMtable_references

[WHEREwhere_definition]

或:

DELETE[LOW_PRIORITY][QUICK][IGNORE]

FROMtbl_name[.*][,tbl_name[.*]...]

USINGtable_references

[WHEREwhere_definition]

说明:

如果您指定LOW_PRIORITY,则DELETE的执行被延迟,直到没有其它客户端读取本表时再执行。

对于MyISAM表,如果您使用QUICK关键词,则在删除过程中,存储引擎不会合并索引端结点,这样可以加快部分种类的删除操作的速度。

在删除行的过程中,IGNORE关键词会使MySQL忽略所有的错误。

(在分析阶段遇到的错误会以常规方式处理。

)由于使用本选项而被忽略的错误会作为警告返回。

3、存储过程

存储过程是将其一功能的sql代码组织起来进行处理的,它位于数据库中,在程序中可以调用它来完成一些操作。

当定义了存储过程后,可以看到:

3.1、存储过程的定义

CREATEPROCEDURE<存储过程名>(参数….)

BEGIN

……..

END;

3.2、存储过程的调用

CALL<存储过程名>(参数);

3.3、删除存储过程

DROPPROCEDUREIFEXISTS<存储过程名>;

3.4、DECLARE语句

1)DECLARE语句被用来把不同项目局域到一个子程序:

局部变量、条件和处理程序及光标(游标)。

SIGNAL和RESIGNAL语句当前还不被支持。

2)DECLARE仅被用在BEGIN...END复合语句里,并且必须在复合语句的开头,在任何其它语句之前。

3)光标必须在声明处理程序之前被声明,并且变量和条件必须在声明光标或处理程序之前被声明。

4)局部变量

DECLAREvar_name[,...]type[DEFAULTvalue](mysql存储过程中定义局部变量不需要加上@,这一点与sqlserver不同。

4.1)SET语句为局部变量赋值:

SETvar_name=expr[,var_name=expr]...

4.2)SELECT….INTO语句为局部变量赋值:

SELECTcol_name[,...]INTOvar_name[,...]table_expr

5)条件

DECLAREcondition_nameCONDITIONFORcondition_valuecondition_value:

SQLSTATE[VALUE]sqlstate_value

|mysql_error_code

这个语句指定需要特殊处理的条件。

它将一个名字和指定的错误条件关联起来。

这个名字可以随后被用在DECLAREHANDLER语句中。

6)处理程序

DECLAREhandler_typeHANDLERFORcondition_value[,...]sp_statement

handler_type:

CONTINUE

|EXIT

|UNDO

condition_value:

SQLSTATE[VALUE]sqlstate_value

|condition_name

|SQLWARNING

|NOTFOUND

|SQLEXCEPTION

|mysql_error_code

这个语句指定每个可以处理一个或多个条件的处理程序。

如果产生一个或多个条件,指定的语句被执行。

对一个CONTINUE处理程序,当前子程序的执行在执行处理程序语句之后继续。

对于EXIT处理程序,当前BEGIN...END复合语句的执行被终止。

UNDO处理程序类型语句还不被支持。

⏹SQLWARNING是对所有以01开头的SQLSTATE代码的速记。

⏹NOTFOUND是对所有以02开头的SQLSTATE代码的速记。

⏹SQLEXCEPTION是对所有没有被SQLWARNING或NOTFOUND捕获的SQLSTATE代码的速记。

⏹除了SQLSTATE值,MySQL错误代码也不被支持。

7)光标(游标)

7.1)声明光标

DECLAREcursor_nameCURSORFORselect_statement

这个语句声明一个光标。

也可以在子程序中定义多个光标,但是一个块中的每一个光标必须有唯一的名字。

SELECT语句不能有INTO子句。

7.2)打开光标

OPENcursor_name

7.3)光标遍历

FETCHcursor_nameINTOvar_name[,var_name]...

这个语句用指定的打开光标读取下一行(如果有下一行的话),并且前进光标指针。

7.4)关闭光标

CLOSEcursor_name

7.5)光标结束条件的检测。

通过处理程序来检测

3.5、举例

//例一:

局部变量、光标、输出多条记录

/*删除存储过程*/

DROPPROCEDUREIFEXISTScontractsql;

/*创建存储过程*/

CREATEPROCEDUREcontractsql(INvarcontractidVARCHAR(30))

BEGIN

/*局部变量*/

DECLARECOUNTSINTDEFAULT0;

DECLAREVARRENTDECIMAL(13,2);

/*实交*/

DECLAREVARTOTALDECIMAL(13,2)DEFAULT0;

/*应交*/

DECLAREVARPAYDECIMAL(13,2);

DECLAREVARBEGINSDATE;

DECLAREVARENDSDATE;

/*光标(游标定义)*/

DECLAREcurCURSORFORSELECTrent,begintime,endtimeFROMrentmanageWHEREcontractid=varcontractid;

/*处理程序*/

DECLARECONTINUEHANDLERFORNOTFOUNDSETCOUNTS=1;

/*创建临时表,此处暂没有用到,故注销*/

/*CREATETEMPORARYTABLEIFNOTEXISTSTEMPTB(rentDECIMAL(13,2),totalDECIMAL(13,2));*/

OPENcur;

FETCHcurINTOVARRENT,VARBEGINS,VARENDS;

WHILENOTCOUNTSDO

SETVARTOTAL=VARTOTAL+(DATEDIFF(VARENDS,VARBEGINS)+1)*VARRENT;

FETCHcurINTOVARRENT,VARBEGINS,VARENDS;

ENDWHILE;

CLOSEcur;

SELECT(DATEDIFF(totime,fromtime)+1)*VARRENTINTOVARPAYFROMgfcontractWHEREcontractid=varcontractid;

/*存储过程返回多条记录*/

SELECTVARPAY

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

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1