以Mac OS,MySQL为例
一、基础命令
1.启动服务
sudo /usr/local/MySQL/support-files/MySQL.server start
2.停止服务
sudo /usr/local/MySQL/support-files/MySQL.server stop
3.重启服务
sudo /usr/local/MySQL/support-files/MySQL.server restart
4.连接数据库
cd /usr/local/MySQL/bin/
./MySQL -uroot -p
接着按提示输入密码
5.远程连接
sudo ssh root@远程ip地址
接着输入远程服务器登录密码
MySQL -u root -p -h localhost
按提示输入密码
6.停止服务
exit/quit
7.查看版本
select version()
二、数据库命令
1.创建数据库
CREATE DATABASE 数据库名 CHARSET = UTF8;
2.选择/使用数据库
USE 数据库名;
3.删除数据库
DROP DATABASE 数据库名;
4.查看当前数据库
SELECT DATABASE();
5.查看数据库信息
SHOW CREATE DATABASE 数据库名;
三、表命令
1.查看当前数据库所有表
SHOW TABLES;
2.创建表
DEOP TABEL IF EXISTS 表名;
CREATE TABLE 表名(列名,类型,约束);
Eg:
DROP TABLE IF EXISTS example; #为避免同名表格影响,若有同名旧表,则清理
CREATE TABLE example(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT '序号',
order_id VARCHAR(255) NOT NULL COMMENT '订单号',
) ENGINE = INnoDB DEFAULT CHARSET = utf8;
1)建表约束
NOT NULL——列不能存储NULL值
UNIQUE——列唯一值
PRIMARY KEY——主键,确保(多)列有特定(且唯一)的记录可以查询
FOREIGN KEY——当前表与外部表格有相对应的参照字段进行关联
CHECK——确保列的值符合特定条件
DEFAULT——规定列没有赋值时的默认值
2)字符含义
INT——整数
VARCHAR——文本
AUTO_INCREMENT——自动编号
COMMENT——备注
ENGINE——引擎
CHARSET=UTF8——编码为UTF8
3.查看建表语句
SHOW CREATE TABLE 表名;
4.查看表结构
DESC 表名;
5.重命表名
RENAME TABLE 旧表名 TO 新表名;
6.更新表数据
ALTER TABLE 表名 ADD/CHANGE/MODIFY/DROP 列操作;
7.删除表
DROP TABLE 表名;
四、功能命令
1.增
INSERT INTO 表名(列1, 列2...) VALUES(值1,值2...), (...), ...;
2.删
DELETE FROM 表名 WHERE 条件;
*请必须加WHERE,否则删除所有相关数据,而不是选择性数据
3.改
UPDATE 表名 SET 列1 = 值1, 列2 = 值2, ... WHERE 条件;
4.查
(1)查询所有数据
SELECT * FROM 表名;
(2)查询特定数据
SELECT 列名 FROM 表名;
SELECT 列名 FROM 表名 LIMIT 起始列数,提取列数多少;
(3)去重查询
SELECT DISTINCT 列名 FROM 表名;
(4)条件查询
SELECT 列名 FROM 表名 WHERE 条件;
条件部分
1)相关运算符含义
= 等于
<> 不等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围之内,或在...之间
LIKE 搜索某个特征/模式
IN 在选取的列的一定范围内的值
AND 并且
OR 或
AND&OR 组合使用
IS NULL 空
IS NOT NULL 非空
2)通配符含义(搭配LIKE使用)
% 替代0-多个字符
_ 替代1个字符
[ ] 选定列的任何单个字符
[^] 或 [!] 不在选定列的任何单个字符
(5)聚合函数
SELECT 聚合函数(列名) FROM 表名;
1)COUNT 计数
2)SUM 求和
3)MAX 最大值
4)MIN 最小值
5)AVG 均值
(6)分组
SELECT 列名 FROM 表名 GROUP BY 列名;
SELECT 列名 FROM 表名 GROUP BY 列名 HAVING 列名+条件;
(7)排序
SELECT 列名 FROM 表名 ORDER BY 列名; #升序
SELECT 列名 FROM 表名 ORDER BY 列名 DESC; #降序
SELECT 列名 FROM 表名 GROUP BY 列名 ORDER BY 列名; #分组后排序
(8)JOIN连接
JOIN主要将2个及以上的表格关联起来,共有LEFT JOIN,RIGHT JOIN,INNER JOIN,FULL JOIN/OUTER JOIN等7种用法。
1)INNER JOIN:若都存在至少一个匹配值,则返回行
SELECT 表1.字段1,表2.字段2 FROM 表1 INNER JOIN表2 ON 表1.相同外键=表2.相同外键;
2)LEFT JOIN:若右表没有匹配值,则返回左表所有的行
SELECT 表1.字段1,表2.字段2 FROM 表1 LEFT JOIN表2 ON 表1.外键=表2.外键;
3)RIGHT JOIN:若左表没有匹配值,则返回右表所有的行
SELECT 表1.字段1,表2.字段2 FROM 表1 RIGHT JOIN表2 ON 表1.外键=表2.外键;
4)FULL JOIN/OUTER JOIN:只要其中一个表有匹配值,则返回行
SELECT 表1.字段1,表2.字段2 FROM 表1 FULL JOIN表2 ON 表1.外键=表2.外键;(MySQL不支持此用法)
SELECT 表1.字段1,表2.字段2 FROM表1 LEFT JOIN 表2 ON表1.外键=表2.外键 UNION SELECT 表1.字段1,表2.字段2 FROM 表1 RIGHT JOIN表2 ON表1.外键=表2.外键;(MySQL用法)
(9)UNION联合
1)去重联合——UNION
SELECT 表1.字段1FROM 表1 UNION SELECT表2.字段2 FROM 表2;
2)不去重联合——UNION ALL
SELECT 表1.字段1FROM 表1 UNION ALL SELECT表2.字段2 FROM 表2