5.文本数据转到数据库中
文本数据应符合的格式:
字段数据之间用tab键隔开,null值用来代替。
例:
1nameduty2006-11-23
数据传入命令loaddatalocalinfile"文件名"intotable表名;
关于管理权限设置
在windows中MySql以服务形式存在,在使用前应确保此服务已经启动,未启动可用netstartmysql命令启动。
而Linux中启动时可用“/etc/rc.d/init.d/mysqldstart"命令,注意启动者应具有管理员权限。
刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、root帐户设置密码,可用如下命令进行:
usemysql;
deletefromUserwhereUser="";
updateUsersetPassword=PASSWORD('newpassword')whereUser='root';
如果要对用户所用的登录终端进行限制,可以更新User表中相应用户的Host字段,在进行了以上更改后应重新启动数据库服务,此时登录时可用如下类似命令:
mysql-uroot-p;
mysql-uroot-pnewpassword;
mysqlmydb-uroot-p;
mysqlmydb-uroot-pnewpassword;
上面命令参数是常用参数的一部分,详细情况可参考文档。
此处的mydb是要登录的数据库的名称。
在进行开发和实际应用中,用户不应该只用root用户进行连接数据库,虽然使用root用户进行测试时很方便,但会给系统带来重大安全隐患,也不利于管理技术的提高。
我们给一个应用中使用的用户赋予最恰当的数据库权限。
如一个只进行数据插入的用户不应赋予其删除数据的权限。
MySql的用户管理是通过User表来实现的,添加新用户常用的方法有两个,一是在User表插入相应的数据行,同时设置相应的权限;二是通过GRANT命令创建具有某种权限的用户。
其中GRANT的常用用法如下:
grantallonmydb.*toNewUserName@HostNameidentifiedby"password";
grantusageon*.*toNewUserName@HostNameidentifiedby"password";
grantselect,insert,updateonmydb.*toNewUserName@HostNameidentifiedby"password";
grantupdate,deleteonmydb.TestTabletoNewUserName@HostNameidentifiedby"password";
若要给此用户赋予他在相应对象上的权限的管理能力,可在GRANT后面添加WITHGRANTOPTION选项。
而对于用插入User表添加的用户,Password字段应用PASSWORD函数进行更新加密,以防不轨之人窃看密码。
对于那些已经不用的用户应给予清除,权限过界的用户应及时回收权限,回收权限可以通过更新User表相应字段,也可以使用REVOKE操作。
FILE:
在MySQL服务器上读写文件。
PROCESS:
显示或杀死属于其它用户的服务线程。
RELOAD:
重载访问控制表,刷新日志等。
SHUTDOWN:
关闭MySQL服务。
数据库/数据表/数据列权限:
Alter:
修改已存在的数据表(例如增加/删除列)和索引。
Create:
建立新的数据库或数据表。
Delete:
删除表的记录。
Drop:
删除数据表或数据库。
INDEX:
建立或删除索引。
Insert:
增加表的记录。
Select:
显示/搜索表的记录。
Update:
修改表中已存在的记录。
特别的权限:
ALL:
允许做任何事(和root一样)。
USAGE:
只允许登录--其它什么也不允许做。
mysql常用维护命令
1、showglobalstatus;列出MySQL服务器运行各种状态值
2、showvariables;查询MySQL服务器配置信息语句
3、查看慢查询
showvariableslike'%slow%';
showglobalstatuslike'%slow%';
4、最大连接数
showvariableslike'max_connections';MySQL服务器最大连接数
showglobalstatuslike'Max_used_connections';服务器响应的最大连接数
MySQL密码丢失的找回方法(win/*inx)
破解本地密码:
Windows:
1.用系统管理员登陆系统。
2.停止MySQL的服务。
3.进入命令窗口,然后进入MySQL的安装目录,比如我的安装目录是c:
\mysql,进入C:
\mysql\bin
4.跳过权限检查启动MySQL,
c:
\mysql\bin>mysqld-nt–skip-grant-tables
5.重新打开一个窗口,进入c:
\mysql\bin目录,设置root的新密码
c:
\mysql\bin>mysqladmin-urootflush-privilegespassword"newpassword"
c:
\mysql\bin>mysqladmin-uroot-pshutdown
将newpassword替换为你要用的root的密码,第二个命令会提示你输入新密码,重复第一个命令输入的密码。
6.停止MySQLServer,用正常模式启动Mysql
7.你可以用新的密码链接到Mysql了。
Unix&Linux:
1.用root或者运行mysqld的用户登录系统;
2.利用kill命令结束掉mysqld的进程;
3.使用–skip-grant-tables参数启动MySQLServer
shell>mysqld_safe–skip-grant-tables&
4.为root@localhost设置新密码
shell>mysqladmin-urootflush-privilegespassword"newpassword"
5.重启MySQLServer
SQL语句的教程
一.SELECT语句的完整语法为:
SELECT[ALL|DISTINCT|DISTINCTROW|TOP]
{*|talbe.*|[table.]field1[ASalias1][,[table.]field2[ASalias2][,…]]}
FROMtableexpression[,…][INexternaldatabase]
[WHERE…]
[GROUPBY…]
[HAVING…]
[ORDERBY…]
[WITHOWNERACCESSOPTION]
说明:
用中括号([])括起来的部分表示是可选的,用大括号({})括起来的部分是表示必须从中选择其中的一个。
1FROM子句
FROM子句指定了SELECT语句中字段的来源。
FROM子句后面是包含一个或多个的表达式(由逗号分开),其中的表达式可为单一表名称、已保存的查询或由INNERJOIN、LEFTJOIN或RIGHTJOIN得到的复合结果。
如果表或查询存储在外部数据库,在IN子句之后指明其完整路径。
例:
下列SQL语句返回所有有定单的客户:
SELECTOrderID,Customer.customerID
FROMOrdersCustomers
WHEREOrders.CustomerID=Customers.CustomeersID
2ALL、DISTINCT、DISTINCTROW、TOP谓词
(1)ALL返回满足SQL语句条件的所有记录。
如果没有指明这个谓词,默认为ALL。
例:
SELECTALLFirstName,LastName
FROMEmployees
(2)DISTINCT如果有多个记录的选择字段的数据相同,只返回一个。
(3)DISTINCTROW如果有重复的记录,只返回一个
(4)TOP显示查询头尾若干记录。
也可返回记录的百分比,这是要用TOPNPERCENT子句(其中N表示百分比)
例:
返回5%定货额最大的定单
SELECTTOP5PERCENT*
FROM[OrderDetails]
ORDERBYUnitPrice*Quantity*(1-Discount)DESC
3用AS子句为字段取别名
如果想为返回的列取一个新的标题,或者,经过对字段的计算或总结之后,产生了一个新的值,希望把它放到一个新的列里显示,则用AS保留。
例:
返回FirstName字段取别名为NickName
SELECTFirstNameASNickName,LastName,City
FROMEmployees
例:
返回新的一列显示库存价值
SELECTProductName,UnitPrice,UnitsInStock,UnitPrice*UnitsInStockASvalueInStock
FROMProducts
二.WHERE子句指定查询条件
1比较运算符
比较运算符含义
=等于
>大于
<小于
>=大于等于
<=小于等于
<>不等于
!
>不大于
!
<不小于
例:
返回96年1月的定单
SELECTOrderID,CustomerID,OrderDate
FROMOrders
WHEREOrderDate>#1/1/96#ANDOrderDate<#1/30/96#
注意:
McirosoftJETSQL中,日期用‘#’定界。
日期也可以用Datevalue()函数来代替。
在比较字符型的数据时,要加上单引号’’,尾空格在比较中被忽略。
例:
WHEREOrderDate>#96-1-1#
也可以表示为:
WHEREOrderDate>Datevalue(‘1/1/96’)
使用NOT表达式求反。
例:
查看96年1月1日以后的定单
WHERENotOrderDate<=#1/1/96#
2范围(BETWEEN和NOTBETWEEN)
BETWEEN…AND…运算符指定了要搜索的一个闭区间。
例:
返回96年1月到96年2月的定单。
WHEREOrderDateBetween#1/1/96#And#2/1/96#
3列表(IN,NOTIN)
IN运算符用来匹配列表中的任何一个值。
IN子句可以代替用OR子句连接的一连串的条件。
例:
要找出住在London、Paris或Berlin的所有客户
SELECTCustomerID,CompanyName,ContactName,City
FROMCustomers
WHERECityIn(‘London’,’Paris’,’Berlin’)
4模式匹配(LIKE)
LIKE运算符检验一个包含字符串数据的字段值是否匹配一指定模式。
LIKE运算符里使用的通配符
通配符含义
?
任何一个单一的字符
*任意长度的字符
#0~9之间的单一数字
[字符列表]在字符列表里的任一值
[!
字符列表]不在字符列表里的任一值
-指定字符范围,两边的值分别为其上下限
例:
返回邮政编码在(171)555-0000到(171)555-9999之间的客户
SELECTCustomerID,CompanyName,City,Phone
FROMCustomers
WHEREPhoneLike‘(171)555-####’
LIKE运算符的一些样式及含义
样式含义不符合
LIKE‘A*’A后跟任意长度的字符Bc,c255
LIKE’5[*]’5*5555
LIKE’5?
5’5与5之间有任意一个字符55,5wer5
LIKE’5##5’5235,50055kd5,5346
LIKE’[a-z]’a-z间的任意一个字符5,%
LIKE’[!
0-9]’非0-9间的任意一个字符0,1
LIKE’[[]’1,*
三.用ORDERBY子句排序结果
ORDER子句按一个或多个(最多16个)字段排序查询结果,可以是升序(ASC)也可以是降序(DESC),缺省是升序。
ORDER子句通常放在SQL语句的最后。
ORDER子句中定义了多个字段,则按照字段的先后顺序排序。
例:
SELECTProductName,UnitPrice,UnitInStock
FROMProducts
ORDERBYUnitInStockDESC,UnitPriceDESC,ProductName
ORDERBY子句中可以用字段在选择列表中的位置号代替字段名,可以混合字段名和位置号。
例:
下面的语句产生与上列相同的效果。
SELECTProductName,UnitPrice,UnitInStock
FROMProducts
ORDERBY1DESC,2DESC,3
四.运用连接关系实现多表查询
例:
找出同一个城市中供应商和客户的名字
SELECTCustomers.CompanyName,Suppliers.ComPany.Name
FROMCustomers,Suppliers
WHERECustomers.City=Suppliers.City
例:
找出产品库存量大于同一种产品的定单的数量的产品和定单
SELECTProductName,OrderID,UnitInStock,Quantity
FROMProducts,[OrderDeails]
WHEREProduct.productID=[OrderDetails].ProductID
ANDUnitsInStock>Quantity
另一种方法是用MicrosofJETSQL独有的JNNERJOIN
语法:
FROMtable1INNERJOINtable2
ONtable1.field1comparisiontable2.field2
其中comparision就是前面WHERE子句用到的比较运算符。
SELECTFirstName,lastName,OrderID,CustomerID,OrderDate
FROMEm