快捷键win+R 打开CMD命令窗口
在CMD命令窗口敲入命令 mysql -hlocalhost -uroot -p
后按回车(注意这里的"-h"、"-u"、"-p"不能省略) 进入mysql数据库,其中"-h"表示服务器名,localhost表示本地;"-u"为数据库用户名,root是MySQL默认用户名;"-p"为密码,如果设置了密码,可直接在-p后链接输入,如:-p888888,用户没有设置密码,显示Enter password时,直接回车即可。
显示如图则连接成功!
在CMD命令窗口敲入命令: create database bjpowernode;(此处为自定义的数据库名)
在CMD命令窗口敲入命令: use bjpowernode; 再enter一下
在CMD命令窗口敲入命令:source +电脑中的bjpowernode.sql脚本文件路径。
在CMD命令窗口敲入命令: cmd ->drop database bjpowernode;
注意!!!以上 语句不能遗漏分号,命令则不需要分号!!!
cmd ->show tables;
cmd ->desc dept;
如图所示,dept表格包含三个字段(DEPTNO、DNAME、LOC)
cmd -> show databases;
方法一:连接上MySQL时,cmd —> select version();
方法二:不连接MySQL时
第一步:cmd先退出SQL连接,cmd —> exit
第二步:在windows环境下查看 ,cmd —> mysql --version
创建:cmd —>create database bjpowernode;(此处为自定义的数据库名)
使用:cmd —>use bjpowernode;
cmd —>select database();
结束一条正在编写的语句:cmd —>键入\c
三种: cmd键入quit cmd键入exit 快捷键Ctrl+c 。
但是我的Windows下用Ctrl+c快捷键方式不能退出MySQL,不知道什么原因。
cmd —>show tables from +database name;
cmd —>show create table +table name;
一个字段:cmd —>select (字段名)from (表格名);
多个字段用逗号隔开即可;
select empno,ename,mgr from emp;
查询所有字段:select * from (表格名)
select * from emp;
as 可以省略,命名为中文要加引号
select empno,ename,sal as '年薪' from emp;
等于 | = |
---|---|
不等于 | <>或!= |
小于 | < |
小于等于 | <= |
大于 | > |
大于等于 | >= |
两个值之间 | between … and …. ; 等同于 >= and <= |
为空 | is null;is not null 不为空 |
并且 | and |
或者 | or |
包含 | in;相当于多个or(not in:不在这个范围中) |
like | like称为模糊查询,支持%或下划线匹配;%匹配任意个字符;一个下划线只匹配一个字符 |
select empno, ename, sal from emp where sal=5000;
select empno, ename from emp where job=’manager’;#job为字符串,要加引号
select empno, ename, sal from emp where sal <> 5000;
select empno, ename, sal from emp where sal between 1600 and 3000;#包含了最大与最小值
Null为空,但不是空串,如果查询为null的字段,采用is null,不能用 = null
select * from emp where comm is null;
表示所有的条件必须满足
select * from emp where job='MANAGER' and sal > 2500;
只要满足条件即可,相当于包含
select * from emp where job='MANAGER' or job='SALESMAN';
and优先级>or优先级; 关于运算符的问题:不用记,没有把握尽量采用括号。
查询薪水大于1800,并且部门代码为20或30的(正确的写法)
select * from emp where sal > 1800 and (deptno = 20 or deptno = 30);
查询薪水大于1800,并且部门代码为20或30的员工(错误的写法)
select * from emp where sal > 1800 and deptno = 20 or deptno = 30;
表示包含的意思,完全可以采用or来表示,采用in会更简洁一些
查询出job为manager或者job为salesman的员工
select * from emp where job in ('manager','salesman');
查询出薪水包含1600和薪水包含3000的员工
select * from emp where sal in(1600, 3000);
查询出薪水不包含1600和薪水不包含3000的员工(not写法1)
select * from emp where not (sal = 1600 or sal = 3000);
查询出薪水不包含1600和薪水不包含3000的员工(not写法2)
select * from emp where sal not in (1600, 3000);
查询出薪水不包含1600和薪水不包含3000的员工(第三种写法)
select * from emp where sal <> 1600 and sal <> 3000;
可以实现模糊查询,like支持%和下划线匹配。Like 中的表达式必须放到引号中。
查询姓名以M开头所有的员工
select * from emp where ename like 'M%';
查询姓名以N结尾的所有的员工
select * from emp where ename like '%N';
查询姓名中包含O的所有的员工
select * from emp where ename like '%O%';
查询姓名中第二个字符为A的所有员工
select * from emp where ename like '_A%';
MySQL在windows下是不区分大小写的,将script文件导入MySQL后表名也会自动转化为小写,结果再 想要将数据库导出放到linux服务器中使用时就出错了。因为在linux下表名区分大小写而找不到表,查了很多都是说在linux下更改MySQL的设置使其也不区分大小写,但是有没有办法反过来让windows 下大小写敏感呢。其实方法是一样的,相应的更改windows中MySQL的设置就行了。
具体操作:
在MySQL的配置文件my.ini中增加一行:
lower_case_table_names = 0
其中 0:区分大小写,1:不区分大小写
MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:
1、数据库名与表名是严格区分大小写的;
2、表的别名是严格区分大小写的;
3、列名与列的别名在所有的情况下均是忽略大小写的;
4、变量名也是严格区分大小写的; MySQL在Windows下都不区分大小写
order by:默认升序排列(由小到大)select …from…where…order by…
按照薪水由小到大排序(系统默认由小到大)
select * from emp order by sal;
取得job为MANAGER的员工,按照薪水由小到大排序(系统默认由小到大)
select * from emp where job='MANAGER' order by sal;
手动指定按照薪水由小到大排序
select * from emp order by sal asc;
手动指定按照薪水由大到小排序
select * from emp order by sal desc;
如果采用多个字段排序,如果根据第一个字段排序重复了,会根据第二个字段排序
按照job和薪水倒序()
select * from emp order by job desc, sal desc;
不建议使用此种方式,采用数字含义不明确,程序不健壮
按照薪水升序
select * from emp order by 6;
特点:输入一行输出一行
函数名 | 功能及使用 |
---|---|
Lower | 转换小写 |
upper | 转换大写 |
substr | 取子串【substr ( 被截取的字符串,起始下标,截取的长度)】 |
length | 取长度 |
trim | 去空格 |
str_to_date | 将字符串转换成日期【string–>date 】 |
date_format | 格式化日期【date–>string】 |
format | 设置千分位【format(编辑的字段,设置的分位数)】 |
round | 四舍五入 |
rand() | 生成随机数 |
Ifnull | 可以将null转换成一个具体值 【 select ifnull(comm,0) from emp;】 |
注意:分组函数自动忽略空值,不需要手动的加where条件排除空值。
select count(*) from emp where xxx; 符合条件的所有记录总数。
select count(comm) from emp; comm这个字段中不为空的元素总数。
注意:分组函数不能直接使用在where关键字后面。
mysql> select ename,sal from emp where sal > avg(sal);
ERROR 1111 (HY000): Invalid use of group function
函数名 | 功能使用方法 | 使用方法 |
---|---|---|
count | 取得记录数 | Count(*)表示取得所有记录,为null的值也会取得;count(字段名称),不会取得为null的记录 |
sum | 求和 | select sum(sal) from emp;取得薪水的合计 ,null会被忽略 |
avg | 取平均 | select avg(sal) from emp; |
max | 取最大的数 | select max(sal) from emp; |
min | 取最小的数 | select min(str_to_date(hiredate, ‘%Y-%m-%d’)) from emp; |