数据库基本操作
一、进入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的行
当AND和OR多个组合时,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';#匹配大小写