/* 连接与断开服务器 */
mysql -h 地址 -P 端口 -u 用户名 -p 密码
---> input pwd
/* 数据库存贮引擎 */
InnoDB :
1) 具有提交、回滚和奔溃恢复及事务处理能力(ACID)
2) 能处理大数据量
3) 支持外键约束、关联查询
MyISAM :
1) 支持大文件、大字段,BLOB 和 TEXT 可以被索引
2) 有较高的插入、查询速度
/* 数据库操作 */
-- 查看已有库
SHOW DATABASES;
-- 创建数据库
CREATE DATABASE [if not exists] dbName options;
USE dbName;
SHOW TABLES;
DROP DATABASE dbName; //删除数据库
/* 数据表操作 */
-- ----------------------------
-- Table structure for leave_message_topic, design by yaok
-- ----------------------------
DROP TABLE IF EXISTS `leave_message_topic`;
CREATE TABLE `leave_message_topic` (
`topic_id` varchar(64) NOT NULL COMMENT '留言主题id',
`topic_name` varchar(64) CHARACTER SET utf8mb4 NOT NULL COMMENT '主题名称',
`topic_context` text CHARACTER SET utf8mb4 COMMENT '主题内容',
`sender` varchar(64) NOT NULL COMMENT '发送人ID',
`sender_name` varchar(200) CHARACTER SET utf8mb4 DEFAULT NULL COMMENT '发送人名称', -- 可以省略,一般通过userId查找name
`is_show` varchar(32) DEFAULT 'SHOW' COMMENT '是否展示(展示 SHOW,隐藏 HIDE)',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_flag` int(1) DEFAULT '0' COMMENT '删除标志(0:正常1:删除)',
PRIMARY KEY (`topic_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户留言主题表';
-- 查看表
DESC leave_message_topic;
--添加/修改字段
ALTER TABLE `risk_special_list`
ADD COLUMN `updateDesc` VARCHAR(50) NULL COMMENT `修改原因` AFTER `updateByType`, //添加字段
CHANGE `valid` `valid` TINYINT(1) DEFAULT 1 NOT NULL COMMENT `数据状态 (0:无效 1:有效)`; //修改字段
/* 数据操作 (DML) */
/* 数据操作 */
-- 增
INSERT [INTO] tbName [(字段列表)] VALUES (值列表)[, (值列表), ...]
-- 如果要插入的值列表包含所有字段并且顺序一致,则可以省略字段列表。
-- 可同时插入多条数据记录!
REPLACE 与 INSERT 完全一样,可互换。
INSERT [INTO] tbName SET 字段名=值[, 字段名=值, ...]
-- 多表插入、复制
INSERT INTO db1_name (field1, field2) SELECT field1, field2 FROM db2_name //适合二张表
INSERT INTO a (field1, field2) SELECT * FROM(SELECT b.f1, c.f2 FROM b JOIN c) AS tb //适合多张表
-- 查
SELECT colName FROM tbName
-- 可来自多个表的多个字段
-- 其他子句可以不使用
-- 字段列表可以用*代替,表示所有字段
-- 删
DELETE FROM tbName
没有条件子句,则会删除全部
-- delete不能进行多表删除,可以做联级删除 (关联后删除)
delete t1,t2 from t1,t2 where 条件
TRUNCATE TABLE tbName; //彻底删除记录,不能恢复 -- 改
UPDATE tbName SET 字段名=新值[, 字段名=新值] [更新条件]
-- 多表关联更新
UPDATE flat_community, city_business_area
SET flat_community.districtId = city_business_area.districtId
WHERE flat_community.businessId = city_business_area.id
AND city_business_area.id = 123
/* 连接查询(join) */
将多个表的字段进行连接,可以指定连接条件。
-- 内连接(inner join)
- 只有数据存在时才能发送连接。即连接结果不能出现空行。
on 表示连接条件。其条件表达式与where类似。也可以省略条件(表示条件永远为真)
-- 外连接(outer join)
- 左外连接 left join : 如果数据不存在,左表记录会出现,而右表为null填充
- 右外连接 right join :如果数据不存在,右表记录会出现,而左表为null填充
-- 自然连接(natural join)
-自动判断连接条件完成连接。
相当于省略了using,会自动查找相同字段名。
natural join
natural left join
natural right join
/* 数据类型 */
https://dev.mysql.com/doc/refman/5.7/en/data-types.html
/* 列属性、约束 */
-- 主键
- 能唯一标识记录的字段,可以作为主键
- 一个表只能有一个主键
- 主键具有唯一性
- 声明字段时,用 primary key 标识
也可以在字段列表之后声明
ex:create table tab ( id int, stu varchar(10), primary key (id));
- 主键字段的值不能为n