德不配位,必有失殃

登录

  1. mysql -u root -p # window
  2. /etc/init.d/mysqld start #liunx

数据库操作

  1. select now(); --查询当前时间
  2. user(); --显示用户名
  3. version();--显示当前数据库版本
  4. database(); --查看当前数据库名
  5. --创建数据库
  6. CREATE DATABASE[IF NOT EXISTS] <数据库名> <数据库选项>
  7. 数据库选项:
  8. CHARACTER SET charset_name
  9. COLLATE collation_name
  10. --删除数据库
  11. DROP DATABASE [IF EXISTS] <库名> --删除库(同时删除该数据库相关的目录及其目录内容)
  12. --修改数据库
  13. ALTER DATABASE <库名> <选项信息> --修改库的选项信息
  14. --查看数据库
  15. SHOW DATABASES[LIKE 'PATTERN'] --查看已有库
  16. CREATE DATABASE <数据库名> --查看当前库信息
  17. USE <库名>; --打开数据库

数据表操作

  1. -- 创建表
  2. CREATE [TEMPORARY] TABLE[IF NOT EXISTS]<库名.表名> (
  3. --表结构定义
  4. `name`<数据类型>[not null|null][defalut val][auto_increment][unique[key]]|[primary key][comment'str']
  5. 字段名 [不能空|空] [默认值 val] [自动递增] [唯一的键]|[主要的键] [注释'str'],
  6. PRIMARY KEY (`name`) --设置主键
  7. ) <表选项>ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='str';
  8. --表选项:
  9. -- 字符集
  10. CHARSET = charset_name
  11. -- 存储引擎
  12. ENGINE = engine_name
  13. 常见的引擎:MEMORYMRG_MYISAMCSVFEDERATEDPERFORMANCE_SCHEMAMyISAMInnoDBBLACKHOLEARCHIVE
  14. -- 自增起始数
  15. AUTO_INCREMENT = 行数
  16. -- 数据文件目录
  17. DATA DIRECTORY = '目录'
  18. -- 索引文件目录
  19. INDEX DIRECTORY = '目录'
  20. -- 表注释
  21. COMMENT = 'string'
  22. -- 分区选项
  23. PARTITION BY ...(详细见手册)
  24. --删除表
  25. DROP TABLE [IF EXISTS] <表名> --删除表
  26. TRUNCATE [IF EXISTS] <表名> --清空表数据
  27. -- 修改表
  28. -- 修改表本身选项
  29. ALTER TABLE <表名><表选项>
  30. --对表进行重命名
  31. RENAME TABLE <原表名> TO <新表名>
  32. RENAME TABLE <原表名> TO <库名.表名> --移动其他数据库
  33. --修改表的字段机构
  34. ALTER TABLE <表名><操作名>
  35. --操作名
  36. ADD [COLUMN] <字段定义> --增加字段
  37. AFTER <字段名> --表示增加在改字段名后面
  38. FIRST --表示增加在第一个
  39. PRIMARY KEY <字段名> --创建主键
  40. UNIQUE [索引名]<字段名> --创建唯一索引
  41. INDEX [索引名]<字段名> --创建普通索引
  42. MODIFY[COLUMN]<字段名><字段属性> --对原有属性进行更改(原属性也要写)
  43. CHANGE[COLUMN]<原字段名><新字段名><字段属性> --支持对字段名和属性进行更改
  44. DEOP[COLUMN]<字段名> --删除字段
  45. DEOP PRIMARY KEY --删除主键(需要先删除AUTO_INCREMENT)
  46. DEOP INDEX <索引名> --删除索引
  47. DEOP FOREIGN KEY <外键> --删除外键
  48. --
  49. SHOW TABLES[LIKE table_name’]; --查看所有表
  50. DESC 表名 | DESCRIBE 表名 | EXPLAIN 表名 | SHOW COLUMNS FROM 表名 [LIKE 'PATTERN']
  51. SHOW CREATE TABLE 表名 (信息更详细)
  52. -- 复制表结构
  53. CREATE TABLE <新表名> LIKE <要复制的表名>
  54. -- 复制表结构和数据
  55. CREATE TABLE <新表名> [AS] SELECT * FROM <要复制的表名>
  56. -- 检查表是否有错误
  57. CHECK TABLE tbl_name [, tbl_name] ... [option] ...
  58. -- 优化表
  59. OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
  60. -- 修复表
  61. REPAIR [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM]
  62. -- 分析表
  63. ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...

数据操作

  1. -- 添加
  2. INSERT [INTO] <表名> (字段列表) VALUES (值列表),(值列表)...;
  3. INSERT [INFO] <表名> SET [字段名=值]
  4. -- 删除
  5. DELETE FROM <表名> --where[满足条件删除] 没条件删除所有
  6. -- 修改
  7. UPDATE <表名> SET key=val --where[满足条件更改] 没条件更改所有
  8. -- 查看
  9. SELECT <字段列表> FROM <表名>
  10. -- 分类汇总
  11. select age, sum(*) age from school group by age with rollup
  12. select coalesce(age, 'num')as age, sum(age) myage from school group by age with rollup;

筛选

  1. --筛选
  2. where --条件输出
  3. --可在查询结果再筛选
  4. --操作符
  5. = --等号, 检测两个值是否相等, 相等返回true
  6. <>, != --不等于, 检测两个值是否相等, 如果不相等返回true
  7. > , < --大于号 , 小于号
  8. >=, <= --大于或等于号, 小于或等于号
  9. flask-sqlacodegen 'mysql:928122713//root:@127.0.0.1/food_db' --tables user --outfile "
  10. having
  11. --排序
  12. order by 字段名 --排序
  13. asc-升序 desc-降序
  14. group by
  15. --显示规则
  16. limit i offset j --限制输出--限制i条从第j条后开始

函数

  1. date_format(birth, '%Y') --格式化时间
  2. set(value,value,...) --合集多选
  3. enum(value,value,...) --枚举单选
  4. inner join --交集
  5. left join --右交集
  6. right join --左交集
  7. untion --联合
  8. exit; -- 退出

索引
MUL:多索引
约束模式
1、district:严格模式,默认的,不允许操作。
2、cascade:级联模式,一起操作,当主表变化,从表数据跟着变化。
通常在进行约束的时候需要定制操作:on update cascade,表示级联更新约束
3、set null:置空模式,表主变化(主要指删除),从表对应记录设置为空,但是有个前提是从表中对应外键关键字允许为空。
通常在进行约束时需要指定操作:on delete set null,表示删除空约束
属性key

  • 如果键是PRI,则列是主键或多列主键中的列之一。
  • 如果键是UNI,则该列是唯一索引的第一列。(唯一索引允许多个空值,但可以通过检查Null字段来判断该列是否允许空。)
  • 如果键为MUL,则该列是非唯一索引的第一列,其中允许在列中多次出现给定值。