2017/11/28 实习笔记 Mysql基础

来源:互联网 发布:淘宝官方活动报名入口 编辑:程序博客网 时间:2024/06/05 21:17

DML,数据操作语言,对表记录的操作

Select *  from  admin;(查询student表所有数据)(DQL)


插入数据(DML)

(1)   INSERT INTO 表名(列名1,列名2,...)VALUES(列值1,列值2,...);

(2)   INSERT INTO 表名 VALUES(列值1,列值2,...);

(在数据库中所有的字符串类型必须使用单引号,也可以使用双引号,日期类型也要使用单引号)。


注意:命令行只认识GBK,所有插入中文,或者查询时会出现乱码问题,此时只需要在查询或者插入之前加入如下这句话就行:

 

修改数据

UPDATE 表名 SET 列名1 = 列值1,...[ where 条件 ];

--条件必须是一个boolean类型的表达式或者值

--运算符:=,!=,<>(就是不等于     ),>,<,>=,<=,BETWEEN...AND,

IN(...)(表示in括号里面只要有一个满足就行),IS NULL(想修改值为null的不能直接写‘=null’,必须用is null替换非空用 is not null),NOT,OR,AND。

删除数据:

DELETE FROM 表名 [  WHERE 条件  ];

查看字符集:show  variables like  ‘char%’;


DQL(数据查询语言)

1.基本查询:

(1)查询所有列

select * from 表名;  (其中“*”表示查询所有的列)

(2)查询指定的列

select 列1[ ,列2, ... 列n ] from 表名;

(3)select distinct * 或者列1 [ ,列2,列3 ... 列n ] from 表名;

完全重复的记录只查一次

当查询结果中有一模一样的行时,只显示一行。一般出现较少,但是查询一列或者几列时可能性大。

(4)列运算

数量类型的列可以做加,减,乘,除运算。

例如:    select  sal*1.5 from emp;

select  sal+comm  from emp;

字符串类型可以做连续运算(MySQL中”+”不能作为连接符使用,所有使用如下连接)

例如:select  concat( ‘$’ , sal)  from emp;

转换null值

有时需要把null转换为其他值,例如comm+1000时,如果comm列存在null那么comm+null结果还是null,而其实此时我们应把null当成0来运算,如下:

select  ifnull( comm,0)+1000  from emp; 

其中ifnull(comm,0)代表如果comm中存在null,那么当成0来运算。

给列起别名:

有时我们查询出来的结果的列名不好看或者太长,这时我们需要给列名起个别名,这样在查询的时候就会显示别名。

例如 : select  ifnull( comm,0 )+1000 as 奖金 fromemp;  (其中as是可以省略的)

2.条件查询:

(1)与update,delete 语句一样,select 语句也可以使用where子句来控制记录。

例如:selectempno,ename,sal,comm from emp where sal >10000 and comm is not null;

 

(2)模糊查询:(like)

例如要查询姓张的,并且姓名一共两个字的时候,这就可以使用模糊查询。

select * from          emp  where ename like  ‘ 张_’;

其中下划线可以匹配任意一个字符,但是也只是能匹配一个字符。

当然也可以用’’%’’来进行匹配。

例如 select *from emp where ename like  ‘张% ’;

其中”%”可以匹配0到n个任意字符。

(3)排序:( orderby)

升序排:select *from emp order by sal asc;

表示按sal 升序排。

其中asc可以省略,因为默认为升序

使用多列进行排序:

例如:select *from emp order by sal asc ,comm desc;

(4)聚合函数

计算表中列的和:

--count :select  count(*) from emp ;

查最大值:

--max : select max(sal) from emp;

查最小值:

--min : select min(sal) from emp;

查工资和:

--sum : select sum(sal) from emp;

查平均值:

--avg : select avg(sal) from emp;

(5)分组查询:(groupby)

分组查询是把记录使用某一列进行分组,然后查询信息。

例如查看所有部门的记录数

select  deptno , count(*) fromemp group by deptno;

(使用deptno分组,然后查询部门编号和每个部门记录数)

select  deptno , count(*) fromemp  where sal >15000  group by deptno;


切记:分组前不参加分组的,我们在where里面就剔除掉了,分组后的限定条件是用聚合函数作为条件。

having子句可以让我们筛选分组后的各种数据,where子句在聚合前先筛选记录,也就是说作用在group by和having字句前。而 having子句在聚合后对组记录进行筛选。

语句的关键词顺序:

select

from

where

group by

having

order by

(6)limit子句(方言)

limit 用来限定查询结果的起始行,以及总行数。

例如查询起始行为第3行,一共查5行的记录。(分页查询使用)

select * from emp limit 2,5;


数据库的备份与恢复:

1.数据库导出SQL脚本

mysqldump  -u用户名 -p密码 数据库名称>生成的脚本文件路径

例如:mysqldump  -uroot -proot my_test>c:/a.sql

 

注意:结尾不要打分号,不要登录mysql,直接在win7命令行下执行。

我们备份的是数据库里面的表和数据,所以恢复的时候是没有数据库的生成的,我们必须自己恢复到现有的数据库里面,或者新建数据库恢复。

 

2.执行SQL脚本

方式一:

例如:mysql-uroot -proot my_test<c:/a.sql

注意点同上。

方式二:

登录mysql

source  SQL脚本路径

例如:source c:/a.sql

原创粉丝点击