# 数据库基本操作 ## 一、进入MySQL ```mysql mysql -uroot -p -P3307; //-u指定用户,-P指定端口,若端口为3306,则不用显式指定 ``` ## 二、控制台输出混乱 ​ 语句结尾使用`\G`而不是分号,就会分行显示; ## 三、基本指令 ```mysql 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; #显示服务器警告信息 ``` ## 四、查 ```mysql 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行 ``` ## 五、排序 ```mysql 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`基于分组进行过滤。 ```mysql SELECT * FROM customers WHERE id>10 ORDER BY id; #仅显示id>10的 ``` ### WHERE逻辑运算符 | 运算符 | 意义 | | :-----------: | :--------------: | | = | 等于 | | <> | 不等于 | | != | 不等于 | | <= | 小于或等于 | | >= | 大于或等于 | | BETWEEN...AND | 再指定两个值之间 | ```mysql SELECT id,name FROM customers WHERE id BETWEEM 10 AND 15; #显示id在10到15之间的列 ``` ### 逻辑运算符 | 运算符 | 意义 | | :----: | :-----: | | IS | 是 | | IN | 在...中 | | NOT | 逻辑非 | | AND | 逻辑和 | | OR | 逻辑或 | 例: ```mysql SELECT id,email FROM customers WHERE email IS NULL; #显示email为空的行 SELECT id,email FROM customers WHERE email IS NOT NULL; #显示email不为空的行 ``` ```mysql SELECT id,email FROM customers WHERE id IN(1002,1003,1004);#显示id=1002、1003、1004的行 ``` ​ 当`AND`和`OR`多个组合时,mysql优先处理AND。 ```mysql select * from products where vend_id=1002 or vend_id=1003 and prod_price>=10; #选择vend_id=1003并且prod_price>=10的列和vend_id=1002的列 ``` ## 七、通配符过滤 | 符号 | 含义 | | :--: | -------------------- | | % | 任意字符出现任意次数 | | _ | 匹配单个任意字符 | | | | ```mysql SELECT id,name FROM customers WHERE LIKE 'zz%';#显示name以zz开头的列 SELECT id,name FROM customers WHERE LIKE '%zz%';#显示name含有zz的列 ``` ​ 通配符是否区分大小写取决于mysql的设置。 ## 八、正则匹配 ```mysql SELECT id,name FROM customers WHERE name REGEXP '^Z';#匹配以Z开头的列,不区分大小写 SELECT id,name FROM customers WHERE name REGEXP BINARY'^Z';#匹配大小写 ```