mysql数据库文件修复结构命令
数据库: 用户自定义 idintprimarikeiauto_increment>2发明表creattablliu<namvarchar<20>.; 3insertintoliu<name.1'>id>values<'yy.; 4select*fromliu; id=2/5updatliusetname='xx'./ 6显示表的内容select*fromliu; 7insertintoliu<nam.8>id>values<'uu'.; insertintoliu<nam.8>id>values<'uu'.; insertintoliu<nam.8>id>values<'uu'.; insertintoliu<nam.8>id>values<'uu'.; 8updatliusetname='aa'whereid=2; 9deletfromliuwhereid=2;//删除表 10insertintoliu<name>valu<'re'>;//自动增长 11droptablliu;//删除整张表 检查现有数据库 mysql>showdatabases; 创建数据库(假如数据库名为 mydb mysql>creatdatabasmydb; 删除数据库(假如数据库名为 mydb mysql>dropdatabasaccounts; 使用数据库(假如使用数据库 mydb mysql>usmydb;
showdatabases;显示数据库 creatdatabasname;创建数据库 usedatabasename;选择数据库 不提醒 dropdatabasname直接删除数据库。 showtables;显示表 describtablename;显示具体的表结构 select中加上distinct去除重复字段 有提示。 mysqladmindropdatabasenam删除数据库前。 显示当前mysql版本和当前日期 current_dateselectversion.; 修改mysql中root密码: shell>mysql-hlocalhost-uroot-p//登录 mysql>updatusersetpassword=password"xueok654123"whereuser='root'; mysql>flushprivileg//刷新数据库 mysql>usdbname;打开数据库: mysql>showdatabases;显示所有数据库 mysql>showtables;显示数据库mysql中所有的表:先usmysql;然后 mysql>describuser;显示表mysql数据库中user表的列信息); grant 并赋予权限于firstdb数据库创建用户firstdb密码firstdb和数据库。 mysql>creatdatabasfirstdb; mysql>grantallonfirstdb.*tofirstdbidentifiby'firstdb' 会自动创建用户firstdb 对应的IP地址就是127.0.0.1所以你用你IP地址登录会出错。如果你想用你IP地址登录就要先进行授权用grant命令。 mysql默认的外地主机是localhost. mysql>grantallon*.*toroot@202.116.39.2identifiby"123456"; 说明:grant与on之间是各种权限。select,例如:insert.upd等 第一个*表示所有的数据库。第二个*表示所有的表 on之后是数据库名和表名. root可以改成你用户名。identifiby后面的登录用的密码,@后可以跟域名或IP地址。可以省略,即缺省密码或者叫空密码。 dropdatabasfirstdb; 但是必需使用一个口令someth做这个创建一个可以从任何地方连接服务器的一个完全的超级用户。 mysql>grantallprivilegon*.*touser@localhostidentifiby'something'with 增加新用户 格式:grantselecton数据库.*to用户名@登录主机 identifiby"密码" GRA NTALLPRIVILEGESON*.*TOmonty@localhostIDENTIFIEDBY'something'WITHGRA NTOPTION; GRA NTALLPRIVILEGESON*.*TOmonty@"%"IDENTIFIEDBY'something'WITHGRA NTOPTION; 删除授权: mysql>revokallprivilegon*.*fromroot@"%"; mysql>deletfromuserwhereuser="root"andhost="%"; mysql>flushprivileges; 可访问特定数据库fangchand创建一个用户custom特定客户端it363.com登录。b mysql>grantselect.update,insert.delete,create,droponfangchandb.*tocustom@it363.comidentifiby'passwd' 重命名表: mysql>altertablt1renamt2; mysqldump 备份数据库 shell>mysqldump-hhost-uroot-pdbname>dbname_backup.sql 恢复数据库 shell>mysqladmin-hmyhost-uroot-pcreatdbname shell>mysqldump-hhost-uroot-pdbname<dbname_backup.sql 则命令如下:如果只想卸出建表指令。 shell>mysqladmin-uroot-p-ddatabasenam>a.sql 如果只想卸出插入数据的sql命令。则命令如下:而不需要建表命令。 shell>mysqladmin-uroot-p-tdatabasenam>a.sql 那么如果我只想要数据。应该如何操作呢而不想要什么sql命令时。? mysqldump-T./phptestdriver 其中。表示卸出数据的目录,只有指定了-T参数才可以卸出纯文本文件。./表示当前目录,即与mysqldump同一目录。如果不指定driver表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为.sql文件,包括建表执行。另一个为.txt文件,只包含数据,且没有sql指令。 如果在文件my_file.sql中存放有查可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。可利用外壳顺序键入重定向实用顺序来完成这项工作。例如。 可如下执行这些查询:询。 例如。如果您想将建表语句提前写在sql.txt中。 mysql>mysql-hmyhost-uroot-p Mysql5.0支持的字符集 MySQL中的字符集控制做得比较细。表级,可以分为数据库级。字段级(这一点和ORA CLE不同)上次改的字符集是数据库级的对表sysus没有影响,所以呈现了改了字符集却一样无法插入中文的情况。 DropTA BLEIFEXISTS`firstdb`.`users`; CrTA BLE`firstdb`.`users`
PRIMA RYKEY`id` ENGINE=InnoDBDEFA ULTCHA RSET=gb2312; 编译 MySQL时。这个字符集是latin1指定了一个默认的字符集。; 装置 MySQL时。如果没指定,可以在配置文件 my.ini中指定一个默认的字符集。这个值继承自编译时指定的; 启动 mysqld时。如果没指定,可以在命令行参数中指定一个默认的字符集。这个值继承自配置文件中的; 此时 character_set_serv被设定为这个默认的字符集; 当创建一个新的数据库时。这个数据库的字符集被缺省设定为 character_set_server除非明确指定。; character_set_databas被设定为这个数据库默认的字符集当选定了一个数据库时。; 表默认的字符集被设定为 character_set_databas也就是这个数据库默认的字符集这个数据库里创建一张表时。; 当在表内设置一栏时。否则此栏缺省的字符集就是表默认的字符集除非明确指定。; 这个字符集就是数据库中实际存储数据采用的字符集。再copi过去执行 mysqldump进去的内容就是这个字符集下的;QueriBrowser1.1对中文输入的支持太差劲了可以用notebook写好后。 updatfirstdb.ussetusername='以'whereid=3; MYSQL常用命令 1.导出整个数据库 mysqldump-u用户名 -p--default-character-set=latin1数据库名 >导出的 文件名(数据库默认编码是latin1 mysqldump-uwcnc-psmgp_apps_wcnc>wcnc.sql 2.导出一个表 mysqldump-u用户名 -p数据库名 表名>导出的文件名 mysqldump-uwcnc-psmgp_apps_wcncusers>wcnc_users.sql 3.导出一个数据库结构 mysqldump-uwcnc-p-d-add-drop-tsmgp_apps_wcnc>d:wcnc_db.sql -d没有数据 -add-drop-t每个creat语句之前增加一个droptable 4.导入数据库 A :常用sourc命令 进入mysql数据库控制台。 如mysql-uroot-p mysql>us数据库 后面参数为脚本文件(如这里用到.sql 然后使用sourc命令。 mysql>sourcwcnc_db.sql B:使用mysqldump命令 mysqldump-uusernam-pdbname<filename.sql C:使用mysql命令 mysql-uusernam-p-Ddbname<filename.sql 一、启动与退出 1进入MySQL启动MySQLCommandLineClientMySQLDOS界面)直接输入 装置时的密码即可。此时的提示符是mysql> 2退出MySQLquit或exit 二、库操作 1创建数据库 命令:creatdatabas<数据库名> 例如:建立一个名为xhkdb数据库 mysql>creatdatabasxhkdb; 2显示所有的数据库 命令:showdatabas注意:最后有个s mysql>showdatabases; 3删除数据库 命令:dropdatabas<数据库名> 例如:删除名为 xhkdb数据库 mysql>dropdatabasxhkdb; 4连接数据库 命令:us<数据库名> 例如:如果xhkdb数据库存在尝试存取它 mysql>usxhkdb; 屏幕提示:Databaschanged 5检查当前使用的数据库 mysql>selectdatabas; 6当前数据库包括的表信息: mysql>showtables;注意:最后有个s 操作之前应连接某个数据库三、表操作。 1建表 ..<字段名n><类型n>]命令:creattabl<表名><字段名1><类型1>[.; mysql>creattablMyClass
2>degredoubl16.; 2获取表结构 或者showcolumnfrom表名命令:desc表名。 mysql>DESCRIBEMyClass mysql>descMyClass; mysql>showcolumnfromMyClass; 3删除表 命令:droptabl<表名> 例如:删除表名为 MyClass表 mysql>droptablMyClass; 4插入数据 命令:insertinto<表名>[<字段名1>[..<字段名n>]]valu值1[.. 值n] 例如。这二条记录表示:编号为1名为Tom成果往表 MyClass中插入二条记录. 编号为2名为Joan效果为82.99编号为3名为Wang效果为为96.45. 96.5. mysql>insertintoMyClassvalu1.96.45,'Tom'.2,'Joan',82.99, 2.96.59'Wang'.; 5查询表中的数据 1查询所有行 命令:select<字段1字段2...>from<表名 >where<表达式 > 例如:检查表 MyClass中所有数据 mysql>select*fromMyClass; 2查询前几行数据 例如:检查表 MyClass中前2行数据 2mysql>select*fromMyClassorderbyidlimit0.; 或者: 2mysql>select*fromMyClasslimit0.; 6删除表中数据 命令:deletfrom表名 where表达式 例如:删除表 MyClass中编号为1记录 mysql>deletfromMyClasswhereid=1; where条件 7修改表中数据:updat表名 set字段=新值. mysql>updatMyClasssetname='Mary'whereid=1; 7表中增加字段: 命令:altertabl表名 add字段 类型 其他; 例如:表MyClass中添加了一个字段passtest类型为int4默认值为0 mysql>altertablMyClassaddpasstestint4default'0' 8更改表名: 命令:renamtabl原表名 to新表名; 例如:表MyClass名字更改为YouClass mysql>renamtablMyClasstoYouClass; 更新字段内容 updat表名 set字段名 =新内容 updat表名 set字段名 =replac字段名.'新内容''旧内容'.; 文章前面加入4个空格 contentupdatarticlsetcontent=concat''.; 字段类型 1.INT[M]型:正常大小整数类型 D][ZEROFILL]型:正常大小(双精密)浮点数字类型 2.DOUBLE[M. 3.DA TE日期类型:支持的范围是1000-01-019999-12-31MySQL以YYYY-MM-DD 但是允许你使用字符串或数字把值赋给DA TE列格式来显示DA TE值。 4.CHA RM型:定长字符串类型。总是用空格填满右边到指定的长当存储时。 度 最大长度为655352^16-1个字符。 5.BLOBTEXT类型。 6.VA RCHA R型:变长字符串类型 5.导入数据库表 1创立.sql文件 2先发生一个库如auction.c:mysqlbin>mysqladmin-uroot-pcreat 然后胜利创立。 auct会提示输入密码。 2导入auction.sql文件 c:mysqlbin>mysql-uroot-pauction<auction.sql 就可以创建了一个数据库auction以及其中的一个表auctio通过以上操作。n
6.修改数据库 1mysql表中增加字段: altertabldbnameaddcolumnuseridint11notnullprimarikey auto_increment; 就在表dbname中添加了一个字段userid类型为int11 这样。 7.mysql数据库的授权 mysql>grantselect.delete,insert.create,drop on*.*或test.*/user.*/.. to用户名@localhost identifiby'密码'; 需要进行如下操作:如:新建一个用户帐号以便可以访问数据库。 mysql>grantusage ->ONtest.* ->TOtestuser@localhost; 0rowaffect0.15sec QueriOK. 尔后就创建了一个新用户叫:testus这个用户只能从localhost连接到数 必需指定testus这个用户可以执据库并可以连接到test数据库。下一步。 行哪些操作: mysql>GRA NTselect.delete,insert.update ->ONtest.* ->TOtestuser@localhost; 0rowaffect0.00sec QueriOK. 此操作使testus能够在每一个test数据库中的表执行SelectInsert和 Delet以及Update查询操作。现在结束操作并退出MySQL客户顺序: mysql>exit Bye9! 1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql>SHOWDA TA BA SES; 2:2创建一个数据库MYSQLDA TA mysql>CreatDA TA BA SEMYSQLDA TA ; 3:选择你所创建的数据库 mysql>USEMYSQLDA TA ;按回车键出现Databaschang时说明操作胜利! 4:检查现在数据库中存在什么表 mysql>SHOWTA BLES; 5:创建一个数据库表 sexCHA R1mysql>CreatTA BLEMYTA BLEnameVA RCHA R20.; 6:显示表的结构: mysql>DESCRIBEMYTA BLE; 7:往表中加入记录 "M"mysql>insertintoMYTA BLEvalu"hyq".; 8:用文本方式将数据装入数据库表中(例如D:/mysql.txt mysql>LOA DDA TA LOCA LINFILE"D:/mysql.txt"INTOTA BLEMYTA BLE; 9:导入.sql文件命令(例如D:/mysql.sql mysql>usdatabase; mysql>sourcd:/mysql.sql; 10:删除表 mysql>dropTA BLEMYTA BLE; 11:清空表 mysql>deletfromMYTA BLE; 12:更新表中数据 mysql>updMYTA BLEsetsex="f"wherename='hyq';
摘 自:http://www1.xjtusky.com/article/htmldata/2004_12/3/57/article_1060_1. html 未启动可用 window中MySql以服务形式存在使用前应确保此服务已经启动。 netstartmysql命令启动。而Linux中启动时可用"/etc/rc.d/init.d/mysqld 注意启动者应具有管理员权限。 start"命令。 这是很大的平安刚安装好的MySql包括一个含空密码的root帐户和一个匿名帐户。 隐患。这里应把匿名帐户删除对于一些重要的应用我应将平安性尽可能提高。 可用如下命令进行: root帐户设置密码。 usemysql; deletfromUserwhereUser=""; updUsersetPassword=PA SSWORD'newpassword'whereUser='root'; 如果要对用户所用的登录终端进行限制。可以更新User表中相应用户的Host字段。 此时登录时可用如下类似命令:进行了以上更改后应重新启动数据库服务。 mysql-uroot-p; mysql-uroot-pnewpassword; mysqlmydb-uroot-p; mysqlmydb-uroot-pnewpassword; 详细情况可参考文档。此处的mydb要登录的上面命令参数是常用参数的一部分。 数据库的名称。 进行开发和实际应用中。虽然使用用户不应该只用root用户进行连接数据库。 root用户进行测试时很方便。也有利于管理技术的但会给系统带来重大平安隐患。 提高。给一个应用中使用的用户赋予最恰当的数据库权限。如一个只进行数据 拔出的用户不应赋予其删除数据的权限。MySql用户管理是通过 User表来实现的 添加新用户常用的方法有两个。同时设置相应一是User表插入相应的数据行。 权限;二是通过GRA NT命令创建具有某种权限的用户。其中GRA NT常用用法如下
grantallonmydb.*toNewUserName@HostNamidentifiby"password"; grantusagon*.*toNewUserName@HostNamidentifiby"password"; grselect.updonmydb.*toNewUserName@HostNamidentifieinsert.d bi"password"; deletonmydb.TestTtoNewUserName@HostNamidentifiegrupdate.d bi"password"; 可在GRA NT后面添加WIT若要给此用户赋予他相应对象上的权限的管理能力。H Password字段应用PA SSWORGRA NTOPTION选项。而对于用插入User表添加的用户。D 以防不轨之人窃看密码。对于那些已经不必的用户应给予清除函数进行更新加密。 权限过界的用户应及时回收权限。也可回收权限可以通过更新User表相应字段。 以使用REVOKE操作。 下面给出本人从其它资料(www.cn-java.com获得的对常用权限的解释: 全局管理权限: FILE:MySQL服务器上读写文件。 PROCESS:显示或杀死属于其它用户的服务线程。 刷新日志等。 RELOA D:重载访问控制表。 SHUTDOWN:关闭MySQL服务。 数据库/数据表/数据列权限: A lter:修改已存在数据表(例如增加/删除列)和索引。 Create:建立新的数据库或数据表。 Delete:删除表的记录。 Drop:删除数据表或数据库。 INDEX:建立或删除索引。 Insert:增加表的记录。 Select:显示/搜索表的记录。 Update:修改表中已存在记录。 特别的权限: A LL:允许做任何事(和root一样) USA GE:只允许登录--其它什么也不允许做。 --------------------- MYSQL常用命令 有很多朋友虽然装置好了mysql但却不知如何使用它这篇文章中我就从连接 MYSQL修改密码、增加用户等方面来学习一些MYSQL常用命令。 有很多朋友虽然装置好了mysql但却不知如何使用它这篇文章中我就从 连接MYSQL修改密码、增加用户等方面来学习一些MYSQL常用命令。 一、连接MYSQL 格式:mysql-h主机地址 -u用户名 -p用户密码 1例1连接到本机上的MYSQL 然后进入目录 mysqlbin再键入命令mysql-uroot-首先在打开DOS窗口。p 如果刚安装好MYSQL超级用户root没有密码的故直回车后提示你输密码。 接回车即可进入到MYSQL中了MYSQL提示符是mysql> 2例2连接到远程主机上的MYSQL 密码为abcd123则假设远程主机的IP为:110.110.110.110用户名为root. 键入以下命令: mysql-h110.110.110.110-uroot-pabcd123 其它也一样) 注:u与root可以不用加空格。 3退出MYSQL命令:exit回车) 二、修改密码 格式:mysqladmin-u用户名 -p旧密码 password新密码 1例1给root加个密码ab12首先在DOS下进入目录mysqlbin然后键入以 下命令 mysqladmin-uroot-passwordab12 所以-p旧密码一项就可以省略了注:因为开始时root没有密码。 2例2再将root密码改为djg345 mysqladmin-uroot-pab12passworddjg345 MYSQL常用命令(下) 一、操作技巧 1如果你打命令时。无须重打一遍命令,回车后发现忘记加分号。只要打 完后用分个分号回车就可以了也就是说你可以把一个完整的命令分成几行来打。 号作结束标志就OK 2可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本 不支持。现在用的mysql-3.23.27-beta-win 二、显示命令 1显示数据库列表。 showdatabases; 刚开始时才两个数据库:mysql和testmysql库很重要它里面有MYSQL系统 信息。实际上就是用这个库进行操作。改密码和新增用户。 2显示库中的数据表: 学过FOXBA SE一定不会陌生吧 usemysql;//打开库。 showtables; 3显示数据表的结构: describ表名; 4建库: creatdatabas库名; 5建表: use库名; creattabl表名 字段设定列表); 6删库和删表: dropdatabas库名; droptabl表名; 7将表中记录清空: deletfrom表名; 8显示表中的记录: select*from表名; 三、一个建库和建表以及插入数据的实例 dropdatabasifexistschool;//如果存在SCHOOL则删除 creatdatabasschool;//建立库SCHOOL useschool;//打开库SCHOOL creattablteacher//建立表TEA CHER
yeardate ;//建表结束 //以下为插入字段 insertintoteachervalu''.'深圳一中','glchengang'.'1976-10-10'; insertintoteachervalu''.'深圳一中','jack'.'1975-12-23'; 注:建表中(1将ID设为长度为3数字字段:int3并让它每个记录自动 加一:auto_incr并不能为空:notnull而且让他成为主字段primarikey 2将NA ME设为长度为10字符字段 而且缺省值为深圳。varchar和cha3将ADDRESS设为长度50字符字段。r 只有等以后的文章再说了有什么区别呢。 4将YEA R设为日期字段。 但不方便调试。可以将以上如果你mysql提示符键入上面的命令也可以。 并在DOS状态命令原样写入一个文本文件中假设为school.sql然后复制到c:\下。 进入目录\mysql\bin然后键入以下命令: mysql-uroot-p密码 <c:\school.sql 如果胜利。会有提示。以上命令已经调试空出一行无任何显示;如有错误。 只要将//注释去掉即可使用) 四、将文本数据转到数据库中 null值用\n来代替1文本数据应符合的格式:字段数据之间用tab键隔开。. 例: 3rose深圳二中 1976-10-10 4mike深圳一中 1975-12-23 2数据传入命令 loaddatalocalinfil"文件名"intotabl表名; 并且要先用us命令打表所在注意:最好将文件复制到\mysql\bin目录下。 库 五、备份数据库:命令在DOS\mysql\bin目录下执行) mysqldump--optschool>school.bbb 注释:将数据库school备份到school.bbb文件。 school.bbb一个文本文件。 打开看看你会有新发现。文件名任取。 一.Select语句的完整语法为: Select[A LL|DISTINCT|DISTINCPOW|TOP] {*|talbe.*|[table.]field1[A Salias1][.]][table.]field2[A Salias2][.} ][INexternaldatabaseFROMtableexpression[.] [Wher] [GROUPBY] [HA VING] [ORDERBY] [WITHOWNERA CCESSOPTION] 说明: 用中括号([]括起来的局部表示是可选的用大括号({}括起来的局部是表示必需 从中选择其中的一个。 1FROM子句 FROM子句指定了Select语句中字段的来源。FROM子句后面是包括一个或多个的表 达式(由逗号分开)其中的表达式可为单一表名称、已保存的查询或由 INNER JOINLEFTJOIN或 RIGHTJOIN得到复合结果。如果表或查询存储在外部数据 IN子句之后指明其完整路径。库。 例:下列SQL语句返回所有有定单的客户: Customer.customerISelectorderID.D FROMorderCustomers Wherorders.CustomerID=Customers.CustomeersID 2ALLDISTINCTDISTINCPOWTOP谓词 默认为ALL 1ALL返回满足SQL语句条件的所有记录。如果没有指明这个谓词。 LastNam例:SelectALLFirstName.e FROMEmployees 只返回一个。 2DISTINCT如果有多个记录的选择字段的数据相同。 只返回一个 3DISTINCPOW如果有重复的记录。 这是要用 TOP4TOP显示查询头尾若干记录。也可返回记录的百分比。N PERCENT子句(其中N表示百分比) 例:返回5%定货额最大的定单 SelectTOP5PERCENT* FROM[orderDetails] orDERBYUnitPrice*Quantity*1-DiscountDESC 3用 AS子句为字段取别名 如果想为返回的列取一个新的标题。经过对字段的计算或总结之后,或者。发生了 一个新的值。则用AS保存。希望把它放到一个新的列里显示。 例:返回FirstNam字段取别名为NickName SelectFirstNamASNickNam.CitLastNam.y FROMEmployees 例:返回新的一列显示库存价值 SelectProductNam.UnitsInStock,UnitPric.UnitPrice*UnitsInStockAS valueInStock FROMProducts 二 .Where子句指定查询条件 1比较运算符 比较运算符 含义 =等于 >大于 <小于 >=大于等于 <=小于等于 <>不等于 !>不大于 !<不小于 例:返回96年1月的定单 SelectorderID.orderDatCustomerID.e FROMorders WherorderDate>#1/1/96#ANDorderDate<#1/30/96# 注意: 日期用'#'定界。日期也可以用Datevalu函数来代替。 McirosoftJETSQL中。 要加上单引号''尾空格在比较中被忽略。比较字符型的数据时。 例: WhereorderDate>#96-1-1# 也可以表示为: WhereorderDate>Datevalu'1/1/96' 使用 NOT表达式求反。 例:检查96年1月1日以后的定单 WhereNotorderDate<=#1/1/96# 2范围(BETWEEN和 NOTBETWEEN BETWEENAND运算符指定了要搜索的一个闭区间。 例:返回96年1月到96年2月的定单。 WhereorderDBetween#1/1/96#And#2/1/96# 3列表(INNOTIN IN运算符用来匹配列表中的任何一个值。IN子句可以代替用OR子句连接的一连串 条件。 例:要找出住在LondonPari或Berlin所有客户 SelectCustomerID.ContactName,CompanyName.City FROMCustomers WherCitiIn'London'.'Berlin' 'Paris'. 4模式匹配(LIKE LIKE运算符检验一个包括字符串数据的字段值是否匹配一指定模式。 LIKE运算符里使用的通配符 通配符 含义 ?任何一个单一的字符 *任意长度的字符 #0~9之间的单一数字 [字符列表]字符列表里的任一值 [!字符列表]不在字符列表里的任一值 两边的值分别为其上下限 -指定字符范围。 例:返回邮政编码在171555-0000171555-9999之间的客户 SelectCustomerID.City,CompanyName.Phone FROMCustomers WherPhoneLike'171555-####' LIKE运算符的一些样式及含义 样式 含义 不符合 c25LIKE'A *'A后跟任意长度的字符 Bc.5 LIKE'5[*]'5*5555 5werLIKE'5?5'5与5之间有任意一个字符 55.5 534LIKE'5##5'523550055kd5.6 LIKE'[a-z]'a-z间的任意一个字符 5.% LIKE'[!0-9]'非0-9间的任意一个字符 0.1 LIKE'[[]'1.* 三 .用ORDERBY子句排序结果 可以是升序(ASC也可 orDER子句按一个或多个(最多16个)字段排序查询结果。 以是降序(DESC缺省是升序。ORDER子句通常放在SQL语句的最后。 则按照字段的先后顺序排序。 orDER子句中定义了多个字段。 例: SelectProductName.UnitInStocUnitPrice.k FROMProducts orDERBYUnitInStockDESC.ProductNamUnitPricDESC.e 可以混合字段名 orDERBY子句中可以用字段在选择列表中的位置号代替字段名。 和位置号。 例:下面的语句发生与上列相同的效果。 SelectProductName.UnitInStocUnitPrice.k FROMProducts orDERBY1DESC.2DESC.3 四 .运用连接关系实现多表查询 例:找出同一个乡村中供应商和客户的名字 Suppliers.ComPany.NamSelectCustomers.CompanyName.e SupplierFROMCustomers.s WherCustomers.City=Suppliers.City 例:找出产品库存量大于同一种产品的定单的数量的产品和定单 SelectProductName.UnitInStock,OrderID.Quantity [OrderDeailsFROMProducts.] WherProduct.productID=[OrdDetails].ProductID A NDUnitsInStock>Quantity 另一种方法是用 MicrosofJETSQL独有的JNNERJOIN 语法: FROMtable1INNERJOINtable2 ONtable1.field1comparistable2.field2 其中comparis就是前面Where子句用到比较运算符。 SelectFirstName.OrderID,lastName.CustomerID,OrderDate FROMEmployees INNERJOINorderONEmployees.EmployeeID=Orders.EmployeeID 注意: INNERJOIN不能连接MemoOLEObjectSinglDoubl数据类型字段。 一个JOIN语句中连接多个ON子句 语法: Selectfields FROMtable1INNERJOINtable2 ONtable1.field1compoprtable2.field1AND ONtable1.field2compoprtable2.field2or ONtable1.field3compoprtable2.field3 也可以 Selectfields FROMtable1INNERJOIN table2INNERJOIN[]table3 [INNERJOER][]tablex[INNERJOIN] ONtable1.field1compoprtable2.field1 ONtable1.field2compoprtable2.field2 ONtable1.field3compoprtable2.field3 外部连接返回更多记录。不管存不存在满足条件的记结果中保留不匹配的记录。 录都要返回另一侧的所有记录。 FROMtabl[LEFT|RIGHT]JOINtable2 ONtable1.field1comparistable.field2 表达式的左边的表会显示其所有的数据用左连接来建立外部连接。 返回所有商品例:不管有没有定货量。 OrderISelectProductNam.D FROMProducts LEFTJOINorderONProducts.PrductsID=Orders.ProductID 都从左侧表中返右连接与左连接的差异在于:不管左侧表里有没有匹配的记录。 回所有记录。 例:如果想了解客户的信息。这时可以用一个右连接并统计各个地区的客户分布。 也要返回客户信息。即使某个地区没有客户。 可以通过外连接才干测试被连接的某个表的字段是否有空值。空值不会相互匹配。 Select* FROMtalbe1 LEFTJOINtable2ONtable1.a=table2.c 1连接查询中使用Iif函数实现以0值显示空值 Iif表达式:IifIsNullAmount.A mout 0. 例:无论定货大于或小于¥50都要返回一个标志。 Iif[A mount]>50.?Smalorder? ?Bigorder?. 五.分组和总结查询结果 GROUPBY和HA VING子句用来对数据进行汇总。GROUPBY子句指明 SQL语法里。 依照哪几个字段来分组。用HA VING子句过滤这些记录。而将记录分组后。 GROUPBY子句的语法 Selectfidldlist FROMtable Whercriteria [GROUPBYgroupfieldlist[HA VINGgroupcriteria]] 注:MicrosoftJet数据库 Jet不能对备注或OLE对象字段分组。 GROUPBY字段中的Null值以备分组但是不能被省略。 任何SQL合计函数中不计算Null值。 排序优先级按从左到右的顺序排列。 GROUPBY子句后最多可以带有十个字段。 找出具有同等头衔的雇员数目大于1人例:'WA '地区的雇员表中按头衔分组后。 所有头衔。 CountTitlasTotaSelectTitl.l FROMEmployees WherRegion='WA ' GROUPBYTitle HA VINGCountTitl>1 JETSQL中的聚积函数 聚集函数 意义 SUM求和 A VG平均值 COUNT表达式中记录的数目 COUNT*计算记录的数目 MA X最大值 MIN最小值 VA R方差 STDEV规范误差 FIRST第一个值 LA ST最后一个值 六.用Paramet声明创建参数查询 Paramet声明的语法: PA RA METERSnamedatatype[.]namdatatype[.] 可以通过标志符引用参数其中name参数的标志符.. Datatyp说明参数的数据类型. 使用时要把PA RA METERS声明置于任何其他语句之前. 例: [Begindate]datatimPA RA METERS[Lowprice]Currency.e OrderA mounSelectorderID.t FROMorders WherorderA Mount>[lowprice] A NDorderDate>=[Begindate] 七.功能查询 所谓功能查询.可以对数据库进行快速高效的操作.以实际上是一种操作查询. 选择查询为目的.再对数据进行批处理.功能查询包括更新挑选出符合条件的数据. 删除添加和生成表查询查询.. 1更新查询 Update子句可以同时更改一个或多个表中的数据.也可以同时更改多个字段的值. 更新查询语法: Update表名 SET新值 Where准则 货运量增加3例:英国客户的定货量增加5%.% UpdateOEDERS SETorderA mount=orderA mount*1.1 Freight=Freight*1.03 WherShipCountri='UK' 2删除查询 Delet子句可以使用户删除大量的过时的或冗于的数据. 注:删除查询的对象是整个记录. Delet子句的语法: Delet[表名.*] FROM来源表 Where准则 例:要删除所有94年前的定单 Delet* FROMorders WherorderData<#94-1-1# 3追加查询 Insert子句可以将一个或一组记录追加到一个或多个表的尾部. INTO子句指定接受新记录的表 valueS关键字指定新记录所包含的数据值. Insert子句的语法: INSEPINTO目的表或查询(字段1. 字段2. valueS数值1. 数值2. 例:增加一个客户 InsertINTOEmployeFirstName.titl LastName. valueS'Harry'.'Trainee' 'Washington'. 4生成表查询 可以一次性地把所有满足条件的记录拷贝到一张新表中.通常制作记录的备份或副 本或作为报表的基础. SelectINTO子句用来创建生成表查询语法: Select字段1. 字段2. INTO新表[IN外部数据库] FROM来源数据库 Where准则 例:为定单制作一个存档备份 Select* INTOordersA rchive FROMorders 八.联合查询 UNION运算可以把多个查询的结果合并到一个结果集里显示. UNION运算的一般语法: [表]查询1UNION[A LL]查询2UNION 例:返回巴西所有供给商和客户的名字和城市 CitSelectCompanyName.y FROMSuppliers WherCountri='Brazil' UNION CitSelectCompanyName.y FROMCustomers WherCountri='Brazil' 注: 缺省的情况下.可以加ALL选项 UNION子句不返回重复的记录.如果想显示所有记录. 字段数据类型不必相同UNION运算要求查询具有相同数目的字段.但是.. 每一个查询参数中可以使用GROUPBY子句 或 HA VING子句进行分组.要想以指定 可以在最后一个查询的尾部使用OREERBY子句顺序来显示返回的数据.. 九.交叉查询 交叉查询可以对数据进行总和.计数或其他总和计算法的计算,平均.这些数据通过 另一个显示在表的顶部两种信息进行分组:一个显示在表的左部.. MicrosoftJetSQL用PA NSFROM语句创建交叉表查询语法: PA NSFORMaggfunction Select语句 GROUPBY子句 PIVOTpivotfield[INvalue1[.]]value2[.]
GROUPBY分组 说明: 用可选的IN子句限制 Pivotfield查询结果集中创建列标题时用的字段或表达式. 取值. valu代表创建列标题的固定值. 例:显示在1996年里每一季度每一位员工所接的定单的数目: PA NSFORMCountOrderID SelectFirstName&''&LastNamASFullName FROMEmployeINNERJOINorders ONEmployees.EmployeeID=orders.EmployeeID OrderD='1996WherDatePart"yyyy".' GROUPBYFirstName&''&LastName orDERBYFirstName&''&LastName OrderDat&'季度POVOTDatePart"q".' 十 .子查询 子查询可以理解为 套查询.子查询是一个Select语句. 1表达式的值与子查询返回的单一值做比较 语法: 表达式 comparis[A NY|A LL|SOME]子查询) 说明: A NY和SOME谓词是同义词.<,与比较运算符(=.>,<>,<=,>=一起使用.返回一个布尔 值True或 False.A NY意思是.只要其表达式与子查询返回的一系列的值逐一比较. 中的一次比较产生True结果.对应于 A NY测试的返回 True值(既Where子句的结果). 该表达式的当前记录将进入主查询的结果中.A LL测试则要求表达式与子查询返回的 才回返回True值一系列的值的比较都产生 True结果.. 例:主查询返回单价比任何一个折扣大于等于25%产品的单价要高的所有产品 Select*FROMProducts WherUnitPrice>A NY SelectUnitPricFROM[OrderDetails]WhereDiscount>0.25 2检查表达式的值是否匹配子查询返回的一组值的某个值 语法: [NOT]IN子查询) 例:返回库存价值大于等于1000产品. SelectProductNamFROMProducts WherProductIDIN SelectPrdoctIDFROM[OrderDEtails] WherUnitPrice*Quantity>=1000 3检测子查询是否返回任何记录 语法: [NOT]EXISTS子查询) 例:用EXISTS检索英国的客户 ContactNamSelectComPanyName.e FROMorders WherEXISTS Select* FROMCustomers WherCountri='UK'AND Customers.CustomerID=orders.CustomerID 1:使用SHOW语句找出在服务器上当前存在什么数据库: mysql>SHOWDA TA BA SES; 2:2创建一个数据库MYSQLDA TA mysql>CreatDA TA BA SEMYSQLDA TA ; 3:选择你所创建的数据库 mysql>USEMYSQLDA TA ;按回车键出现Databaschang时说明操作胜利! 4:检查现在数据库中存在什么表 mysql>SHOWTA BLES; 5:创建一个数据库表 sexCHA R1mysql>CreatTA BLEMYTA BLEnameVA RCHA R20.; 6:显示表的结构: mysql>DESCRIBEMYTA BLE; 7:往表中加入记录 "M"mysql>insertintoMYTA BLEvalu"hyq".; 8:用文本方式将数据装入数据库表中(例如D:/mysql.txt mysql>LOA DDA TA LOCA LINFILE"D:/mysql.txt"INTOTA BLEMYTA BLE; 9:导入.sql文件命令(例如D:/mysql.sql mysql>usdatabase; mysql>sourcd:/mysql.sql; 10:删除表 mysql>dropTA BLEMYTA BLE; 11:清空表 mysql>deletfromMYTA BLE; 12:更新表中数据 mysql>updMYTA BLEsetsex="f"wherename='hyq';
摘自:http://www1.xjtusky.com/article/htmldata/2004_12/3/57/article_1060_1.html window中MySql以服务形式存在使用前应确保此服务已经启动。注意启动者应具有管理员权限。未启动可用netstartmysql命令启动。而Linux中启动时可用“/etc/rc.d/init.d/mysqldstart"命令。 刚安装好的MySql包括一个含空密码的root帐户和一个匿名帐户。对于一些重要的应用我应将平安性尽可能提高,这是很大的平安隐患。这里应把匿名帐户删除、root帐户设置密码,可用如下命令进行: usemysql; deletfromUserwhereUser=""; updUsersetPassword=PA SSWORD'newpassword'whereUser='root'; 如果要对用户所用的登录终端进行限制。进行了以上更改后应重新启动数据库服务,可以更新User表中相应用户的Host字段。此时登录时可用如下类似命令: mysql-uroot-p; mysql-uroot-pnewpassword; mysqlmydb-uroot-p; mysqlmydb-uroot-pnewpassword; 详细情况可参考文档。此处的mydb要登录的数据库的名称。上面命令参数是常用参数的一部分。 进行开发和实际应用中。虽然使用root用户进行测试时很方便,用户不应该只用root用户进行连接数据库。但会给系统带来重大平安隐患,也有利于管理技术的提高。给一个应用中使用的用户赋予最恰当的数据库权限。如一个只进行数据拔出的用户不应赋予其删除数据的权限。MySql用户管理是通过User表来实现的添加新用户常用的方法有两个,一是User表插入相应的数据行,同时设置相应的权限;二是通过GRA NT命令创建具有某种权限的用户。其中GRA NT常用用法如下: grantallonmydb.*toNewUserName@HostNamidentifiby"password"; grantusagon*.*toNewUserName@HostNamidentifiby"password"; grselect.updonmydb.*toNewUserName@HostNamidentifiby"password"insert.; deletonmydb.TestTtoNewUserName@HostNamidentifiby"password"grupdate.; 若要给此用户赋予他相应对象上的权限的管理能力。Password字段应用PA SSWORD函数进行更新加密,可在GRA NT后面添加WITHGRA NTOPTION选项。而对于用插入User表添加的用户。以防不轨之人窃看密码。对于那些已经不必的用户应给予清除,权限过界的用户应及时回收权限,回收权限可以通过更新User表相应字段,也可以使用REVOKE操作。 下面给出本人从其它资料(www.cn-java.com获得的对常用权限的解释: 全局管理权限: FILE:MySQL服务器上读写文件。 PROCESS:显示或杀死属于其它用户的服务线程。 刷新日志等。 RELOA D:重载访问控制表。 SHUTDOWN:关闭MySQL服务。 数据库/数据表/数据列权限: A lter:修改已存在数据表(例如增加/删除列)和索引。 Create:建立新的数据库或数据表。 Delete:删除表的记录。 Drop:删除数据表或数据库。 INDEX:建立或删除索引。 Insert:增加表的记录。 Select:显示/搜索表的记录。 Update:修改表中已存在记录。 特别的权限: A LL:允许做任何事(和root一样) USA GE:只允许登录--其它什么也不允许做。 1MySQL常用命令 creatdatabasname;创建数据库 usedatabasename;选择数据库 不提醒 dropdatabasname直接删除数据库。 showtables;显示表 describtablename;表的详细描述 select中加上distinct去除重复字段 有提示。 mysqladmindropdatabasenam删除数据库前。 显示当前mysql版本和当前日期 current_dateselectversion.; 2修改mysql中root密码: shell>mysql-uroot-p mysql>updatusersetpassword=passwordxueok654123″)whereuser=root; mysql>flushprivileg//刷新数据库 mysql>usdbname;打开数据库: mysql>showdatabases;显示所有数据库 mysql>showtables;显示数据库mysql中所有的表:先usmysql;然后 mysql>describuser;显示表mysql数据库中user表的列信息); 3grant 但是必需使用一个口令someth做这个创建一个可以从任何地方连接服务器的一个完全的超级用户。 mysql>grantallprivilegon*.*touser@localhostidentifibysomethwith 增加新用户 格式:grantselecton数据库.*to用户名@登录主机 identifiby密码” GRA NTALLPRIVILEGESON*.*TOmonty@localhostIDENTIFIEDBYsomethWITHGRA NTOPTION; GRA NTALLPRIVILEGESON*.*TOmonty@%IDENTIFIEDBYsomethWITHGRA NTOPTION; 删除授权: mysql>revokallprivilegon*.*fromroot@%; mysql>deletfromuserwhereuser=rootandhost=%; mysql>flushprivileges; 可访问特定数据库fangchand创建一个用户custom特定客户端it363.com登录。b mysql>grantselect.update,insert.delete,create,droponfangchandb.*tocustom@it363.comidentifibypasswd 重命名表: mysql>altertablt1renamt2; 4mysqldump 备份数据库 shell>mysqldump-hhost-uroot-pdbname>dbname_backup.sql 恢复数据库 shell>mysqladmin-hmyhost-uroot-pcreatdbname shell>mysqldump-hhost-uroot-pdbname<dbname_backup.sql 则命令如下:如果只想卸出建表指令。 shell>mysqladmin-uroot-p-ddatabasenam>a.sql 如果只想卸出插入数据的sql命令。则命令如下:而不需要建表命令。 shell>mysqladmin-uroot-p-tdatabasenam>a.sql 那么如果我只想要数据。应该如何操作呢而不想要什么sql命令时。? mysqldump-T./phptestdriver 其中。表示卸出数据的目录,只有指定了-T参数才可以卸出纯文本文件。./表示当前目录,即与mysqldump同一目录。如果不指定driver表,则将卸出整个数据库的数据。每个表会生成两个文件,一个为.sql文件,包括建表执行。另一个为.txt文件,只包含数据,且没有sql指令。 如果在文件my_file.sql中存放有查 5可将查询存储在一个文件中并告诉mysql从文件中读取查询而不是等待键盘输入。可利用外壳顺序键入重定向实用顺序来完成这项工作。例如。 可如下执行这些查询:询。 如果您想将建表语句提前写在sql.txt中例如。: mysql>mysql-hmyhost-uroot-pdatabas<sql.txt //启动服务 mysqld--console //停止服务 mysqladmin-urootshutdown //登录后使用数据库 mysql mysql-uroot-pmysql mysql-uroot-p-h11.11.11.11database //创建数据库 creatdatabasdb_name[defaultcharactset=gbk] //设置数据库默认字符集 alterdatabsdb_namedefaultcharactsetgbk //更换数据库 usdatabastestafterlogon ustest //创建一个带图像字段的表 creatatablmypictostorepicture crtablmypicpicidint.contentblobpicnamvarchar20.; //显示表的结构 describtablmypic descmypic //显示当前表的建表语句 showcreattabltable_name //更改表类型 altertabltable_namengininnodb|myisam|memory //插入一条记录 insertarecord insertintomypicvalu1.0x2134545'第二章'.; //显示当前用户 showcurrentuser selectuser; //显示当前用户密码 showcurrentpassword selectpassword'root'; //显示当前日期 showcurrentdate selectnow; //更改用户密码 changuserpassword updusersetpassword=password'xxx'whereuser='root'; //分配用户权限 grant grantallprivilegon*.*toroot@localhost grselect.delete,insert.update,alter,create,droponlybbs.*tolybbs@"%"identifiby"lybbs"; grantselect.delete,insert.update,alter,create,droponlybbs.*tolybbs@localhostidentifiby"lybbs"; //不重启的情况下刷新用户权限 flushprivileges flushprivileges //向表中增加一个主键 addprimarikey alttablmypicaddprimarikeipicid //修改表结构增加一个新的字段 addanewcolumnuseridafterpicid alttablmypicaddcolumnuseridintafterpicid 当存储图像过大时。使用默认blob超不过100//更改列类型.k altertabluserpchangimagimaglongblob; alttabluserpmodifiimaglongblob; //设置默认字符集为gb2312 mysqld--default-character-set=gb2312 包括字符集编码 //显示详细信息。 showfullcolumnfromuserpic; //改变表的编码 A lterTA BLEuserpCHA RA CTERSETgb2312; //mysqljdbc连接url使用中文 jdbc:mysql://localhost/test?useUnicode=true&characterEncoding=gb2312 //执行外部脚本 source MySQL最受欢迎的开源SQL数据库管理系统。一家使用了一种成功的商业模式来结合开源价值和方****第二代开源公司。MySQLMySQLAB注册商标。由MySQLAB开发、发布和支持。MySQLAB一家基于MySQL开发人员的商业公司。 也可以将它嵌入到一个大配置(mass-deploi软件中去。 MySQL一个快速的多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用。
|