德不配位,必有失殃
登录
mysql -u root -p # window/etc/init.d/mysqld start #liunx
数据库操作
select now(); --查询当前时间user(); --显示用户名version();--显示当前数据库版本database(); --查看当前数据库名--创建数据库CREATE DATABASE[IF NOT EXISTS] <数据库名> <数据库选项>数据库选项:CHARACTER SET charset_nameCOLLATE collation_name--删除数据库DROP DATABASE [IF EXISTS] <库名> --删除库(同时删除该数据库相关的目录及其目录内容)--修改数据库ALTER DATABASE <库名> <选项信息> --修改库的选项信息--查看数据库SHOW DATABASES[LIKE 'PATTERN'] --查看已有库CREATE DATABASE <数据库名> --查看当前库信息USE <库名>; --打开数据库
数据表操作
-- 创建表CREATE [TEMPORARY] TABLE[IF NOT EXISTS]<库名.表名> (--表结构定义`name`<数据类型>[not null|null][defalut val][auto_increment][unique[key]]|[primary key][comment'str']字段名 [不能空|空] [默认值 val] [自动递增] [唯一的键]|[主要的键] [注释'str'],PRIMARY KEY (`name`) --设置主键) <表选项>ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='str';--表选项:-- 字符集CHARSET = charset_name-- 存储引擎ENGINE = engine_name常见的引擎:MEMORY、MRG_MYISAM、CSV、FEDERATED、PERFORMANCE_SCHEMA、MyISAM、InnoDB、BLACKHOLE、ARCHIVE-- 自增起始数AUTO_INCREMENT = 行数-- 数据文件目录DATA DIRECTORY = '目录'-- 索引文件目录INDEX DIRECTORY = '目录'-- 表注释COMMENT = 'string'-- 分区选项PARTITION BY ...(详细见手册)--删除表DROP TABLE [IF EXISTS] <表名> --删除表TRUNCATE [IF EXISTS] <表名> --清空表数据-- 修改表-- 修改表本身选项ALTER TABLE <表名><表选项>--对表进行重命名RENAME TABLE <原表名> TO <新表名>RENAME TABLE <原表名> TO <库名.表名> --移动其他数据库--修改表的字段机构ALTER TABLE <表名><操作名>--操作名ADD [COLUMN] <字段定义> --增加字段AFTER <字段名> --表示增加在改字段名后面FIRST --表示增加在第一个PRIMARY KEY <字段名> --创建主键UNIQUE [索引名]<字段名> --创建唯一索引INDEX [索引名]<字段名> --创建普通索引MODIFY[COLUMN]<字段名><字段属性> --对原有属性进行更改(原属性也要写)CHANGE[COLUMN]<原字段名><新字段名><字段属性> --支持对字段名和属性进行更改DEOP[COLUMN]<字段名> --删除字段DEOP PRIMARY KEY --删除主键(需要先删除AUTO_INCREMENT)DEOP INDEX <索引名> --删除索引DEOP FOREIGN KEY <外键> --删除外键-- 查SHOW TABLES[LIKE ‘table_name’]; --查看所有表DESC 表名 | DESCRIBE 表名 | EXPLAIN 表名 | SHOW COLUMNS FROM 表名 [LIKE 'PATTERN']SHOW CREATE TABLE 表名 (信息更详细)-- 复制表结构CREATE TABLE <新表名> LIKE <要复制的表名>-- 复制表结构和数据CREATE TABLE <新表名> [AS] SELECT * FROM <要复制的表名>-- 检查表是否有错误CHECK TABLE tbl_name [, tbl_name] ... [option] ...-- 优化表OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...-- 修复表REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]-- 分析表ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
数据操作
-- 添加INSERT [INTO] <表名> (字段列表) VALUES (值列表),(值列表)...;INSERT [INFO] <表名> SET [字段名=值]-- 删除DELETE FROM <表名> --where[满足条件删除] 没条件删除所有-- 修改UPDATE <表名> SET key=val --where[满足条件更改] 没条件更改所有-- 查看SELECT <字段列表> FROM <表名>-- 分类汇总select age, sum(*) age from school group by age with rollupselect coalesce(age, 'num')as age, sum(age) myage from school group by age with rollup;
筛选
--筛选where --条件输出--可在查询结果再筛选--操作符= --等号, 检测两个值是否相等, 相等返回true<>, != --不等于, 检测两个值是否相等, 如果不相等返回true> , < --大于号 , 小于号>=, <= --大于或等于号, 小于或等于号flask-sqlacodegen 'mysql:928122713//root:@127.0.0.1/food_db' --tables user --outfile "having--排序order by 字段名 --排序asc-升序 desc-降序group by--显示规则limit i offset j --限制输出--限制i条从第j条后开始
函数
date_format(birth, '%Y') --格式化时间set(value,value,...) --合集多选enum(value,value,...) --枚举单选inner join --交集left join --右交集right join --左交集untion --联合exit; -- 退出
索引
MUL:多索引
约束模式
1、district:严格模式,默认的,不允许操作。
2、cascade:级联模式,一起操作,当主表变化,从表数据跟着变化。
通常在进行约束的时候需要定制操作:on update cascade,表示级联更新约束
3、set null:置空模式,表主变化(主要指删除),从表对应记录设置为空,但是有个前提是从表中对应外键关键字允许为空。
通常在进行约束时需要指定操作:on delete set null,表示删除空约束
属性key
- 如果键是PRI,则列是主键或多列主键中的列之一。
- 如果键是UNI,则该列是唯一索引的第一列。(唯一索引允许多个空值,但可以通过检查Null字段来判断该列是否允许空。)
- 如果键为MUL,则该列是非唯一索引的第一列,其中允许在列中多次出现给定值。
