数据库基本操作

一、进入MySQL

mysql -uroot -p -P3307;	//-u指定用户,-P指定端口,若端口为3306,则不用显式指定

二、控制台输出混乱

​ 语句结尾使用\G而不是分号,就会分行显示;

三、基本指令

SHOW DATABASEs;	#显示所有数据库
USE mysql1;		#使用数据库mysql1
SHOW TABLES;	#显示所有表(必须先选定数据库
#=============显示customers表的结构==================
SHOW COLUMNS FROM customers;
DESC customers;
DESCRIBE customers;
#==================================================
SELECT * FROM customers;		#显示customers表储存的内容
SHOW STATUS;	#显示服务器状态信息
SHOW VARIABLES LIKE 'CHARACTER%';	#显示服务器编码设置
SHOW GRANTS;	#显示所有用户的安全权限
SHOW ERRORS;	#显示服务器错误信息
SHOW ERRORS;	#显示服务器警告信息

四、查

SELECT * FROM customers;	#显示customers表的所有内容
SELECT name,id FROM customers;	#显示customers表中的name和id列
SELECT DISTINCT name,id FROM customers;	#仅显示name和id列都不同的行
SELECT * FROM customers LIMIT 5;	#仅显示前五列
SELECT * FROM customers LIMIT 5,3;	#从第五行开始显示3行

五、排序

SELECT * FROM customers ORDER BY id LIMIT 5;		#按id升序排列
SELECT * FROM customers ORDER BY id DESC LIMIT 5; 	#降序排列
SELECT * FROM customers ORDER BY id ASC LIMIT 5;	#按id升序排列
SELECT * FROM customers ORDER BY id,name LIMIT 5;	#按id升序排列。若id列相同,则按name列排

六、条件过滤

​ 过滤可以使用WHERE基于行过滤,也可以使用HAVING基于分组进行过滤。

SELECT * FROM customers WHERE id>10 ORDER BY id;	#仅显示id>10的

WHERE逻辑运算符

| 运算符 | 意义 | | :———–: | :————–: | | = | 等于 | | <> | 不等于 | | != | 不等于 | | <= | 小于或等于 | | >= | 大于或等于 | | BETWEEN…AND | 再指定两个值之间 |

SELECT id,name FROM customers WHERE id BETWEEM 10 AND 15;	#显示id在10到15之间的列

逻辑运算符

| 运算符 | 意义 | | :—-: | :—–: | | IS | 是 | | IN | 在…中 | | NOT | 逻辑非 | | AND | 逻辑和 | | OR | 逻辑或 |

例:

SELECT id,email FROM customers WHERE email IS NULL;	#显示email为空的行
SELECT id,email FROM customers WHERE email IS NOT NULL;	#显示email不为空的行
SELECT id,email FROM customers WHERE id IN(1002,1003,1004);#显示id=1002、1003、1004的行

​ 当ANDOR多个组合时,mysql优先处理AND。

select * from products where vend_id=1002 or vend_id=1003 and prod_price>=10;
#选择vend_id=1003并且prod_price>=10的列和vend_id=1002的列

七、通配符过滤

| 符号 | 含义 | | :–: | ——————– | | % | 任意字符出现任意次数 | | _ | 匹配单个任意字符 | | | |

SELECT id,name FROM customers WHERE LIKE 'zz%';#显示name以zz开头的列
SELECT id,name FROM customers WHERE LIKE '%zz%';#显示name含有zz的列

​ 通配符是否区分大小写取决于mysql的设置。

八、正则匹配

SELECT id,name FROM customers WHERE name REGEXP '^Z';#匹配以Z开头的列,不区分大小写
SELECT id,name FROM customers WHERE name REGEXP BINARY'^Z';#匹配大小写