mysql数据库操作(1)
1.mysql 数据库备份:
语法:
MYSQLDUMP -uUSER -pPASS DataBase > Path
其中:USER 是用户名,PASS 是密码,DataBase 是数据库名, Path 是数据库备份存储的位置。
备注:1)执行备份是在系统条件下,而非 mysql 状态下。
2)请使用正确的文件地址,在文件地址中要使用双斜杠 “\\” 来代替单斜杠 “\”。
2.mysql 数据库的恢复
语法:
mysql -uUSER -pPASS DataBase < Path
其中:USER 是用户名,PASS 是密码,DataBase 是数据库名, Path 是备份文件存储的位置。
3.实现跨数据库表的内容的复制
如实现将 db_database3 数据库中的 user 表复制到 database4 中的 user 表,在实现数据库表的内容复制时,需要在每个数据库表前要加上数据库的名称。
具体语法如:
insert into db_database4.user(column1,column2) select column1,column2 from db_database3.user;
备注:1)仍然需要你自己在 db_database4 中建立一个与 db_database3 结构一样的 user 表;
2)要保证表中字段的数据类型的一致性,否则会导致出入数据的错误。
4.使用 UNION ALL 语句批量插入数据
是用 UNION ALL 语句实现批处理,其语法如下:
INSERT tableName SELECT columnValue,... UNION ALL SELECT columnValue,......
1.tableName:要添加数据的数据表。
2.columnValue:要添加到数据表中的数据。
例如:往一个 user 表中一次插入多条数据:其中表结构如下:
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | varchar(20) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
我们使用常规的 insert into 插入语句如下:
mysql> insert into user values('','tom');
Query OK, 1 row affected (0.06 sec) mysql> insert into user values('','kill');
Query OK, 1 row affected (0.09 sec) mysql> insert into user values('','bill');
Query OK, 1 row affected (0.09 sec)
而若使用 union all 语句如下:
mysql> insert user select '','jim' union all select '','kill' union all select '','bill';
备注:我们常用的 insert into 语句每次只能实现插入一条语句,这样重复输入往往不方便,这个时候可以选择使用union all 来替代。
5.更新数据库中的表---其中包括:对表本身结构的更改与对表中数据的更改
1)对表本身结构的更改,使用 alter 语句。
语法:
alter table 表名
例如:
a.追加语法:alter table 表名
add (column datatype,column datatype,...);
例如:alter table tt_table add image blob; //在tt_table表中添加一个image列用来保存大头照
b.修改语法:alter table 表名 modify (column datatype,column datatype,...);
例如:alter table tt_table modify job varchar(60);//修改tt_table表的job列,使其长度为60
c.删除语法:alter table 表名 drop (column);
例如:alter table tt_table drop job; //删除tt_table表中的job列
d,修改表名:rename table 表名 to 新表名;
例如:rename table tt_table to tt;//修改tt_table表的表名为tt
e.将tt_table表的字符集修改为utf8
alter table tt_table character set utf8;
f.将tt_table原表中的列名food 属性为varchar(20)修改为sale_food 属性为varchar(40)
alter table tt_table change column food sale_food varchar(40);
2)对表中数据的更改,使用 update 语句。
语法:
UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
例1:我们为 lastname 是 "Wilson" 的人添加 firstname
UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson' ;
例2:我们会修改地址(address),并添加城市名称(city):
UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson';
备注:alter的修改只涉及表结构方面,而不能对其中保存的数据进行修改!掌握这点可以混淆使用 alter 和 update 。
6.将数据表清空-----DELETE 语句与TRUNCATE TABLE 语句
1)DELETE 语句
DELETE 语句用于删除表中的行。
语法:
DELETE FROM 表名称 WHERE 列名称 = 值
例1:删除lastname为wilson的行:
DELETE FROM Person WHERE LastName = 'Wilson'
例2:删除所有行,可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:
DELETE FROM table_name
或者:
DELETE * FROM table_name
2)TRUNCATE TABLE 语句
TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同,二者均删除表中的全部行;但 TRUNCATE TABLE 比 DELETE 速度快,而且使用的系统和事物日志资源少。
DELETE 语句每次删除一行,并在事务日志中为所删除的每一行做一项记录;
TRUNCATE TABLE 则通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放,减少了日志空间的额占用。
TRUNCATE TABLE 语法:
TRUNCATE TABLE 数据表名
7.聚集函数 SUM 实现数据汇总
sum函数具体语法:
SUM ([ALL|DISTINCT] expression)
①ALL:对所有的值进行聚集函数运算。ALL 是默认值。
②DISTINCT:指定 SUM 返回唯一值的和。
③expression:是常量、列或函数,或者是算术、按位与字符串等运算符的任意组合。如果 expression 是精确数字或近似数字数据类型分类(bit数据类型除外)的表达式,则不允许使用聚集函数和子查询。
例如:统计一个班级语文,数学,英语各科的总成绩:
select sum(math),sum(chiense),sum(english) from tt_table ;
统计一个班级语文成绩平均分:
select sum(chinese)/count(*) from tt_table;
注意:a.sum仅对数值起作用,否则会报错。
b.对多列求和,逗号不能少。
c.在统计过程中,null 值将被忽略。
8.聚集函数 AVG 实现计算平均值
AVG函数具体语法:
AVG ([ALL|DISTINCT] expression)
①ALL:对所有的值进行聚集函数运算。ALL 是默认值。
②DISTINCT:指定 AVG 操作只能使用每个值的唯一实例,而不管该值出现多少次。
③expression:是常量、列或函数,或者是算术、按位与字符串等运算符的任意组合。如果 expression 是精确数字或近似数字数据类型分类(bit数据类型除外)的表达式,则不允许使用聚集函数和子查询。
例如:求一个班级的平均分
select avg(chinese) from tt_table;
9.聚集函数 MIN/MAX 求数据表中的最小/最大值
具体语法:
MIN|MAX ([ALL|DISTINCT] expression)
①ALL:对所有的值进行聚集函数运算。ALL 是默认值。
②DISTINCT:指定每个唯一值都被考虑。DISTINCT对MIN、MAX无意义。
③expression:该参数为表达式,由常量、列名、函数以及算术运算符、按位运算符和字符串运算符任意组合而成。
例如:求班级最高分和最低分
select man(chinese+english+maht),min(chinese+english+maht) from tt_table;
10.聚集函数 COUNT 返回表达式中值的个数
COUNT 函数是唯一允许使用通配符作为参数的聚集函数。
语法:
COUNT({[ALL|DISTINCT] expression} | * )
①ALL:若没有该参数,SQL 将对所有的值进行聚集函数运算。ALL 是默认值。
②DISTINCT:指定每个唯一值都被考虑。
③expression:该参数为表达式,其类型可以是除 uniqueidentifier、text、image 或 ntext 之外的任何类型。
④ * :指定应该计算所有行以返回表中行的总数。COUNT(*) 不需要任何参数,而且不能与 DISTINCT 一起使用。COUNT(*) 返回指定表中的行的数量而不消除副本,对每行分别进行计数,包括含有空值的行。
例如:统计一个班级共有多少学生:
select count(name) from tt_table;
或者
select count(*) from tt_table;//这种分页的时候用得比较多
统计总分大于250的人数有多少?
select count(*) from tt_table where (math+english+chinese)>250;
注意:count统计只有有值才计数。若统计的name列上有一个为null的值,则该行不计入count的计数结果之中。
11.在where子句中经常被使用的运算符
1) >大于 <小于 <=小于等于 >=大于等于 =等于 <>不等于
2) between...and ... 显示在某以区间的值
3) in(set) 显示在in列表中的值,定点查询。例in(100,200)即为显示查询列表中含有100和200这两个值的结果集。
4) like 模糊查询("%" 和 "_")
5) is null 判断是否为空
6) and 多个条件同时成立
7) or 多个条件任一成立
8) not 不成立
注意1:不等于运算符跟其它语言有点不一样,需要注意一下。
注意2:like语句中,"%"代表零个或多个任意字符,"_"代表一个字符。
例如:
查询英语分数在80--90之间的同学:
select name from tt_table where english>80 and english<90;
查询英语分数在80--90之间的同学:
select name from tt_table where english between 80 and 90;
查询数学分数为89,90,91的同学:
select name from tt_table where math in(89,90,91);
查询所有姓“李”的学生成绩:
select * from tt_table where name like '李%';
12.对数据进行排序查询---使用 ORDER BY 子句与 DESC|ASC 关键字
ORDER BY 子句的作用是分类输出,并且根据表中包含的一列或多列表达式将输出的值按升序或降序排列。他不改变数据库中行的顺序,只是简单的改变查询输出的值的显示顺序。
其语法格式如下:
SELECT ... WHERE ... ORDER BY expression [ASC|DESC],...
参数说明:
①expression:一个表达式,通常是一个输出时用来分类的字段。
②[ASC|DESC]:可选项,代表升序或降序。
③ ,... :指可以有多于一个的分类表达式,并且每一个表达式都可以为升序或降序。
例如:对 user 表中的图书价格进行降序排序输出
select * from user order by price desc;
13. group by 与 order by 之区别?
order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。
group by 从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。
什么是“聚合函数”?
像sum()、count()、avg()等都是“聚合函数”
使用group by 的目的就是要将数据分类汇总。
一般如:
select 单位名称,count(职工id),sum(职工工资) form [某表] group by 单位名称
这样的运行结果就是以“单位名称”为分类标志统计各单位的职工人数和工资总额。
在sql命令格式使用的先后顺序上,group by 先于 order by。
select 命令的标准格式如下:
SELECT select_list [ INTO new_table ] FROM table_source [ WHERE search_condition ]
[ GROUP BY group_by_expression ] [ HAVING search_condition ]
例如:
select name,sum(total) sum from tb group by name order by sum asc;
备注:
SUM 函数只能用于数据类型是 int ,smallint,decimal,numeric,float,real,money 和 smallmoney的字段。
14.mysql 数据库中使用 LIMIT 子句来限制语句返回的行数
mysql 数据库中提供了 LIMIT 子句来限制 select 语句返回的行数。如果查询数据的 SQL 语句中包含 GROUP BY 与 ORDER BY 子句,则 LIMIT 子句放在 GROUP BY 子句与 ORDER BY 子句的后面。语法如下:
SELECT [DISTIN | UNIQUE] (*,columname[AS alias], ...) FROM table WHERE ... ORDER BY ... LIMIT([offset] , rows);
参数说明:
①offset:指定要返回的第一行的偏移量。开始行的偏移量是0;
②row:指定返回行的最大数目。
例如:
从 tb 表中查询最开始的3条记录。
select * from tb limit 0,3;
查询 tb 表中的最后的3条记录。
select * from tb order by id desc limit 0, 3;
备注 :
1.mysql 数据库提供了 LIMIT 子句,在SQL Server数据库提供了相应的 TOP n ,两者需要区别开来。
2.LIMIT 子句的参数中,第一个参数是可选参数。如果值给定一个参数,则代表偏移量为0的返回行的最大数目。例如,表达式 limit(3)与表达式 limit(0,3)是等价的。
3.如果查询数据的 SQL 语句中包含 GROUP BY 与 ORDER BY 子句,则 LIMIT 子句一定要放在 GROUP BY 子句与 ORDER BY 子句的后面。
////end
mysql数据库操作(1)的更多相关文章
- php : mysql数据库操作类演示
设计目标: 1,该类一实例化,就可以自动连接上mysql数据库: 2,该类可以单独去设定要使用的连接编码(set names XXX) 3,该类可以单独去设定要使用的数据库(use XXX): 4,可 ...
- php MySQL数据库操作类源代码
php MySQL数据库操作类源代码: <?php class MySQL{ private $host; //服务器地址 private $name; //登录账号 private $pwd; ...
- 设计模式 - 单例模式mysql数据库操作类
待续... index.php 调用方法: <?php header('Content-Type:text/html; charset=utf8'); require 'instance.php ...
- MySQL数据库操作常用命令
MySQL数据库操作常用命令DOS连接数据库1.安装MySQL配置好环境2.运行cmd命令net start mysql3.找到mysql文件根目录输入命令mysql -h localhost -u ...
- Python/MySQL(四、MySQL数据库操作)
Python/MySQL(四.MySQL数据库操作) 一.数据库条件语句: case when id>9 then ture else false 二.三元运算: if(isnull(xx)0, ...
- Java通过JDBC 进行MySQL数据库操作
转自: http://blog.csdn.net/tobetheender/article/details/52772157 Java通过JDBC 进行MySQL数据库操作 原创 2016年10月10 ...
- Mysql 数据库操作之DDL、DML、DQL语句操作
Mysql 数据库操作之DDL.DML.DQL语句操作 设置数据库用户名密码 l Show databases 查看数据库列表信息 l 查看数据库中的数据表信息 ,格式: use 数据库名: sh ...
- Python进行MySQL数据库操作
最近开始玩Python,慢慢开始喜欢上它了,以前都是用shell来实现一些自动化或者监控的操作,现在用Python来实现,感觉更棒,Python是一门很强大的面向对象语言,所以作为一个运维DBA或者运 ...
- Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句 # python3 # author lizm # datetime 2018-02-01 10:00:00 # -*- co ...
- (转载)常用的Mysql数据库操作语句大全
打开CMD,进入数据库命令:mysql -hlocalhost -uroot -p 退出数据库:exit 用户管理: 1.新建用户: >CREATE USER name IDENTIFIED B ...
随机推荐
- js 攻坚克难
new new : 官方解释: 如果在一个函数前面带上new来调用,那么背地里将会创建一个连接到该函数的prototype的成员的新对象,同时this会被绑定到哪个新对象上: new 是用来创建对象的 ...
- python 模块学习——time模块
Python语言中与时间有关的模块主要是:time,datetime,calendar time模块中的大多数函数是调用了所在平台C library的同名函数, 所以要特别注意有些函数是平台相关的,可 ...
- zoom,zoom与haslayout的关系,zoom与transform: scale( )的区别
1.zoom:(缩放)
- 关于Staltstack
saltstate服务搭建: cat /etc/hosts(master和minion都添加) 127.0.0.1 localhost localhost.localdomain localhos ...
- C# 后台POST提交方式
1.第一种方式:用最新框架,但是针对IIS服务器的操作系统有关系,非R2的收不到数据: using (var reqConts = new MultipartFormDataContent()) { ...
- [luogu4054 JSOI2009] 计数问题(2D BIT)
传送门 Solution 2D BIT模板 Code //By Menteur_Hxy #include <cmath> #include <cstdio> #include ...
- Maven学习总结(8)——使用Maven构建多模块项目
Maven学习总结(八)--使用Maven构建多模块项目 在平时的Javaweb项目开发中为了便于后期的维护,我们一般会进行分层开发,最常见的就是分为domain(域模型层).dao(数据库访问层). ...
- HDU 5446 Unknown Treasure
Unknown Treasure Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Other ...
- uva A Spy in the Metro(洛谷 P2583 地铁间谍)
A Spy in the Metro Secret agent Maria was sent to Algorithms City to carry out an especially dangero ...
- Android图片异步载入框架Android-Universal-Image-Loader
Android-Universal-Image-Loader是一个图片异步载入,缓存和显示的框架.这个框架已经被非常多开发人员所使用,是最经常使用的几个Android开源项目之中的一个,主流的应用,随 ...