MySQL介绍1.什么是数据库?数据库(Database)是按照数据结构组织、存储和管理数据的仓库。它是60多年前生产的。随着信息技术和市场的发展,尤其是20世纪90年代以后,数据管理不再只是存储和管理数据,而是转变为用户需要的各种数据管理方式。数据库的种类很多,从最简单的存储各种数据的表到能够存储海量数据的大型数据库系统,在各个方面都得到了广泛的应用。主流数据库包括:sqlserver、mysql、Oracle、SQLite、Access、MSSQLServer等,本文主要讲mysql2,数据库管理是干什么用的?A。将数据保存到文件或内存中b.接收特定的命令,然后对文件进行相应的操作PS:如果你有上面的管理系统,就不需要自己创建文件和文件夹,而是直接把命令传给上面的软件,让它进行文件操作,它们统称为数据库管理系统(DBMS,DatabaseManagementSystem)MySQL的安装MySQL是一个开源的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言——结构化查询语言(SQL)用于数据库管理。在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。要使用mysql,必须满足以下条件a.安装MySQL服务器b.安装MySQL客户端c.[客户端]连接到[服务器]d.【客户端】向【MySQL服务器】服务发送命令,接受命令并执行相应的命令操作(增删改查等)1、下载地址:http://dev.mysql.com/download...2windows下安装请参考:http://www.cnblogs.com/lonely...linux下安装:http://www.cnblogs.com/chenju...注:以上两个链接有一个完整的安装方法。大师也参考了他的装置。安装完成后mysql.serverstart启动mysql服务mysql操作一,连接数据库mysql-uuser-p例子:mysql-uroot-p常见错误如下:ERROR2002(HY000):Can'tconnecttolocalMySQLserverthroughsocket'/tmp/mysql.sock'(2),这意味着MySQL服务器守护进程(Unix)或服务(Windows)没有运行。退出连接:QUIT或Ctrl+D二、查看数据库,创建数据库,使用数据库查看数据库:showdatabases;defaultdatabase:mysql-与用户权限相关datatest-用于用户测试数据information_schema-MySQL自带的schema相关数据创建数据库:createdatabasedb1DEFAULTCHARSETutf8COLLATEutf8_general_ci;#utf8编码创建数据库db1DEFAULTCHARACTERSETgbkCOLLATEgbk_chinese_ci;#gbk编码使用数据库:使用db1;显示当前使用的数据库中的所有表:SHOWTABLES;3、用户管理创建用户创建用户'用户名'@'IP地址'由'密码'标识;删除用户删除用户'用户名'@'IP地址';修改用户重命名user'用户名'@'IP地址';到'新用户名'@'IP地址';修改密码setpasswordfor'username'@'IPaddress'=Password('newpassword');注意:用户权限相关数据保存在mysql数据库的user表中,所以也可以直接操作(不推荐)4.权限管理mysql对权限有如下限制:allprivileges:除grantselect之外的所有权限:only检查权限选择,插入:查询和插入权限...用法:无访问权限更改:使用更改表更改例程:使用更改过程和删除过程创建:使用创建表创建例程:使用创建过程创建临时表:使用创建临时表创建用户:使用创建用户、删除用户、重命名用户并撤销所有权限创建视图:使用创建视图删除:使用deletedrop:使用删除表执行:使用调用和存储过程文件:使用selectintooutfile和加载数据infile授予选项:使用grantandrevokeindex:使用indexinsert:使用insertlocktables:使用locktableprocess:使用showfullprocesslistselect:使用selectshowdatabases:使用showdatabasesshowview:使用showviewupdate:使用updatereload:使用flushshutdown:使用mysqladminshutdown(关闭MySQL)super:使用changemaster,kill,logs,purge,master和setglobal也允许mysqladmin调试和登录复制客户端:访问服务器位置复制从机:复制从机用于数据库和其他内部权限如下:数据库名称.*数据库中的所有数据库名称。table指定数据库中的表数据库名。storage进程指定数据库中的存储过程*.*所有数据库对用户和IP的权限如下:用户名@IP地址用户只能访问用户名@192.168.1.%用户只能更改IP段至access(通配符%表示任意)用户名@%用户可以在任意IP下访问(默认IP地址为%)1.查看权限:显示“用户”@“IP地址”2的授权。授权授予对数据库的权限。Tableto'user'@'IPaddress'3.取消授权撤销对数据库的权限。tablefrom'username'@'IPaddress'授权示例如下:grantallprivilegesondb1.tb1TO'username'@'IP'grantselectondb1.*TO'username'@'IP'grantselect,inserton*.*TO'username'@'IP'revokeselectondb1.tb1from'username'@'IP'MySQL表操作1.查看表showtables;#查看数据库中的所有表select*fromtablename;#查看表的所有内容2.创建表createtable表名(列名类型是否可以为空,列名类型是否可以为空)ENGINE=InnoDBDEFAULTCHARSET=utf8这里举例说明在detailCREATETABLE`tab1`(`nid`int(11)NOTNULLauto_increment,`name`varchar(255)DEFAULTzhangyanlin,`email`varchar(255),PRIMARYKEY(`nid`))ENGINE=InnoDBDEFAULTCHARSET=utf8;注意:默认值,可以在创建列时指定默认值值,如果插入数据时没有主动设置,会自动加上默认值自增,如果你为某列设置了自增列,插入数据时不需要设置该列,它会默认自增(表中只能有一个自增列)注意:1.自增列必须是索引(包括主键)2.自增可以设置步长和起始值。主键是一种特殊的唯一索引,不允许空值。如果主键使用单列,它的值必须是唯一的,如果是多列,它的组合必须是唯一的3、删除表droptable表名4、清除表内容deletefromtablenametruncatetable表名5、修改表添加列:altertable表名add列名type删除列:altertable表名dropcolumn列名modifycolumn:altertable表名修改列列名类型;--typealtertable表名changeoriginalcolumnnamenewcolumnnametype;--列名,类型添加主键:altertable表名添加主键(列名);删除主键:altertable表名dropprimarykey;altertable表名修改列名int,删除主键;添加外键:altertableslavetableaddconstraint外键名(形式:FK_slavetable_mastertable)外键从表(外键字段)引用主表(主键字段);删除外键:altertable表名dropforeignkey外键名修改默认值:ALTERTABLEtestalter_tblALTERiSETDEFAULT1000;删除默认值:ALTERTABLEtestalter_tblALTERiDROPDEFAULT;以上操作是不是看起来麻烦又费时,不要慌张!有专门的软件可以提供这些功能,而且操作非常简单。这个软件的名称是NavicatPremium。大家可以从网上下载下来练练手。但建议在下面编写命令来执行表内容的操作。6、基本数据类型MySQL的数据类型大致分为:value、time和stringbit[(M)]二进制数(101001),m表示二进制数的长度(1-64),默认m=1tinyint[(m)][unsigned][zerofill]小整数,该数据类型用于保存一些取值范围的整数:Signed:-128~127.Unsigned:0~255特殊:MySQL中没有boolean值,使用tinyint(1)构造int[(m)][unsigned][zerofill]整数,数据类型用来保存一些范围的整数取值范围:signed:-2147483648~2147483647无符号:0~4294967295特殊:整数类型中的m仅用于显示,存储范围没有限制。例如:int(5),当插入数据2时,数据显示为:00002bigint[(m)][unsigned][zerofill]大整数,该数据类型用于保存一些范围的整数值范围:signed:-9223372036854775808~9223372036854775807Unsigned:0~18446744073709551615decimal[(m[,d])][unsigned][zerofill]精确的十进制值,m为数字总数(负号不算),d为后面的数字小数点。m的最大值为65,d的最大值为30。特殊:用于精确的数值计算,这种十进制之所以能存储精确的值,是因为它在内部存储为字符串。FLOAT[(M,D)][UNSIGNED][ZEROFILL]单精度浮点数(非精确十进制值),m为数字的总数,d为小数点后的数字。Unsigned:-3.402823466E+38to-1.175494351E-38,01.175494351E-38to3.402823466E+38Signed:01.175494351E-38to3.402823466E+38****数值越大越不准确****DOUBLE[(M,D)][UNSIGNED][ZEROFILL]双精度浮点数(非精确十进制值),m为数字总数,d为小数点后数。无符号:-1.7976931348623157E+308to-2.2250738585072014E-30802.2250738585072014E-308to1.7976931348623157E+308有符号:02.2250738585072014E-308to1.7976931348623157E+308****数值越大,越不准确****char(m)char数据类型用于表示最多可包含255个字符的固定长度字符串。其中m表示字符串的长度。PS:即使数据小于m长度,也会占用m长度varchar(m)varchars数据类型用于变长字符串,最多可以包含255个字符。其中,m表示该数据类型允许保存的字符串的最大长度,只要长度小于最大值的字符串都可以存储在该数据类型中。注意:虽然varchar使用起来更灵活,但是从整个系统的性能来看,char数据类型的处理速度更快,有时甚至可以超过varchar处理速度的50%。因此,用户在设计数据库时应综合考虑各种因素,以达到最佳平衡。text文本数据类型用于存储可变长度的大字符串,最多可分组为65535(2**16?1)个字符。mediumtext最大长度为16,777,215(2**24?1)个字符的TEXT列。longtext最大长度为4,294,967,295或4GB(2**32?1)个字符的TEXT列。enum枚举类型,AnENUMcolumn最多可以有65,535个不同的元素。(实际限制小于3000。)示例:CREATETABLEshirts(nameVARCHAR(40),sizeENUM('x-small','small','medium','large','x-large'));INSERTINTOshirts(name,size)VALUES('dressshirt','large'),('t-shirt','medium'),('poloshirt','small');设置集合类类型一个SET列即可最多有64个不同的成员。示例:CREATETABLEmyset(colSET('a','b','c','d'));插入myset(col)VALUES('a,d'),('d,a'),('a,d,a'),('a,d,d'),('d,a,d');日期YYYY-MM-DD(1000-01-01/9999-12-31)TIMEHH:MM:SS('-838:59:59'/'838:59:59')YYYY(1901/2155)DATETIMEYYYY-MM-DDHH:MM:SS(1000-01-0100:00:00/9999-12-3123:59:59Y)TIMESTAMPYYYYMMDDHHMMSS(1970-01-0100:00:00/2037年某个时候)MySQL表内容操作表内容操作没什么不止是增删改查。当然用的最多的还是支票,支票也是最难用的。当然,这对主人来说是那么容易。像我这样的新手想要灵活运用还是很困难的。下面一一进行1.添加insertintotable(列名,列名...)values(值,value,...)insertintotable(列名,列名...)values(value,value,...),(value,value,value...)insertintotable(columnname,columnname...)select(columnname,columnname...)fromtable例子:insertintotab1(name,email)values('zhangyanlin','zhangyanlin8851@163.com')2.删除deletefromtable#删除表中所有数据deletefromtablewhereid=1andname='zhangyanlin'#deleteID=1andname='zhangyanlin'的数据行3.更改更新表setname='zhangyanlin'whereid>14。勾选select*fromtableselect*fromtablewhereid>1selectnid,name,genderasggfromtablewhereid>1勾选这个条件太多了,我一一列举。至于组合,就看大家的理解了。d在5到16之间;select*fromtablewhereidin(11,22,33)select*fromtablewhereidnotin(11,22,33)select*fromtablewhereidin(selectnidfromtable)b,通配符likeselect*fromtablewherenamelike'zhang%'#zhang开头的所有(多个字符串)select*fromtablewherenamelike'zhang_'#zhang开头的所有(一个字符)c,limitselect*fromtablelimit5;-前5行select*fromtablelimit4,5;-从第4行开始的5行select*fromtablelimit5offset4-从第4行开始的5行d,sortingasc,descselect*fromtableorderbycolumnasc-按照“列”从小到大排列select*fromtableorderbycolumndesc-按照“column”从大到小排列select*fromtableorderbycolumn1desc,column2asc-按照“column1”从大到小排列,如果相同则排序bycolumn2fromsmalltolargee,groupgroupbyselectnumfromtablegroupbynum选择num,nidfromtablegroupbynum,nidsselectnum,nidfromtablewherenid>10groupbynum,nidorderniddescselectnum,nid,count(*),sum(score),max(score),min(score)fromtablegroupbynum,nidselectnumfromtablegroupbynumhavingmax(id)>10特殊:groupby必须在where之后和之前订购方式以上全套MYSQL入门是良旭教程网为各位小伙伴分享的Linux相关知识。
