




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一次插入多行数据: insert into tongxuelu (姓名,地址,电子邮件) select SName,SAddress,SEmail From Students Select Students.SName,Students.SAddress,Students.SEmail into tongxuelu From Students insert students (SName,SGrade,SSex) select 张可,7,1 UNION select 李阳,4,0 UNION select 杨晓,2,0 UNION select 汤芙,3,0 UNION select 苏三,7,1 UNION select 王丽,3,1 UNION select 张伟,7,1 UNION select 陈刚,4,1 UNION select 王娟,4,0 UNION 使用T-sql更新数据: Update setwhere使用Delete删除数据:Delete fromwhere使用Truncate Table 删除数据: Truncate table Students 使用Select语句进行查询:Select whereOrder byASC或DESC 查询所以数据行和列:Select *from Students 查询部分行列:Select SCode,SName,SAddress fromStudents Where SAddress=只查询此条件 查询部分行列:Select SCode,SName,SAddress fromStudents Where SAddress=除此条件,全部显示 查询语句中查询后显示的名字:Select SCode AS 学员编号,SName AS 学员姓名,SAddress AS 学员地址 fromStudents Where SAddress=除此条件,全部显示 查询空行:Select SName from Students where SEmai Is null 在查询中使用常量列:Select 姓名=SName ,地址=SAddress,河北新龙AS学校名称 FromStudents 查询返回的的限制行数: Select Top 5 SName, SAddress from Students Where SSex=0-查询返回5为女生和地址信息查询排序:Select StudentID AS 学员编号, Score AS 成绩 From Score Where Score60 order by Score,CourseID-在学员成绩的基础上再按照ID进行排序模糊查询:Select *From Students where SName Like张%-查询所有姓张的学员 Select *From Card Where ID Like008%A,C%-查询不是8月发行的A或者C使用Between范围查询 Select * From SCore Where Score Between 60 AND 80-查询60和80之间的所有值使用IN在列举值内查询 Select SName AS学员姓名 From Students Where SAddress IN (北京,上海,天津)order by SAddress-查询北京上海天津的学员姓名聚合函数:SUM 总和 AVG 平均值 MAX最大值 MIN最小值 COUNT(*) 返回有几个分组查询:Select StudentID AS 学员编号,CourseID AS 内部测试,AVG(Score) AS 内部测试平均成绩 From Score Group by StudentID,CoureID-既按学员编号,又按内部测试编号进行分组排序Having(筛选):用于分组后的筛选条件:Select StudentID AS 学员编号,CourseID AS 内部测试,AVG(Score) AS 内部测试平均成绩 From Score Group by StudentID,CoureID Having COUNT(Score)1多表连接查询内联查询:inner join1.在where子句中指定连接条件:查询学生姓名和成绩的sqlSelect Students.SName,Score.CourseID,Score.Score from Student ,Score where Students.SCode=Score.StudentID2在From子句中使用join.on:查询学生姓名和成绩的sqlSelect Students.SName,Score.CourseID,Score.Score from Student AS S INNER JOIN Score AS C ON(S.Scode=C.StudentID)外联查询左外连接 left jion:以学员信息为主表、学员成绩表为从表的左外联接查询。Select S.SName,C.CourseID,C.Score from Student AS S Left outer join Score AS C ON S.Scode=C.StudentID 右外连接right join :在pubs数据库中,在Title和publishers表之间的右向外联结僵包括所有的出版商,在Titles表中没有书名的也被列出。Select Title.Title_id,Title.Title, publishers.pub_name From Titles Right Outer Join publishers on Titles.pub_id=publishers.pub_id02.连接命令:mysql -h主机地址 -u用户名 -p用户密码 03.创建数据库:create database 库名 04.显示所有数据库: show databases; 05.打开数据库:use 库名 06.当前选择的库状态:SELECT DATABASE(); 07.创建数据表:CREATE TABLE 表名(字段名 字段类型(字段要求) 字段参数, .); 08.显示数据表字段:describe 表名; 09.当前库数据表结构:show tables; 10.更改表格 11. ALTER TABLE 表名 ADD COLUMN 字段名 DATATYPE 12. 说明:增加一个栏位(没有删除某个栏位的语法。 13. ALTER TABLE 表名 ADD PRIMARY KEY (字段名) 14. 说明:更改表得的定义把某个栏位设为主键。 15. ALTER TABLE 表名 DROP PRIMARY KEY (字段名) 16. 说明:把主键的定义删除。 17.显示当前表字段:show columns from tablename; 18.删库:drop database 库名; 19.删表:drop table 表名; 20.数据操作 21.添加:INSERT INTO 表名 VALUES(,.顺序排列的数据); 22.查询: SELECT * FROM 表名 WHERE (条件); 23.建立索引:CREATE INDEX 索引文件名 ON 表名 (字段名); 24.删除:DELETE FROM 表名 WHERE (条件); 25.修改:UPDATE 表名 SET 修改内容如name = Mary WHERE 条件; 26. 27.导入外部数据文本: 28.1.执行外部的sql脚本 29.当前数据库上执行:mysql input.sql 30.指定数据库上执行:mysql 表名 school.bbb 34. 35. 36. 37.提示:常用MySQL命令以;结束,有少量特殊命令不能加;结束,如备份数据库 38.一. 增删改查操作 39. 40.= 41.1. 增: 42.insert into 表名 values(0,测试); 43.注:如上语句,表结构中有自动增长的列,也必须为其指定一个值,通常为0 44.insert into 表名(id,name) values(0,尹当)-同上 45.2.删数据: 46.delete from 表名; 47.delete from 表名 where id=1; 48.删除结构: 49.删数据库:drop database 数据库名; 50.删除表:drop table 表名; 51.删除表中的列:alter table 表名 drop column 列名; 52.3. 改: 53.修改所有:updata 表名 set 列名=新的值,非数字加单引号 ; 54.带条件的修改:updata 表名 set 列名=新的值,非数字加单引号 where id=6; 55.4.查: 56.查询所有的数据:select *from 表名; 57.带条件的查询: 58.select *from 表名 where 列名=条件值; 59.Select * from 表名 where 列名 not like(like) 字符值 60.分页查询:select *from 表名 limit 每页数量 offset 偏移量; 61. 62. 63. 64.二.操作命令 65. 66.= 67.1. 查看数据库信息:show databases; 68.2.查看表信息:show tables; 69.3.查看表的结构:desc 表名 70.4. 新建数据库:create database 数据库名; 71.5.操作指定数据库:use 数据库名; 72.6.新建数据表(先use 操作库); 73.create table 表名(规范为tbl_表名) 74.( 75.id int auto_increment primary key,( auto_increment为自动增长) 76.name varchar(20) primary key 77.)ENGINE=InnoDB DEFAULT CHARSET=gbk/支持事务和设置表的编码 78.6.2添加主外键: 79.alter table 外表名 add constraint FK_名称 foreign key(外列) references 主表名(主列) 80.如现有两表 主表tbl_order 子表tbl_orderdetail 现子表tbl_orderdetail的oid列引用了主表tbl_order的oid列 81.则命令如下: 82.alter table tbl_orderdetail add constraint FK_oid foreign key(oid) references tbl_order(oid) 83.7.导出表,备份到一个文件中,如.txt,.doc 84.cmd命令窗口:mysqldump -u 用户名 -p 需要备份的数据库名 备份的文件的保存路径和文件名 85.注:如指定的文件不存在,mysql会自动添加一个文件,此命令不能加分号结尾(文件没有备份建数据库操作) 86.8.导入数据库备份文件: 87.(1).在mysql命令窗口 88.(2).新建一个要导入的数据库(因为备份中没有备份建数据库操作) 89.(3).use 当前库名 90.(4).source 备份的文件的保存路径和文件名(此命令不能加分号结尾) 91. 92. 93.三:系统操作 94. 95.= 96.1. 打开服务:net start mysql(mysql为配置时,可自定名称) 97.2.关闭服务:net stop mysql 98.3.从cmd 模式进入mysql 99.(1).mysql -u 用户名 -p 回车输入正确密码进入欢迎 100.(2).mysql -h IP(本机localhost) -u 用户名 -p 回车输入正确密码进入欢迎 101.3.退出:exit/quit; 102.4.修改用户密码:mysqladmin -u 用户名 -p password 新密码 103.5.处理中文乱码: 104.(1).在D:MySQL MySQL Server 5.0data的操作数据为文件中查看是否为以下: 105.default-character-set=gbk 106.default-collation=gbk_chinese_ci 107. 108.(2).查看安装文件默认编码:D:MySQLMySQL Server 5.0mydefault-character-set=gbk 109. 110.= 111. 112. 113.启动:net start mySql; 114.进入:mysql -u root -p/mysql -h localhost -u root -p databaseName; 115.列出数据库:show databases; 116.选择数据库:use databaseName; 117.列出表格:show tables; 118.显示表格列的属性:show columns from tableName; 119.建立数据库:source fileName.txt; 120.匹配字符:可以用通配符_代表任何一个字符,代表任何字符串; 121.增加一个字段:alter table tabelName add column fieldName dateType; 122.增加多个字段:alter table tabelName add column fieldName1 dateType,add columns fieldName2 dateType; 123.多行命令输入:注意不能将单词断开;当插入或更改数据时,不能将字段的字符串展开到多行里,否则硬回车将被储存到数据中; 124.增加一个管理员帐户:grant all on *.* to userlocalhost identified by password; 125.每条语句输入完毕后要在末尾填加分号;,或者填加g也可以; 126.查询时间:select now(); 127.查询当前用户:select user(); 128.查询数据库版本:select version(); 129.查询当前使用的数据库:select database(); 130. 131.1、删除student_course数据库中的students数据表: 132.rm -f student_course/students.* 133. 134.2、备份数据库:(将数据库test备份) 135.mysqldump -u root -p testc:test.txt 136.备份表格:(备份test数据库下的mytable表格) 137.mysqldump -u root -p test mytablec:test.txt 138.将备份数据导入到数据库:(导回test数据库) 139.mysql -u root -p test 140. 141.3、创建临时表:(建立临时表zengchao) 142.create temporary table zengchao(name varchar(10); 143. 144.4、创建表是先判断表是否存在 145.create table if not exists students(); 146. 147.5、从已经有的表中复制表的结构 148.create table table2 select * from table1 where 11; 149. 150.6、复制表 151.create table table2 select * from table1; 152. 153.7、对表重新命名 154.alter table table1 rename as table2; 155. 156.8、修改列的类型 157.alter table table1 modify id int unsigned;/修改列id的类型为int unsigned 158.alter table table1 change id sid int unsigned;/修改列id的名字为sid,而且把属性修改为int unsigned 159. 160.9、创建索引 161.alter table table1 add index ind_id (id); 162.create index ind_id on table1 (id); 163.create unique index ind_id on table1 (id);/建立唯一性索引 164. 165.10、删除索引 166.drop index idx_id on table1; 167.alter table table1 drop index ind_id; 168. 169.11、联合字符或者多个列(将列id与:和列name和=连接) 170.select concat(id,:,name,=) from students; 171. 172.12、limit(选出10到20条) 173.select * from students order by id limit 9,10; 174. 175.13、MySQL不支持的功能 176.事务,视图,外键和引用完整性,存储过程和触发器 177. 178. 179.14、MySQL会使用索引的操作符号 180.,=,=,between,in,不带%或者_开头的like 181. 182.15、使用索引的缺点 183.1)减慢增删改数据的速度; 184.2)占用磁盘空间; 185.3)增加查询优化器的负担; 186.当查询优化器生成执行计划时,会考虑索引,太多的索引会给查询优化器增加工作量,导致无法选择最优的查询方案; 187. 188.16、分析索引效率 189.方法:在一般的SQL语句前加上explain; 190.分析结果的含义: 191.1)table:表名; 192.2)type:连接的类型,(ALL/Range/Ref)。其中ref是最理想的; 193.3)possible_keys:查询可以利用的索引名; 194.4)key:实际使用的索引; 195.5)key_len:索引中被使用部分的长度(字节); 196.6)ref:显示列名字或者const(不明白什么意思); 197.7)rows:显示MySQL认为在找到正确结果之前必须扫描的行数; 198.8)extra:MySQL的建议; 199. 200.17、使用较短的定长列 201.1)尽可能使用较短的数据类型; 202.2)尽可能使用定长数据类型; 203.a)用char代替varchar,固定长度的数据处理比变长的快些; 204.b)对于频繁修改的表,磁盘容易形成碎片,从而影响数据库的整体性能; 205.c)万一出现数据表崩溃,使用固定长度数据行的表更容易重新构造。使用固定长度的数据行,每个记录的开始位置都是固定记录长度的倍数,可以很容易被检测到,但是使用可变长度的数据行就不一定了; 206.d)对于MyISAM类型的数据表,虽然转换成固定长度的数据列可以提高性能,但是占据的空间也大; 207. 208.18、使用not null和enum 209.尽量将列定义为not null,这样可使数据的出来更快,所需的空间更少,而且在查询时,MySQL不需要检查是否存在特例,即null值,从而优化查询; 210.如果一列只含有有限数目的特定值,如性别,是否有效或者入学年份等,在这种情况下应该考虑将其转换为enum列的值,MySQL处理的更快,因为所有的enum值在系统内都是以标识数值来表示的; 211. 212.19、使用optimize table 213.对于经常修改的表,容易产生碎片,使在查询数据库时必须读取更多的磁盘块,降低查询性能。具有可变长的表都存在磁盘碎片问题,这个问题对blob数据类型更为突出,因为其尺寸变化非常大。可以通过使用optimize table来整理碎片,保证数据库性能不下降,优化那些受碎片影响的数据表。 optimize table可以用于MyISAM和BDB类型的数据表。实际上任何碎片整理方法都是用mysqldump来转存数据表,然后使用转存后的文件并重新建数据表; 214. 215.20、使用procedure analyse() 216.可以使用procedure analyse()显示最佳类型的建议,使用很简单,在select语句后面加上procedure analyse()就可以了;例如: 217.select * from students procedure analyse(); 218.select * from students procedure analyse(16,256); 219.第二条语句要求procedure analyse()不要建议含有多于16个值,或者含有多于256字节的enum类型,如果没有限制,输出可能会很长; 220. 221.21、使用查询缓存 222.1)查询缓存的工作方式: 223.第一次执行某条select语句时,服务器记住该查询的文本内容和查询结果,存储在缓存中,下次碰到这个语句时,直接从缓存中返回结果;当更新数据表后,该数据表的任何缓存查询都变成无效的,并且会被丢弃。 224.2)配置缓存参数: 225.变量:query_cache _type,查询缓存的操作模式。有3中模式,0:不缓存;1:缓存查询,除非与 select sql_no_cache开头;2:根据需要只缓存那些以select sql_cache开头的查询; query_cache_size:设置查询缓存的最大结果集的大小,比这个值大的不会被缓存。 226. 227.22、调整硬件 228.1)在机器上装更多的内存; 229.2)增加更快的硬盘以减少I/O等待时间; 230.寻道时间是决定性能的主要因素,逐字地移动磁头是最慢的,一旦磁头定位,从磁道读则很快; 231.3)在不同的物理硬盘设备上重新分配磁盘活动; 232.如果可能,应将最繁忙的数据库存放在不同的物理设备上,这跟使用同一物理设备的不同分区是不同的,因为它们将争用相同的物理资源(磁头)。 233. 234. 235. 236. 237. 238. 239. 240.一、连接MYSQL。 241. 242.格式: mysql -h主机地址 -u用户名 p用户密码 243. 244.1、例1:连接到本机上的MYSQL。 245. 246.首先在打开DOS窗口,然后进入目录 mysqlbin,再键入命令mysql -uroot -p,回车后提示你输密码,如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:mysql 247. 248.2、例2:连接到远程主机上的MYSQL。假设远程主机的IP为:10,用户名为 root,密码为abcd123。则键入以下命令: 249. 250.mysql -h10 -uroot -pabcd123 251. 252.(注:u与root可以不用加空格,其它也一样) 253. 254.3、退出MYSQL命令: exit (回车) 255. 256.二、修改密码。 257. 258.格式:mysqladmin -u用户名 -p旧密码 password 新密码 259. 260.1、例1:给root加个密码ab12。首先在DOS下进入目录mysqlbin,然后键入以下命令 261. 262.mysqladmin -uroot -password ab12 263. 264.注:因为开始时root没有密码,所以-p旧密码一项就可以省略了。 265. 266.2、例2:再将root的密码改为djg345。 267. 268.mysqladmin -uroot -pab12 password djg345 269. 270.三、增加新用户。(注意:和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符) 271. 272.格式:grant select on 数据库.* to 用户名登录主机 identified by 密码 273. 274.例1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MYSQL,然后键入以下命令: 275. 276.grant select,insert,update,delete on *.* to test1% Identified by abc; 277. 278.但例1增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见例2。 279. 280.例 2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从 internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。 281. 282.grant select,insert,update,delete on mydb.* to test2localhost identified by abc; 283. 284.如果你不想test2有密码,可以再打一个命令将密码消掉。 285. 286.grant select,insert,update,delete on mydb.* to test2localhost identified by ; 287. 288.在上篇我们讲了登录、增加用户、密码更改等问题。下篇我们来看看MYSQL中有关数据库方面的操作。注意:你必须首先登录到MYSQL中,以下操作都是在MYSQL的提示符下进行的,而且每个命令以分号结束。 289. 290.一、操作技巧 291. 292.1、如果你打命令时,回车后发现忘记加分号,你无须重打一遍命令,只要打个分号回车就可以了。也就是说你可以把一个完整的命令分成几行来打,完后用分号作结束标志就OK。 293. 294.2、你可以使用光标上下键调出以前的命令。但以前我用过的一个MYSQL旧版本不支持。我现在用的是mysql- 3.23.27-beta-win。 295. 296.二、显示命令 297. 298.1、显示数据库列表。 299. 300.show databases; 301. 302.刚开始时才两个数据库:mysql和test。mysql库很重要它里面有MYSQL的系统信息,我们改密码和新增用户,实际上就是用这个库进行操作。 303. 304.2、显示库中的数据表: 305. 306.use mysql; 打开库,学过FOXBASE的一定不会陌生吧 307. 308.show tables; 309. 310.3、显示数据表的结构: 311. 312.describe 表名; 313. 314.4、建库: 315. 316.create database 库名; 317. 318.5、建表: 319. 320.use 库名; 321. 322.create table 表名 (字段设定列表); 323. 324.6、删库和删表: 325. 326.drop database 库名; 327. 328.drop table 表名; 329. 330.7、将表中记录清空: 331. 332.delete from 表名; 333. 334.8、显示表中的记录: 335. 336.select * from 表名; 337. 338.三、一个建库和建表以及插入数据的实例 339. 340.drop database if exists school; /如果存在SCHOOL则删除 341. 342.create database school; /建立库SCHOOL 343. 344.use school; /打开库SCHOOL 345. 346.create table teacher /建立表TEACHER 347. 348.( 349. 350.id int(3) auto_increment not null primary key, 351. 352.name char(10) not null, 353. 354.address varchar(50) default 深圳, 355. 356.year date 357. 358.); /建表结束 359. 360./以下为插入字段 361. 362.insert into teacher values(,glchengang,深圳一中,1976-10-10); 363. 364.insert into teacher values(,jack,深圳一中,1975-12-23); 365. 366.注:在建表中(1)将ID设为长度为3的数字字段:int(3)并让它每个记录自动加一:auto_increment并不能为空:not null而且让他成为主字段primary key(2)将NAME设为长度为10的字符字段(3)将ADDRESS设为长度50的字符字段,而且缺省值为深圳。varchar和char有什么区别呢,只有等以后的文章再说了。(4)将YEAR设为日期字段。 367. 368.如果你在mysql提示符键入上面的命令也可以,但不方便调试。你可以将以上命令原样写入一个文本文件中假设为 school.sql,然后复制到c:下,并在DOS状态进入目录mysqlbin,然后键入以下命令: 369. 370.mysql -uroot -p密码 school.bbb 390. 391.注释:将数据库school备份到school.bbb文件,school.bbb是一个文本文件,文件名任取,打开看看你会有新发现。 392. 393. 394. 395.mysql命令行常用命令 396. 397.第一招、mysql服务的启动和停止 398.net stop mysql 399.net start mysql 400.第二招、登陆mysql 401.语法如下: mysql -u用户名 -p用户密码 402.键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是: 403.mysql 404.注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP 405.第三招、增加新用户 406.格式:grant 权限 on 数据库.* to 用户名登录主机 identified by 密码 407.如,增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入mysql,然后键入以下命令: 408.grant select,insert,update,delete on *.* to user1localhost Identified by password1; 409.如果希望该用户能够在任何机器上登陆mysql,则将localhost改为%。 410.如果你不想user1有密码,可以再打一个命令将密码去掉。 411.grant select,insert,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年监狱医学罪犯健康评估模拟考试答案及解析
- 2025年整形外科美容手术术前术后护理考核答案及解析
- 工业和信息化部科技型企业孵化器申报书(标准级、卓越级)
- 工信局国家安全教育培训课件
- 超星德法23年考试专项测试题有答案
- 衍生品管理暂行办法
- 行业黑名单管理办法
- 梅毒感染器械处理课件
- 乡村振兴人才培育:2025年新型职业农民培养策略研究
- 农业种植合作社生产管理协议
- 专家顾问聘用合同协议书范本7篇
- 2025房屋买卖合同范本(下载)
- 融合教育课件
- 2025年常州市中考英语试卷(含标准答案及解析)
- 2025年贵州事业单位护理专业知识试题和答案
- 1.1《土壤里面有什么》课件 2025-2026学年苏教版科学三年级上册
- 汽修厂污染防治知识培训课件
- 1.2我们都是社会的一员 课件- 2025-2026学年统编版道德与法治八年级上册
- 2025年北师大版新教材数学一年级上册教学计划(含进度表)
- 登革热与基孔肯雅热防控指南
- 学校2025年秋季学期1530安全教育记录(全学期带内容模板)
评论
0/150
提交评论