人人范文网 范文大全

Mysql基本常用操作工作总结(推荐)

发布时间:2020-03-02 05:35:15 来源:范文大全 收藏本文 下载本文 手机版

Mysql基本操作

1.MySQL多表查询

1) 使用SELECT子句进行多表查询

SELECT 字段名 FROM 表1,表2 … WHERE 表1.字段 = 表2.字段 AND 其它查询条件

SELECT a.id,a.name,a.addre,a.date,b.math,b.english,b.chinese FROM tb_demo065_tel AS b,tb_demo065 AS a WHERE a.id=b.id 注:在上面的的代码中,以两张表的id字段信息相同作为条件建立两表关联,但在实际开发中不应该这样使用,最好用主外键约束来实现

2) 使用表的别名进行多表查询

如:SELECT a.id,a.name,a.addre,b.math,b.english,b.chinese FROM tb_demo065 a,tb_demo065_tel b WHERE a.id=b.id AND b.id=\'$_POST[textid]\' SQL语言中,可以通过两种方式为表指定别名 第一种是通过关键字AS指定,如

SELECT a.id,a.name,a.addre,b.math,b.english,b.chinese FROM tb_demo065 AS a,tb_demo065_tel AS b WHERE a.id=b.id 第二种是在表名后直接加表的别名实现

SELECT a.id,a.name,a.addre,b.math,b.english,b.chinese FROM tb_demo065 a,tb_demo065_tel b WHERE a.id=b.id 使用表的别名应注意几下几点

(1)别名通常是一个缩短了的表名,用于在连接中引用表中的特定列,如果连接中的多个表中有相同的名称列存在,必须用表名或表的别名限定列名 (2)如果定义了表的别名就不能再使用表名

3) 合并多个结果集

SQL语言中,可以通过UNION 或 ALL将多个SELECT语句的查询结果合并输出,这两个关键字的使用说明如下:

UNION:利用该关键字可以将多个SELECT 语句的查询结果合并输出,并删除重复行

ALL:利用该关键字可以将多个SELECT 语句的查询结果合并输出,但不会删除重复行

在使用UNION或ALL关键字将多个表合并输出时,查询结果必须具有相同的结构并且数据类型必须兼容,另外使用UNION时两张表的字段数量也必须相同,否则会提示SQL语句有错误。

e.x:SELECTid,name,pwd FROM tb_demo067 UNION SELECT uid,price,date FROM tb_demo067_tel 4) 简单嵌套查询

子查询:子查询是一个SELECT查询,返回单个值且嵌套在SELECT、INSERT、UPDATE和DELETE语句或其它查询语句中,任何可以使用表达式的地方都可以使用子查询.SELECT id,name,sex,date FROM tb_demo068 WHERE id in(SELECT id FROM tb_demo068 WHERE id=\'$_POST[test]\') 内连接:把查询结果作为WHERE子句的查询条件即称为内连接

5) 复杂的嵌套查询

多表之间的嵌套查询可以通过谓词IN实现,语法格式如下: test_expreion[NOT] IN{ subquery } 参数说明:test_expreion指SQL表达式,subquery包含某结果集的子查询 多表嵌套查询的原理:无论是多少张表进行嵌套,表与表之间一定存在某种关联,通过WHERE子句建立此种关联实现查询

6) 嵌套查询在查询统计中的应用

实 现多表查询时,可以同时使用谓词ANY、SOME、ALL,这些谓词被称为定量比较谓词,可以和比较运算符联合使用,判断是否全部返回值都满足搜索条 件.SOME和ANY谓词是存在量的,只注重是否有返回值满足搜索条件,这两个谓词的含义相同,可以替换使用;ALL谓词称为通用谓词,它只关心是否有谓 词满足搜索要求.SELECT * FROM tb_demo069_people WHERE uid IN(SELECT deptID FROM tb_demo069_dept WHERE deptName=\'$_POST[select]\') SELECT a.id,a.name FROM tb_demo067 AS a WHERE idANY 大于子查询中的某个值

>=ANY 大于等于子查询中的某个值

!=ANY或ANY 不等于子查询中的某个值 >ALL 大于子查询中的所有值

>=ALL 大于等于子查询中的所有值

!=ALL或ALL 不等于子查询中的所有值

7) 使用子查询作派生的表

在实际项目开发过程中经常用到从一个信息较为完善的表中派生出一个只含有几个关键字段的信息表,通过子查询就可以来实现这一目标,如

SELECT people.name,people.chinese,people.math,people.english FROM (SELECT name,chinese,math,english FROM tb_demo071) AS people 注:子查询应遵循以下规则: (1)由比较运算符引入的内层子查询只包含一个表达式或列名,在外层语句中的WHERE子句内命名的列必须与内层子查询命名的列兼容

(2)由不可更改的比较运算符引入的子查询(比较运算符后面不跟关键字ANY或ALL)不包括GROUP BY 或 HAVING子句,除非预先确定了成组或单个的值 (3)用EXISTS引入的SELECT列表一般都由*组成,不必指定列名 (4)子查询不能在内部处理其结果

8) 使用子查询作表达式

SELECT (SELECT AVG(chinese)FROM tb_demo071),(SELECT AVG(english)FROM tb_demo071),(SELECT AVG(math)FROM tb_demo071) FROM tb_demo071 注:在使用子查询时最好为列表项取个别名,这样可以方便用户在使用mysql_fetch_array()函数时为表项赋值,如

SELECT (SELECT AVG(chinese) FROM tb_demo071) AS yuwen ,(SELECT AVG(english) FROM tb_demo071) AS yingyu,(SELECT AVG(math) FROM tb_demo071) AS shuxue FROM tb_demo071 9) 使用子查询关联数据

SELECT * FROM tb_demo072_student WHERE id=(SELECT id FROM tb_demo072_cla WHERE claName = \'$_POST[text]\') 10) 多表联合查询

利用SQL语句中的UNION,可以将不同表中符合条件的数据信息显示在同一列中。 e.x:SELECT * FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten 注:使用UNION时应注意以下两点:

(1)在使用UNION运算符组合的语句中,所有选择列表的表达式数目必须相同,如列名、算术表达式及聚合函数等

(2)在每个查询表中,对应列的数据结构必须一样。

11) 对联合后的结果进行排序

为了UNION的运算兼容,要求所有SELECT语句都不能有ORDER BY语句,但有一种情况例外,那就是在最后一个SELECT语句中放置ORDER BY 子句实现结果的最终排序输出。

e.x:SELECT * FROM tb_demo074_student UNION SELECT * FROM tb_demo074_fasten ORDER BY id 使用UNION条件上相对比较苛刻,所以使用此语句时一定要注意两个表项数目和字段类型是否相同

12) 条件联合语句

SELECT * FROM tb_demo076_BEIJING GROUP BY name HAVING name=\'人民邮电出版社\' OR name=\'机械工业出版社\' UNION SELECT * FROM tb_demo076_BEIJING GROUP BY name HAVING name \'人民邮电出版社\' AND name \'机械工业再版社\' ORDER BY id 上面语句应用了GROUP BY分组语句和HAVING语句实现条件联合查询。其实现目的是先保证将\'人民邮电出版社\'和\'机械工业出版社\'始终位于名单最前列,然后再输出其它的出版社

13) 简单内连接查询

SELECT filedlist FROM table1 [INNER] JOIN table2 ON table1.column1 = table2.column1 其中,filedlist是要显示的字段,INNER表示表之间的连接方式为内连接,table1.column1=table2.column1用于指明两表间的连接条件,如: SELECT a.name,a.addre,a.date,b.chinese,b.math,b.english FROM tb_demo065 AS a INNER JOIN tb_demo065_tel AS b on a.id=b.id 14) 复杂内连接查询

复杂的内连接查询是在基本的内连接查询的基础上再附加一些查询条件,如: SELECT a.name,a.addre,a.date,b.chinese,b.math,b.english FROM tb_demo065 AS a INNER JOIN tb_demo065_tel AS b on a.id=b.id WHERE b.id=(SELECT id FROM tb_demo065 WHERE tb_demo065.name=\'$_POST[text]\') 总之,实现表与表之间的关联的本质是两表之间存在共同的数据项或者相同的数据项,通过WHERE 子句或内连接INNER JOIN … ON 语句将两表连接起来,实现查询

15) 使用外连接实现多表联合查询 (1)LEFT OUTER JOIN表示表之间通过左连接方式相互连接,也可简写成LEFT JOIN,它是以左侧的表为基准故称左连接,左侧表中所有信息将被全部输出,而右侧表信息则只会输出符合条件的信息,对不符合条件的信息则返回NULL e.x:SELECTa.name,a.addre,b.math,b.english FROM tb_demo065 AS A LEFT OUTER JOIN tb_demo065_tel AS b ON a.id=b.id (2)RIGHT OUTER JOIN表示表之间通过右连接方式相互连接,也可简写成RIGHT JOIN,它是以右侧的表为基准故称右连接,右侧表中所有信息将被全部输出,而左侧表信息则只会输出符合条件的信息,对不符合条件的信息则返回NULL E.X:SELECTa.name,a.addre,b.math,b.english FROM tb_demo065 AS A RIGHT OUTER JOIN tb_demo065_tel AS b ON a.id=b.id 16) 利用IN或NOTIN关键字限定范围

e.x:SELECT * FROM tb_demo083 WHERE code IN(SELECT code FROM tb_demo083 WHERE code BETWEEN \'$_POST[text1]\' AND \'$_POST[text2]\') 利用IN可指定在范围内查询,若要求在某范围外查询可以用NOT IN代替它

17) 由IN引入的关联子查询

e.x:SELECT * FROM tb_demo083 WHERE code IN(SELECT code FROM tb_demo083 WHERE code = \'$_POST[text]\') 18) 利用HAVING语句过滤分组数据 HAVING子句用于指定组或聚合的搜索条件,HAVING通常与GROUP BY 语句一起使用,如果SQL语句中不含GROUP BY子句,则HAVING的行为与WHERE子句一样.e.x:SELECTname,math FROM tb_demo083 GROUP BY id HAVING math > \'95 2.数据库表常用操作

1) 创建表

命令:create table ( [,..]); 例如,建立一个名为MyCla的表

mysql> create table MyCla( > id int(4) not null primary key auto_increment, > name char(20) not null, > sex int(4) not null default \'0\', > degree double(16,2)); 2) 删除数据表

命令:drop table 例如:删除表名为 MyCla 的表

mysql> drop table MyCla; DROP TABLE用于取消一个或多个表。您必须有每个表的DROP权限。所有的表数据和表定义会被取消,所以使用本语句要小心!

注意:对于一个带分区的表,DROP TABLE会永久性地取消表定义,取消各分区,并取消储存在这些分区中的所有数据。DROP TABLE还会取消与被取消的表有关联的分区定义(.par)文件。

对与不存在的表,使用IF EXISTS用于防止错误发生。当使用IF EXISTS时,对于每个不存在的表,会生成一个NOTE。

RESTRICT和CASCADE可以使分区更容易。目前,RESTRICT和CASCADE不起作用。

3) 表插入数据

命令:insert into [( [,..])] values ( 值1 )[, ( 值n )] 例如:往表MyCla中插入二条记录, 这二条记录表示:编号为1的名为Tom的成绩为96.45, 编号为2 的名为Joan 的成绩为82.99, 编号为3 的名为Wang 的成绩为96.5。

mysql> insert into MyClavalues(1,\'Tom\',96.45),(2,\'Joan\',82.99), (2,\'Wang\', 96.59); eg: insert into vperson (vpname,keywords,type)values(\"http://weibo.com-备胎3参考影片\",\"百星酒店\",3),(\"http://weibo.com-备胎3参考影片\",\"美人邦\",3) 注意:insert into每次只能向表中插入一条记录。 4) 查询表中的数据

1)、查询所有行

命令: select from where 例如:查看表 MyCla 中所有数据

mysql> select * from MyCla; 2)、查询前几行数据

例如:查看表 MyCla 中前2行数据 mysql> select * from MyCla order by id limit 0,2; select一般配合where使用,以查询更精确更复杂的数据。

3)、多条件模糊查询

mysql>select * from table where (name1 like \'%key1%\' orname2 like \'%key2%\' or name3 like \'%key3%\'); 5) 删除表中数据

命令:delete from 表名 where 表达式

例如:删除表 MyCla中编号为1 的记录 mysql> delete from MyCla where id=1; 6) 修改表中数据 语法:update 表名 set 字段=新值,… where 条件

mysql> update MyCla set name=\'Mary\' where id=1; 例子1:单表的MySQL UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] [ORDER BY ...] [LIMIT row_count] 例子2:多表的UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] table_references SET col_name1=expr1 [, col_name2=expr2 ...] [WHERE where_definition] UPDATE语法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。如果没有 WHERE子句,则更新所有的行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。LIMIT子句用于给定一个限值,限制可以被更新的行的数目。

7) 增加索引

命令:mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]); 例子: mysql> alter table employee add index emp_name (name); 8) 加主关键字的索引

命令:mysql> alter table 表名 add primary key (字段名); 例子: mysql> alter table employee add primary key(id); 9) 加唯一限制条件的索引

命令:mysql> alter table 表名 add unique 索引名 (字段名); 例子: mysql> alter table employee add unique emp_name2(cardnumber); 10) 删除某个索引

命令:mysql> alter table 表名 drop index 索引名; 例子: mysql>alter table employee drop index emp_name; 11) 增加字段

命令:mysql> ALTER TABLE table_name ADD field_namefield_type; 12) 修改字段

命令:mysql> ALTER TABLE table_name CHANGE old_field_namenew_field_namefield_type; 13) 删除字段

mysql>ALTER TABLE table_name DROP field_name; 14) 调整字段顺序

命令:ALTER TABLE `user_movement_log` CHANGE `GatewayId` `GatewayId` int not null default 0 AFTER RegionID 15) 修改表名

命令:rename table 原表名 to 新表名; 命令:alter table t1 rename t2; 例如:在表MyCla名字更改为YouCla mysql> rename table MyCla to YouCla; 当你执行 RENAME 时,你不能有任何锁定的表或活动的事务。你同样也必须有对原初表的 ALTER 和 DROP 权限,以及对新表的 CREATE 和 INSERT 权限。

如果在多表更名中,MySQL 遭遇到任何错误,它将对所有被更名的表进行倒退更名,将每件事物退回到最初状态。

RENAME TABLE 在 MySQL 3.23.23 中被加入。

3.备份数据库

命令在DOS的[url=file://\\mysql\\bin]\\mysql\\bin[/url]目录下执行

Eg: /home/mysql/mysql5500/bin/mysqldump -uroot -rv6aKOpt49IMmr26GKkpZ4 renet emotion -w\'vpuid=64676 or vpuid=64677 or vpuid=64678 or vpuid=64679 or vpuid=64680\' > /home/mysql/data_backup/emotion2015-3-29vpuids.sql 1) 导出整个数据库

导出文件默认是存在mysql\\bin目录下

mysqldump -u 用户名 -p 数据库名 > 导出的文件名

mysqldump -u user_name -p123456 database_name>outfile_name.sql 2) 导出一个表

mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名

mysqldump -u user_name -p database_nametable_name>outfile_name.sql 3) 导出一个数据库结构

mysqldump -u user_name -p -d –add-drop-table database_name>outfile_name.sql -d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table 4) 带语言参数导出

mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name>outfile_name.sql 例如,将aaa库备份到文件back_aaa中:

[root@test1 root]# cd /home/data/mysql

[root@test1 mysql]# mysqldump -u root -p --opt aaa>back_aaa 4.数据导入导出 1) 数据导出

SELECT * INTO OUTFILE \'d: est.txt\' FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'\"\' LINES TERMINATED BY \'\\n\' FROM test.table 2) 数据导入

LOAD DATA INFILE \'/tmp/fi.txt\' INTO TABLE test.fii FIELDS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'\"\' LINES TERMINATED BY \'\\n\' FIELDS TERMINATED BY \',\' 字段间分割符

OPTIONALLY ENCLOSED BY \'\"\' 将字段包围 对数值型无效 LINES TERMINATED BY \'\\n\' 换行符

例如:

使用SELECT ...INTO OUTFILE 以逗号分隔字段的方式将数据导入到一个文件中: SELECT * INTO OUTFILE \'D:\\log1.txt\' FIELDS TERMINATED BY \',\' FROM log.log1 将刚刚导出的文件log1.txt导入到表log1相同结构的log2中: LOAD DATA INFILE \'D:\\log1.txt\' INTO TABLE aa.log2 FIELDS TERMINATED BY \',\'。 source导入sql的命令行如下: source \"路径名\"+/mytest_emp_dept.sql 例如:

source f:/emotion20151218.sql;

MySQL学习心得

mySql总结

IE基本操作

工作室基本操作

大BSC基本操作

Oracle数据库数据库基本操作

校讯通基本操作

电脑的基本操作

酒店前台基本操作

windows基本操作教案

Mysql基本常用操作工作总结(推荐)
《Mysql基本常用操作工作总结(推荐).doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档