1.启动
systemctl start mysql #启动MySQL
systemctl status mysql #查看MySQL的运行状态
sudo mysql #进入MySQL命令行模式
# user_0 为用户名,PassWord 为密码
mysql -uuser_0 -pPassWord;
mysql -uuser_0 -p; # 回车之后,MySQL会要求键入密码
# 创建数据库、使用数据库、执行脚本文件
CREATE DATABASE TestDataBase;
USE TestDataBase;
source /home/ipanda/test.sql; #可以直接将文件放到 MySQL 命令行界面上,这样会直接显示文件的路径
2.SELECT
SHOW DATABASES; #显示所有的数据库
SHOW TABLES; #显示当前选择的数据库的可用表的列表
SHOW COLUMNS FROM customers; #customers是可用表的其中一个
SELECT cust_id,cust_name FROM customers; #从表中检索某几列,最后一列之后不能加逗号
SELECT * FROM customers; #检索表中的所有列
#若cust_id中存在多个重复的值,则对于重复的值,仅输出一个
SELECT DISTINCT cust_id FROM customers;
#带一个值的LIMIT是从第一行(行号为0)开始,给出的数为返回的行数。
#带两个值的LIMIT指定从行号为第一个值的位置开始,返回的行数为第二个值。
SELECT cust_id FROM customers LIMIT 2;
SELECT cust_id FROM customers LIMIT 2,2;
SELECT customers.cust_id FROM TestDataBase.customers;
#升序排序 ASC,默认顺序即为升序排序
#按照字母顺序对 cust_address 进行排序,而后按照排序结果,再对cust_id进行排序
SELECT cust_id FROM customers ORDER BY cust_address;
#先按照cust_name的排序结果进行排序,若cust_name有相同的值,则对于相同的cust_name值所对应的cust_id、cust_city中的值,再按照cust_address的排序结果进行排序
SELECT cust_id,cust_city FROM customers ORDER BY cust_name,cust_address;
#降序排序 DESC,只应用到直接位于其前面的列名
#不同列名之间要以逗号分隔,DESC 要位于逗号之前
SELECT cust_id,cust_city FROM customers ORDER BY cust_address DESC,cust_name;
3.条件过滤 WHERE
若某一行的某一列没有相对应的值时,称其为具有NULL值。则对于 4), 该行不会被返回。
因为 NULL 代表未知,数据库不知道 NULL 是否与指定的搜索条件相匹配。
#条件过滤
SELECT cust_id,cust_name FROM customers
1) WHERE cust_id=10001 AND cust_name="Coyote Inc."; #单引号、双引号都可以用于引用字符串
2) WHERE cust_id BETWEEN 10001 AND 10005;
3) WHERE cust_email IS NULL;
4) WHERE cust_email != 'email';
5) WHERE cust_id=10001 OR cust_id <> 100000;
6) WHERE cust_id IN (10001,10005);
WHERE cust_id=10001 OR cust_id=10005; #两条语句功能相同,但是前者效率更高
7) WHERE cust_id NOT IN (10001,10005);
3.1 通配符
#通配符
# % 代表任意字符出现任意次数(包含0次),不能匹配 NULL 值
1) WHERE cust_id LIKE '1%1'; #可匹配以'1'开头、以'1'结尾的任意值,例如 ‘10001’
2) WHERE cust_id LIKE '1%'; #可匹配以'1'开头的任意值
3) WHERE cust_id LIKE '%1'; #可匹配以'1'结尾的任意值
4) WHERE cust_id LIKE '%'; #可匹配任意值,NULL 值除外
# _ 仅能匹配一个字符,即使对于重复字符,也仅能匹配其中一个
WHERE cust_id LIKE '1000_';
3.2 正则表达式
#正则表达式
SELECT cust_id FROM customers
1)WHERE cust_id LIKE '000'; #列值必须与 '000' 完全匹配
2)WHERE cust_id REGEXP '000'; #列值只需含有 '000' 即可
# '01|02'与'01 | 02'不同
3)WHERE cust_id REGEXP '01|02'; #匹配任意一个条件即可
4)WHERE cust_id REGEXP '000[135]'; #'0001|0003|0005'
5)WHERE cust_id REGEXP '000[^135]'; #'0001|0003|0005'之外的值
6)WHERE cust_id REGEXP '000[2-4]'; #'0002|0003|0004',即'0002'至'0004'
#'\\'转义特殊字符,MySQL解释其中一个反斜杠,正则表达式库解释另一个反斜杠
7)WHERE cust_name REGEXP '\\.';
8)WHERE cust_name REGEXP 'lac[:alpha:]'; #匹配任意字母
9)WHERE cust_id REGEXP '[[:digit:]]{5,}'; #匹配五个及以上的连续的数字字符
10)WHERE cust_id REGEXP '^2|$5'; #以'2'开头或者以'5'结尾
预定义的字符集,称为字符类
重复元字符
定位元字符
4. 拼接字段、计算字段
# 拼接字段、别名
# RTrim 删除右侧多余空格
SELECT Concat(RTrim(vend_name),' (',RTrim(vend_country)