欢迎投稿

今日深度:

MySQL笔记,MySQL创建数据库表

MySQL笔记,MySQL创建数据库表


目录

  • 著名数据库(了解)
  • 概念
  • 组成(了解即可)
  • 注意点
  • DDL操作
    • 操作数据库
    • 数据类型(列类型)
    • 操作表
  • DML(Data Manipulation Language)
  • DCL(Data Control Language)
  • DQL(Data Query Language)
  • 编码
  • 备份与恢复
  • 约束
    • 主键约束
    • 非空约束和唯一约束
    • 外键
  • 多表查询
    • 合并结果集
    • 连接查询(一次查询多张表)

著名数据库(了解)

公司 数据库软件
IBM DB2
微软 SQL Server、Access[1]
Oracle Oracle、MySQL
Sybase Sybase

概念

组成(了解即可)

注意点

DDL操作

操作数据库

数据类型(列类型)

必须为每一列指定数据类型

注意:MySQL中字符串只能加单引号

数据类型 说明
int 整型
double(5,2) 浮点型,5表示最大总位数(不包括小数点),2表示小数点后位数
decimal 浮点型,不损失精度,表单中钱用得较多
char(255) 固定长度字符,长度不足时补足,超出长度报错。最大支持255个字节
varchar(65535) 变长字符,长度不足时不补足,超长报错。最大支持65535 bytes。会额外使用1个字节存储长度信息
text 不在SQL标准中(标准里的是clob),分tinytext (2^8^-1,255B)、text (2^16^-1,65k)、mediumtext (2^24^-1,16M)、longtext (2^32^-1,4G)
blob 用于存储二进制数据,分tinyblob (2^8^-1)、blob (2^16^-1)、mediumblob (2^24^-1)、longblob (2^32^-1)
date 格式:YYYY-MM-DD
time 格式:hh:mm:ss
timestamp date + time
... ...

操作表

DML(Data Manipulation Language)

DCL(Data Control Language)

DQL(Data Query Language)

查询不会修改数据库表记录

  • 更多函数及用法可参阅:MySQL常用函数大全

  • 起别名:(AS 可以省略),也可用于给表起别名

    SELECT 列名 (AS) 别名 FROM 表名; # as关键字可以省略
    -- 如 SELECT salary*1.5 as 工资 FROM employees;
    
  • 条件控制

    • 条件查询 (添加WHERE条件)

    • 模糊查询:通过LIKE关键字和_%通配符实现(_匹配一个字符;%匹配0到n个字符,但不匹配NULL)

      • 模糊搜索的时间开销相比一般条件查询更大
      • 不要过度使用通配符,若能用其他操作符实现,应使用其他操作符
      • 使用通配符时,除非绝对有必要,否则不要将通配符放置在搜索模式的开始处,这样搜索起来最慢
      SELECT * FROM employees WHERE name LIKE '张%'; #匹配如张、张三、张某某
      SELECT * FROM employees WHERE name LIKE '张__';  # 匹配如张某某,但不匹配张三
      
    • 正则表达式:通过 REGEXP 匹配字符串 实现

      • 与LIKE的区别:LIKE是整行匹配;REGEXP只要行内字串满足匹配字符串即可,若匹配字符串首尾同时添加 ^$ 则变成整行匹配

      • 与多数其他软件不同,匹配特殊字符,如.[]()|等,需要添加两个反斜杠\\,如\\.\\n\\\(匹配 \ 本身)、\\1(反向引用)等(一个 \ 自己解释一个,正则表达式库解释另一个)

      • 字符集

        说明
        [:alpha:] 任意字符(同[a-zA-Z]
        [:digit:] 任意数字(同[0-9]
        [:alnum:] 任意字符和数字(同[a-zA-Z0-9]
        [:xdigit:] 任意十六进制数字(同[a-fA-F0-9]
        [:lower:] 任意小写字母(同[a-z]
        [:upper:] 任意大写字母(同[A-Z]
        [:blank:] 空格和制表符(同[ \\t])
        [:space:] 包含空格在内的任意空白字符(同[\\f\\n\\r\\t\\v]
        [:print:] 任意可打印字符
        [:graph:] 除空格外的任意可打印字符
        [:cntrl:] ASCII控制字符(ASCII 0-31和127)
        [:punct:] 即不在[:alnum:],也不在[:cntrl:]中的字符
      • 正则表达式内容较多,用法可参见 正则表达式30分钟入门教程

      • MySQL中可用SELECT '待匹配字符串' REGEXP '匹配样式字符串' 简单测试(结果1为匹配,0为不匹配)

    • 排序:ORDER BY 列名1 [ASC/DESC], ... (ASC升序,DESC降序,省略时默认ASC)

      • 先按第一个条件排序,第一个条件相同时,按第二个条件,依此类推。
    • 聚合查询:利用聚合函数纵向查询某一列的非空行数COUNTSUMMAXMINAVG
      注意:

      • COUNT(列名) 记录该列非NULL的行数,若为COUNT(*) 则为包含NULL的所有行数;
      • 聚合查询一般忽略NULL值
      • 函数参数可为 DISTINCT 列名,此时重复值只计算一次
      SELECT COUNT(salary) 计数,SUM(DISTINCT salary) 总和, MAX(salary) 最高, MIN(salary) 最低, AVG(salary) 平均 
      FROM employees 
      WHERE department = '财务部';
      
    • 分组查询 GROUP BY -- 只用于查询组信息

      • 用法:SELECT 列名1[,列名2,...], 聚合函数 FROM 表名 GROUP BY 列名1[,列名2,...]`
      • GROUP BY前通过WHERE 列条件过滤行,之后则使用HAVING 关键字过滤组信息(除位置外,HAVING用法与WHERE基本相同)
      • GROUP BY 列 可接WITH ROLLUP,增加一行汇总行
      • 结果不一定有序,最好结合ORDER BY
      -- 列出各个岗位里工资大于15000的人数,且满足要求的岗位人数必须大于1人
      SELECT job, COUNT(job) FROM employees 
      WHERE salary > 15000 
      GROUP BY job 
      HAVING count(job) > 1;
      
    • MySQL方言之LIMIT(仅MySQL支持)

      • LIMIT [row - 1,] n 显示从第row行(下标0为第一行)开始的n行数据
  • 编码

    备份与恢复

    约束

    主键约束

    非空约束和唯一约束

    外键

    多表查询

    合并结果集

    • 用于将两个结果集拼接在一起显示

    • 要求结果集列数&列类型相同

    • 语法: (通过UNION [ALL] 拼接多个SELECT ... FROM ... 语句,不加ALL会对紧邻的两个结果集的行进行去重)

      CREATE TABLE ab(a INT, b VARCHAR(50));
      CREATE TABLE cd(c INT, d VARCHAR(50));
      ...  # 此处添加数据
      SELECT * FROM ab UNION ALL SELECT * FROM cd;
      SELECT a FROM ab UNION SELECT c FROM cd UNION ALL SELECT a FROM ab;
      

    连接查询(一次查询多张表)

    多表查询注意使用表名对列进行限定

    (未完待续...)


    1. Access为桌面型数据库,主要用于局域网;其余的为C/S型(客户端/服务器型) ↩︎

    2. 函数在不同DBMS间可移植性较差,编写sql脚本时最好标注清楚 ↩︎

    3. 笛尔积:{a, b, c} x {1, 2} = {a1, a2, b1, b2, c1, c2} ↩︎

    www.htsjk.Com true http://www.htsjk.com/Mysql/43112.html NewsArticle MySQL笔记,MySQL创建数据库表 目录 著名数据库(了解) 概念 组成(了解即可) 注意点 DDL操作 操作数据库 数据类型(列类型) 操作表 DML(Data Manipulation Language) DCL(Data Control Langua...
    相关文章
      暂无相关文章
    评论暂时关闭