您的位置:首页 > 数据库 > MySQL

mysql的基础的增删改查命令

2014-10-29 21:59 399 查看
1. 连接命令:mysql -h[主机地址] -u[用户名] -p[用户密码] 2. 创建数据库:create database [库名] 3. 显示所有数据库: show databases; 4. 打开数据库:use [库名] 5. 当前选择的库状态:SELECT DATABASE(); 6. 创建数据表:CREATE TABLE [表名]([字段名] [字段类型]([字段要求]) [字段参数], ......); 7. 显示数据表字段:describe 表名; 8. 当前库数据表结构:show tables; 9. 更改表格  10. ALTER TABLE [表名] ADD COLUMN [字段名] DATATYPE 11. 说明:增加一个栏位(没有删除某个栏位的语法。 12. ALTER TABLE [表名] ADD PRIMARY KEY ([字段名]) 13. 说明:更改表得的定义把某个栏位设为主键。 14. ALTER TABLE [表名] DROP PRIMARY KEY ([字段名]) 15. 说明:把主键的定义删除。 16. 显示当前表字段:show columns from tablename; 17. 删库:drop database [库名]; 18. 删表:drop table [表名]; 19. 数据操作 20. 添加:INSERT INTO [表名] VALUES('','',......顺序排列的数据); 21. 查询: SELECT * FROM [表名] WHERE ([条件]); 22. 建立索引:CREATE INDEX [索引文件名] ON [表名] ([字段名]); 23. 删除:DELETE FROM [表名] WHERE ([条件]); 24. 修改:UPDATE [表名] SET [修改内容如name = 'Mary'] WHERE [条件]; 25. 26. 导入外部数据文本: 27. 1.执行外部的sql脚本 28. 当前数据库上执行:mysql < input.sql 29. 指定数据库上执行:mysql [表名] < input.sql 30. 2.数据传入命令 load data local infile "[文件名]" into table [表名]; 31. 备份数据库:(dos下) 32. mysqldump --opt school>school.bbb 33. 34. 35. 36. 提示:常用MySQL命令以";"结束,有少量特殊命令不能加";"结束,如备份数据库 37. 一. 增删改查操作 38. 39. ================================================================================= 40. 1. 增: 41. insert into 表名 values(0,'测试'); 42. 注:如上语句,表结构中有自动增长的列,也必须为其指定一个值,通常为0 43. insert into 表名(id,name) values(0,'尹当')--同上 44. 2.删数据: 45. delete from 表名; 46. delete from 表名 where id=1; 47. 删除结构: 48. 删数据库:drop database 数据库名; 49. 删除表:drop table 表名; 50. 删除表中的列:alter table 表名 drop column 列名; 51. 3. 改: 52. 修改所有:updata 表名 set 列名='新的值,非数字加单引号' ; 53. 带条件的修改:updata 表名 set 列名='新的值,非数字加单引号' where id=6; 54. 4.查: 55. 查询所有的数据:select *from 表名; 56. 带条件的查询: 57. select *from 表名 where 列名=条件值; 58. Select * from 表名 where 列名 not like(like) '字符值' 59. 分页查询:select *from 表名 limit 每页数量 offset 偏移量; 60. 61. 62. 63. 二.操作命令 64. 65. ================================================================================= 66. 1. 查看数据库信息:show databases; 67. 2.查看表信息:show tables; 68. 3.查看表的结构:desc 表名 69. 4. 新建数据库:create database 数据库名; 70. 5.操作指定数据库:use 数据库名; 71. 6.新建数据表(先use 操作库); 72. create table 表名(规范为tbl_表名) 73. ( 74. id int auto_increment primary key,( auto_increment为自动增长) 75. name varchar(20) primary key 76. )ENGINE=InnoDB DEFAULT CHARSET=gbk//支持事务和设置表的编码 77. 6.2添加主外键: 78. alter table 外表名 add constraint FK_名称 foreign key(外列) references 主表名(主列) 79. 如现有两表 主表tbl_order 子表tbl_orderdetail 现子表tbl_orderdetail的oid列引用了主表tbl_order的oid列 80. 则命令如下: 81. alter table tbl_orderdetail add constraint FK_oid foreign key(oid) references tbl_order(oid) 82. 7.导出表,备份到一个文件中,如.txt,.doc 83. cmd命令窗口:mysqldump -u 用户名 -p 需要备份的数据库名 >备份的文件的保存路径和文件名 84. 注:如指定的文件不存在,mysql会自动添加一个文件,此命令不能加分号结尾(文件没有备份建数据库操作) 85. 8.导入数据库备份文件: 86. (1).在mysql命令窗口 87. (2).新建一个要导入的数据库(因为备份中没有备份建数据库操作) 88. (3).use 当前库名 89. (4).source 备份的文件的保存路径和文件名(此命令不能加分号结尾) 90. 91. 92. 三:系统操作 93. 94. ================================================================================= 95. 1. 打开服务:net start mysql(mysql为配置时,可自定名称) 96. 2.关闭服务:net stop mysql 97. 3.从cmd 模式进入mysql 98. (1).mysql -u 用户名 -p 回车>输入正确密码>进入欢迎 99. (2).mysql -h IP(本机localhost) -u 用户名 -p 回车>输入正确密码>进入欢迎 100. 3.退出:exit/quit; 101. 4.修改用户密码:mysqladmin -u 用户名 -p password 新密码 102. 5.处理中文乱码: 103. (1).在D:/MySQL /MySQL Server 5.0/data的操作数据为文件中查看是否为以下: 104. default-character-set=gbk 105. default-collation=gbk_chinese_ci 106. 107. (2).查看安装文件默认编码:D:/MySQL/MySQL Server 5.0>my>default-character-set=gbk 108. 109. ================================================================================= 110. 111. 112. 启动:net start mySql; 113. 进入:mysql -u root -p/mysql -h localhost -u root -p databaseName; 114. 列出数据库:show databases; 115. 选择数据库:use databaseName; 116. 列出表格:show tables; 117. 显示表格列的属性:show columns from tableName; 118. 建立数据库:source fileName.txt; 119. 匹配字符:可以用通配符_代表任何一个字符,%代表任何字符串; 120. 增加一个字段:alter table tabelName add column fieldName dateType; 121. 增加多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType; 122. 多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中; 123. 增加一个管理员帐户:grant all on *.* to user@localhost identified by "password"; 124. 每条语句输入完毕后要在末尾填加分号';',或者填加'/g'也可以; 125. 查询时间:select now(); 126. 查询当前用户:select user(); 127. 查询数据库版本:select version(); 128. 查询当前使用的数据库:select database(); 129. 130. 1、删除student_course数据库中的students数据表: 131. rm -f student_course/students.* 132. 133. 2、备份数据库:(将数据库test备份) 134. mysqldump -u root -p test>c:/test.txt 135. 备份表格:(备份test数据库下的mytable表格) 136. mysqldump -u root -p test mytable>c:/test.txt 137. 将备份数据导入到数据库:(导回test数据库) 138. mysql -u root -p test 139. 140. 3、创建临时表:(建立临时表zengchao) 141. create temporary table zengchao(name varchar(10)); 142. 143. 4、创建表是先判断表是否存在 144. create table if not exists students(……); 145. 146. 5、从已经有的表中复制表的结构 147. create table table2 select * from table1 where 1<>1; 148. 149. 6、复制表 150. create table table2 select * from table1; 151. 152. 7、对表重新命名 153. alter table table1 rename as table2; 154. 155. 8、修改列的类型 156. alter table table1 modify id int unsigned;//修改列id的类型为int unsigned 157. alter table table1 change id sid int unsigned;//修改列id的名字为sid,而且把属性修改为int unsigned 158. 159. 9、创建索引 160. alter table table1 add index ind_id (id); 161. create index ind_id on table1 (id); 162. create unique index ind_id on table1 (id);//建立唯一性索引 163. 164. 10、删除索引 165. drop index idx_id on table1; 166. alter table table1 drop index ind_id; 167. 168. 11、联合字符或者多个列(将列id与":"和列name和"="连接) 169. select concat(id,':',name,'=') from students; 170. 171. 12、limit(选出10到20条)<第一个记录集的编号是0> 172. select * from students order by id limit 9,10; 173. 174. 13、MySQL不支持的功能 175. 事务,视图,外键和引用完整性,存储过程和触发器 176. 177. 178. 14、MySQL会使用索引的操作符号 179. <,<=,>=,>,=,between,in,不带%或者_开头的like 180. 181. 15、使用索引的缺点 182. 1)减慢增删改数据的速度; 183. 2)占用磁盘空间; 184. 3)增加查询优化器的负担; 185. 当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加工作量,导致无法选择最优的查询方案; 186. 187. 16、分析索引效率 188. 方法:在一般的SQL语句前加上explain; 189. 分析结果的含义: 190. 1)table:表名; 191. 2)type:连接的类型,(ALL/Range/Ref)。其中ref是最理想的; 192. 3)possible_keys:查询可以利用的索引名; 193. 4)key:实际使用的索引; 194. 5)key_len:索引中被使用部分的长度(字节); 195. 6)ref:显示列名字或者"const"(不明白什么意思); 196. 7)rows:显示MySQL认为在找到正确结果之前必须扫描的行数; 197. 8)extra:MySQL的建议; 198. 199. 17、使用较短的定长列 200. 1)尽可能使用较短的数据类型; 201. 2)尽可能使用定长数据类型; 202. a)用char代替varchar,固定长度的数据处理比变长的快些; 203. b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能; 204. c)万一出现数据表崩溃,使用固定长度数据行的表更容易重新构造。使用固定长度的数据行,每个记录的开始位置都是固定记录长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了; 205. d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大; 206. 207. 18、使用not null和enum 208. 尽量将列定义为not null,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询; 209. 如果一列只含有有限数目的特定值,如性别,是否有效或者入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来表示的; 210. 211. 19、使用optimize table 212. 对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询性能。具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更为突出,因为其尺寸变化非常大。可以通过使用optimize table来整理碎片,保证数据库性能不下降,优化那些受碎片影响的数据表。 optimize table可以用于MyISAM和BDB类型的数据表。实际上任何碎片整理方法都是用mysqldump来转存数据表,然后使用转存后的文件并重新建数据表; 213. 214. 20、使用procedure analyse() 215. 可以使用procedure analyse()显示最佳类型的建议,使用很简单,在select语句后面加上procedure analyse()就可以了;例如: 216. select * from students procedure analyse(); 217. select * from students procedure analyse(16,256); 218. 第二条语句要求procedure analyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长; 219. 220. 21、使用查询缓存 221. 1)查询缓存的工作方式: 222. 第一次执行某条select语句时,服务器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中返回结果;当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃。 223. 2)配置缓存参数: 224. 变量:query_cache _type,查询缓存的操作模式。有3中模式,0:不缓存;1:缓存查询,除非与 select sql_no_cache开头;2:根据需要只缓存那些以select sql_cache开头的查询; query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。 225. 226. 22、调整硬件 227. 1)在机器上装更多的内存; 228. 2)增加更快的硬盘以减少I/O等待时间; 229. 寻道时间是决定性能的主要因素,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快; 230. 3)在不同的物理硬盘设备上重新分配磁盘活动; 231. 如果可能,应将最繁忙的数据库存放在不同的物理设备上,这跟使用同一物理设备的不同分区是不同的,因为它们将争用相同的物理资源(磁头)。 232. 233. 234. 235. 236. 237. 238. 239. 一、连接MYSQL。 240. 241. 格式: mysql -h主机地址 -u用户名 -p用户密码 242. 243. 1、例1:连接到本机上的MYSQL。 244. 245. 首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql> 246. 247. 2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为 root,密码为abcd123。则键入以下命令: 248. 249. mysql -h110.110.110.110 -uroot -pabcd123 250. 251. (注:u与root可以不用加空格,其它也一样) 252. 253. 3、退出MYSQL命令: exit (回车) 254. 255. 二、修改密码。 256. 257. 格式:mysqladmin -u用户名 -p旧密码 password 新密码 258. 259. 1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令 260. 261. mysqladmin -uroot -password ab12 262. 263. 注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。 264. 265. 2、例2:再将root的密码改为djg345。 266. 267. mysqladmin -uroot -pab12 password djg345 268. 269. 三、增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符) 270. 271. 格式:grant select on 数据库.* to 用户名@登录主机 identified by /"密码/" 272. 273. 例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令: 274. 275. grant select,insert,update,delete on *.* to test1@/"%/" Identified by /"abc/"; 276. 277. 但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。 278. 279. 例 2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从 internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。 280. 281. grant select,insert,update,delete on mydb.* to test2@localhost identified by /"abc/"; 282. 283. 如果你不想test2有密码,可以再打一个命令将密码消掉。 284. 285. grant select,insert,update,delete on mydb.* to test2@localhost identified by /"/"; 286. 287. 在上篇我们讲了登录、增加用户、密码更改等问题。下篇我们来看看MYSQL中有关数据库方面的操作。注意:你必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 数据表 tables