一、MySQL概述 1、什么是数据库? 答:数据的仓库,如:在ATM的示例中我们创建了一个db目录,称其为数据库 2、什么是MySQL、Oracle、SQLite、Access、MSSQLServer等? 答:他们均是一个软件,都有两个主要的功能:a。将数据保存到文件或内存b。接收特定的命令,然后对文件进行相应的操作 3、什么是SQL? 答:MySQL等软件可以接受命令,并做出相应的操作,由于命令中可以包含删除文件、获取文件内容等众多操作,对于编写的命令就是是SQL语句。 二、MySQL安装 MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下公司。MySQL最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。 想要使用MySQL来存储并操作数据,则需要做几件事情: a。安装MySQL服务端 b。安装MySQL客户端 b。【客户端】连接【服务端】 c。【客户端】发送命令给【服务端MySQL】服务的接受命令并执行相应操作(增删改查等)下载http:dev。mysql。comdownloadsmysql安装windows:http:jingyan。baidu。comarticlef3ad7d0ffc061a09c3345bf0。htmllinux:yuminstallmysqlservermac:一直点下一步 客户端连接连接:1、mysql管理人默认为root,没有设置密码则直接登录mysqlhhosturootp不用输入密码按回车自动进入2、如果想设置mysql密码mysqladminurootpassword1234563、如果你的root现在有密码了(123456),那么修改密码为abcdef的命令是:mysqladminurootppasswordabcdef退出:QUIT或者ControlD 三、数据库基础 分为两大部分: 1、数据库和表的创建; 2、数据库和表内容的操作 1、数据库和表的创建 1。1、显示数据库1SHOWDATABASES; 默认数据库: mysql用户权限相关数据 test用于用户测试数据 informationschemaMySQL本身架构相关数据 1。2、创建数据库utf8CREATEDATABASE数据库名称DEFAULTCHARSETutf8COLLATEutf8gbkCREATEDATABASE数据库名称DEFAULTCHARACTERSETgbkCOLLATE 1。3、打开数据库USE注:每次使用数据库必须打开相应数据库 显示当前使用的数据库中所有表:SHOWTABLES; 1。4、用户管理 用户设置:创建用户createuser用户名IP地址identifiedby密码;删除用户dropuser用户名IP地址;修改用户renameuser用户名IP地址;to新用户名IP地址;;修改密码setpasswordfor用户名IP地址Password(新密码)PS:用户权限相关数据保存在mysql数据库的user表中,所以也可以直接对其进行操作(不建议) 用户权限设置:showgrantsfor用户IP地址查看权限grant权限on数据库。表to用户IP地址授权revoke权限on数据库。表from用户IP地址取消权限 对于权限设置 对于数据库名的解释 对于ip地址的访问 实际例子 1。4、备份库和恢复库 备份库: MySQL备份和还原,都是利用mysqldump、mysql和source命令来完成。 1。在Windows下MySQL的备份与还原备份1、开始菜单运行cmd利用cdProgramFilesMySQLMySQLServer5。0bin命令进入bin文件夹2、利用mysqldumpu用户名pdatabasenameexportfilename导出数据库到文件,如mysqldumpurootpvoicevoice。sql,然后输入密码即可开始导出。还原1、进入MySQLCommandLineClient,输入密码,进入到mysql。2、输入命令,回车,看看有些什么数据库;建立你要还原的数据库,输入,回车。3、切换到刚建立的数据库,输入,回车;导入数据,输入sourcevoice。,回车,开始导入,再次出现mysql并且没有提示错误即还原成功。 2、在linux下MySQL的备份与还原2。1备份(利用命令mysqldump进行备份)〔rootlocalhostmysql〕mysqldumpurootpvoicevoice。sql,输入密码即可。2。2还原方法一:〔rootlocalhost〕mysqlurootp回车,输入密码,进入MySQL的控制台mysql,同1。2还原。方法二:〔rootlocalhostmysql〕mysqlurootpvoicevoice。sql,输入密码即可。 3、更多备份及还原命令 1。1、显示数据表 1。2、创建数据表createtable表名(列名类型是否可以为空,列名类型是否可以为空)ENGINEInnoDBDEFAULTCHARSETutf8 设置是否为空 设置默认值 设置自增 设置主键 设置外键 主键与外键关系(非常重要) 1。3删除表droptable表名 1。4、清空表deletefrom表名truncatetable表名 1。5、基本数据类型 MySQL的数据类型大致分为:数值、时间和字符串bit〔(M)〕二进制位(101001),m表示二进制位的长度(164),默认m1tinyint〔(m)〕〔unsigned〕〔zerofill〕小整数,数据类型用于保存一些范围的整数数值范围:有符号:128127。无符号:0255特别的:MySQL中无布尔值,使用tinyint(1)构造。int〔(m)〕〔unsigned〕〔zerofill〕整数,数据类型用于保存一些范围的整数数值范围:有符号:21474836482147483647无符号:04294967295特别的:整数类型中的m仅用于显示,对存储范围无限制。例如:int(5),当插入数据2时,select时数据显示为:00002bigint〔(m)〕〔unsigned〕〔zerofill〕大整数,数据类型用于保存一些范围的整数数值范围:有符号:92233720368547758089223372036854775807无符号:018446744073709551615decimal〔(m〔,d〕)〕〔unsigned〕〔zerofill〕准确的小数值,m是数字总个数(负号不算),d是小数点后个数。m最大值为65,d最大值为30。特别的:对于精确数值计算时需要用此类型decaimal能够存储精确值的原因在于其内部按照字符串存储。FLOAT〔(M,D)〕〔UNSIGNED〕〔ZEROFILL〕单精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。无符号:3。402823466E38to1。175494351E38,01。175494351E38to3。402823466E38有符号:01。175494351E38to3。402823466E38数值越大,越不准确DOUBLE〔(M,D)〕〔UNSIGNED〕〔ZEROFILL〕双精度浮点数(非准确小数值),m是数字总个数,d是小数点后个数。无符号:1。7976931348623157E308to2。2250738585072014E30802。2250738585072014E308to1。7976931348623157E308有符号:02。2250738585072014E308to1。7976931348623157E308数值越大,越不准确char(m)char数据类型用于表示固定长度的字符串,可以包含最多达255个字符。其中m代表字符串的长度。PS:即使数据小于m长度,也会占用m长度varchar(m)varchars数据类型用于变长的字符串,可以包含最多达255个字符。其中m代表该数据类型所允许保存的字符串的最大长度,只要长度小于该最大值的字符串都可以被保存在该数据类型中。注:虽然varchar使用起来较为灵活,但是从整个系统的性能角度来说,char数据类型的处理速度更快,有时甚至可以超出varchar处理速度的50。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡texttext数据类型用于保存变长的大字符串,可以组多到65535(2161)个字符。mediumtextATEXTcolumnwithamaximumlengthof16,777,215(2241)characters。longtextATEXTcolumnwithamaximumlengthof4,294,967,295or4GB(2321)characters。enum枚举类型,AnENUMcolumncanhaveamaximumof65,535distinctelements。(Thepracticallimitislessthan3000。)示例:CREATETABLEshirts(nameVARCHAR(40),sizeENUM(xsmall,small,medium,large,xlarge));INSERTINTOshirts(name,size)VALUES(dressshirt,large),(tshirt,medium),(poloshirt,small);set集合类型ASETcolumncanhaveamaximumof64distinctmembers。示例:CREATETABLEmyset(colSET(a,b,c,d));INSERTINTOmyset(col)VALUES(a,d),(d,a),(a,d,a),(a,d,d),(d,a,d);DATEYYYYMMDD(1000010199991231)TIMEHH:MM:SS(838:59:59838:59:59)YEARYYYY(19012155)DATETIMEYYYYMMDDHH:MM:SS(1000010100:00:009999123123:59:59Y)TIMESTAMPYYYYMMDDHHMMSS(1970010100:00:002037年某时) 1。6、修改表(alter) 修改表 更多参考:http:www。runoob。commysqlmysqldatatypes。html 1。7、数据表关系 关联映射:一对多多对一 存在最普遍的映射关系,简单来讲就如球员与球队的关系;一对多:从球队角度来说一个球队拥有多个球员即为一对多多对一:从球员角度来说多个球员属于一个球队即为多对一数据表间一对多关系如下图: 关联映射:一对一一对一关系就如球队与球队所在地址之间的关系,一支球队仅有一个地址,而一个地址区也仅有一支球队。数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。图示如下:一对一外键关联: 一对一主键关联:要求两个表的主键必须完全一致,通过两个表的主键建立关联关系 关联映射:多对多多对多关系也很常见,例如学生与选修课之间的关系,一个学生可以选择多门选修课,而每个选修课又可以被多名学生选择。数据库中的多对多关联关系一般需采用中间表的方式处理,将多对多转化为两个一对多 1。8、数据表之间的约束 约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、唯一性。 MYSQL中,常用的几种约束: 主键(PRIMARYKEY)是用于约束表中的一行,作为这一行的标识符,在一张表中通过主键就能准确定位到一行,因此主键十分重要。主键要求这一行的数据不能有重复且不能为空。 还有一种特殊的主键复合主键。主键不仅可以是表中的一列,也可以由表中的两列或多列来共同标识 默认值约束(DEFAULT)规定,当有DEFAULT约束的列,插入数据为空时该怎么办。 DEFAULT约束只会在使用INSERT语句(上一实验介绍过)时体现出来,INSERT语句中,如果被DEFAULT约束的位置没有值,那么这个位置将会被DEFAULT的值填充 唯一约束(UNIQUE)比较简单,它规定一张表中指定的一列的值必须不能有重复值,即这一列每个值都是唯一的。 当INSERT语句新插入的数据和已有数据重复的时候,如果有UNIQUE约束,则INSERT失败。 外键(FOREIGNKEY)既能确保数据完整性,也能表现表之间的关系。 一个表可以有多个外键,每个外键必须REFERENCES(参考)另一个表的主键,被外键约束的列,取值必须在它参考的列中有对应值。 在INSERT时,如果被外键约束的值没有在参考列中有对应,比如以下命令,参考列(department表的dptname)中没有dpt3,则INSERT失败 非空约束(NOTNULL),听名字就能理解,被非空约束的列,在插入值时必须非空。 在MySQL中违反非空约束,不会报错,只会有警告。 例子 2、数据库和表内容的操作(增、删、改、查) 1、增insertinto表(列名,列名。。。)values(值,值,值。。。)insertinto表(列名,列名。。。)values(值,值,值。。。),(值,值,值。。。)insertinto表(列名,列名。。。)select(列名,列名。。。)from表 2、删deletefrom表deletefrom表whereid1andnamealex 3、改update表setnamealexwhereid1 4、查 4。1、普通查询selectfrom表selectfrom表whereid1selectnid,name,genderasggfrom表whereid1 更多选项查询 4。2、数据排序(查询)排序selectfrom表orderby列asc根据列从小到大排列selectfrom表orderby列desc根据列从大到小排列selectfrom表orderby列1desc,列2asc根据列1从大到小排列,如果相同则按列2从小到大排序 4。3、模糊查询通配符(模糊查询)selectfrom表wherenamelikealeale开头的所有(多个字符串)selectfrom表wherenamelikealeale开头的所有(一个字符) 4。4、聚集函数查询 聚集函数 4。5、分组查询分组selectnumfrom表groupbynumselectnum,nidfrom表groupbynum,nidselectnum,nidfrom表wherenid10groupbynum,nidorderniddescselectnum,nid,count(),sum(score),max(score),min(score)from表groupbynum,nidselectnumfrom表groupbynumhavingmax(id)10特别的:groupby必须在where之后,orderby之前 4。6多表查询a、连表无对应关系则不显示selectA。num,A。name,B。namefromA,BWhereA。nidB。nid无对应关系则不显示selectA。num,A。name,B。namefromAinnerjoinBonA。nidB。nidA表所有显示,如果B中无对应关系,则值为nullselectA。num,A。name,B。namefromAleftjoinBonA。nidB。nidB表所有显示,如果B中无对应关系,则值为nullselectA。num,A。name,B。namefromArightjoinBonA。nidB。nidb、组合组合,自动处理重合selectnicknamefromAunionselectnamefromB组合,不处理重合selectnicknamefromAunionallselectnamefromB