Mysql常用命令(2)

449 阅读6分钟

查看msyql版本

 mysql --version
 ​
 mysql -V

连接MySql

 -uroot -proot

-u、-p与后面用户名、密码不能有空格,在之后写配置文件应当注意这个问题

安全登录

 mysql -uroot -p
 //下面会弹出让你输密码的地方

创建数据库

 create database be;

结束SQL语句

多条SQL语句必须以分号(;)分隔。

MySQL如同多数DBMS一样,不需要在单条SQL语句后加分号。

当然,如果愿意可以总是加上分号。事实上,即使不一定需要,但加上分号肯定没有坏处

如果你使用的是mysql命令行,必须加上分号来结束SQL语句。

选择数据库

 use be

导入数据

 source  D:\ bjpowernode.sql

删除数据库

 drop database be;

查询当前使用的数据库

 select  database();
 ​

终止一条语句

 \c

退出mysql

 exit

查看命令执行情况(mysql)

在命令前面加explain

查看现有数据库

 show databases;

记得加分号

查看当前库中的表

 show tables;

显示表列(数据类型、是否为主键、其它数据)

 show columns from customers;
 ​
 //快捷方式
 DESCRIBE customers;

查看其他库中的表

 show tables from emp;

查看表结构

 desc emp;

查看表创建语句

 show create table emp;

查看库创建语句

 SHOW CREATE DATABASE

常见查询(select)

查询一个字段

 select ename from emp;

查询多个字段

 select empno, ename from emp;

用逗号隔开

查询全部字段

 select * from emp;

在程序中编写SQL语句时不建议使用select * 这种形式,建议写明字段,这样可读性强.

将查询出来的字段显示为中文(as)

 select empno as ‘员工编号’, ename as ‘员工姓名’, sal*12 as ‘年薪’ from emp;

注意:字符串必须添加单引号 | 双引号

检索出有不同值的列表(DISTINCT)

只显示不同的值

 select distinct id from emp;
 SELECT DISTINCT vend_id, prod_price from emp;

除非指定的两个列都不同,否则所有行都将被检索出来。

限制结果(limit)

 select id from emp limit 5;

limit 5指示MySQL返回不多于5行

为得出下一个5行,可指定要检索的开始行和行数

 select id from emp limit 5,5;

LIMIT 5, 5指示MySQL返回从行5开始的5行

使用完全限定的表名(同时使用表名和列字)

 select emp.id from emp;

也可以完全限定数据库

 select emp.id from be.emp;

be为数据库

排序检索数据(select,order by)

排序采用order by子句,order by后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔,order by默认采用升序,如果存在where子句那么order by必须放到where语句的后面

单一字段排序

 select * from emp order by sal;

默认从小到大

按多个列排序

 select * from emp order by id,name;

指定排序方向

默认为升序

 select * from emp order by sal desc;

指定多个参数

DESC关键字只应用到直接位于其前面的列名。

一个列中最高或最低的值

找最大

 select * from emp order by sal desc limit 1;

条件检索(where,select)

相等测试

 select id from emp where id=1;

where子句操作符

where利用子句操作符来控制条件。

操作符说明
=等于
<>不等于
!=不等于
<小于
<=小于等于
大于
>=大于等于
between在指定的两个值之间

检查单个值

 select name from emp where name='Tom';

单个值只需相应变换条件即可

sql不区分大小写

如果将值与串类型的列进行比较,则需要限定引号。用来与数值列进行比较的值不用引号。

范围值检查

 select id from emp where between 1 and 5;

空值检查(NULL)

 select name from emp where name is null;

这条语句返回没有名字的所有列,没有就不返回。

and操作符

组合where语句

 select id,price from emp where id=1 and where price<=8;

AND 用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。

可以添加多个过滤条件,每添加一条就要使用一个AND。

or操作符

MySQL检索匹配任一条件的行。

 select id,price from emp where id=1 or where price<=8;

同时使用and与or

SQL(像多数语言一样)在处理OR操作符前,优先处理AND操作符。

使用圆括号明确地分组相应的操作符

 select name,price from emp where (id=1 or id=6) and price>=10;

in操作符

IN操作符用来指定条件范围,范围中的每个条件都可以进行匹配。

 select name,price from emp where id in (1,3) order by name;

IN操作符一般比OR操作符清单执行更快。

not操作符

WHERE子句中的NOT操作符有且只有一个功能,那就是否定它之后所跟的任何条件。

 select * from emp where not (sal = 1600 or sal = 3000);

使用通配符进行过滤

LIKE操作符&百分号(%)通配符

为在搜索子句中使用通配符,必须使用LIKE操作符。

在搜索串中,%表示任何字符出现任意次数。

找出所有以词pri起头的产品

 select id,name from emp where name like 'pri%';

区分大小写 根据MySQL的配置方式,搜索可以是区分大小写的。

匹配任何位置包含文本med的值

 select id,name from emp where name like '%med%';

找出以s起头以e结尾的所有

 select id,name from emp where name like 's%e';

%代表搜索模式中给定位置的0个、1个或多个字符。

下划线(_)通配符

下划线的用途与%一样,但下划线只匹配单个字符而不是多个字符。

使用通配符的技巧

通配符搜索的处理一般要比前面讨论的其他搜索所花时间更长。

不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。

在确实需要使用通配符时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。

注意事项

在处理SQL语句时,其中所有空格都被忽略。

区分大小写和排序顺序

在对文本性的数据进行排序时,A与a是否相同取决于数据库如何设置。在字典(dictionary)排序顺序中,A被视为与a相同,这是MySQL(和大多数数据库管理系统)的默认行为。

WHERE子句的位置

在同时使用ORDER BY和WHERE子句时,应该让ORDER BY位于WHERE之后,否则将会产生错误

在WHERE子句中使用圆括号

任何时候使用具有AND和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。不要过分依赖默认计算次序,即使它确实是你想要的东西也是如此。使用圆括号没有什么坏处,它能消除歧义。

注意尾空格

尾空格可能会干扰通配符匹配。解决这个问题的一个简单的办法是在搜索模式最后附加一个%。一个更好的办法是使用函数去掉首尾空格。