查看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子句,都应该使用圆括号明确地分组操作符。不要过分依赖默认计算次序,即使它确实是你想要的东西也是如此。使用圆括号没有什么坏处,它能消除歧义。
注意尾空格
尾空格可能会干扰通配符匹配。解决这个问题的一个简单的办法是在搜索模式最后附加一个%。一个更好的办法是使用函数去掉首尾空格。