MySQL 笔记_mysql查询语句bigint类型字段名需要加单引号吗-程序员宅基地

技术标签: mysql  数据库  

结构化查询语言 - SQL

Structured Query Language - 结构化查询语言

警告

  1. 数据库中所有字符串类型必须使用 单引号 ,不能使用 双引号 ;日期类型也要使用 单引号

内容定义

定义 解释
db_name 数据库名
tab_name 数据表名
tab_name_new 新数据表名
charset_name 字符集名
field_name 字段名
field_name_new 新字段名
field_type 字段类型
ct_name 约束名
ct_type 约束类型:PRIMARY KEY、UNIQUE
ip_addr ip地址
field_list 字段列表,包括*

数据定义语言 - DDL

Data Definition Language - 数据定义语言

数据库

基本操作
  • 查询数据库

    SHOW DATABASE;
    
  • 切换数据库

    USE db_name;
    
  • 新建数据库

    CREATE DATABASE [IF NOT EXISTS] db_name [CHARSET=utf8];
    
  • 删除数据库

    DROP DATABASE [IF EXISTS] db_name;
    
  • 修改数据库

    ALTER DATABASE db_name CHARACRER SET utf8;
    

数据表

数据类型
分类 数据类型 含义(有符号) 备注
整形 tinyint(m) 1个字节 范围(-128~127) m 显示位宽,不影响数据范围
mediumint(m) 2个字节 范围(-32768~32767)
smallint(m) 3个字节 范围(-8388608~8388607)
int(m) 4个字节 范围(-2147483648~2147483647)
bigint(m) 8个字节 范围(+-9.22*10的18次方)
浮点型 float(m,d) 单精度浮点型 8位精度(4字节) m总位数,d小数位 m,d 显示位宽,不影响数据范围
double(m,d) 双精度浮点型 16位精度(8字节) m总位数,d小数位
float(m,d) 单精度浮点型 8位精度(4字节) m总位数,d小数位
字符串 char(n) 固定长度,最多255个字符 n 数据长度
varchar(n) 固定长度,最多65535个字符
tinytext 可变长度,最多255个字符
text 可变长度,最多65535个字符
mediumtext 可变长度,最多2的24次方-1个字符
longtext 可变长度,最多2的32次方-1个字符
二进制 _BLOB 存储的数据只能整体读出 -
_TEXT 可以指定字符集,英文存储区分大小写
日期时间 date 日期 '2008-12-2' -
time 时间 '12:25:36'
datetime 日期时间 '2008-12-2 22:06:44'
timestamp 自动存储记录修改时间
属性关键字
关键字 含义
NULL 数据列可包含NULL值
ZEROFILL 零填充
DEFAULT 默认值
UNSIGNED 无符号
NOT NULL 非空约束,数据列不允许包含NULL值
PRIMARY KEY 主键约束,非空、唯一、被引用(外键)
AUTO_INCREMENT 自增约束,自动递增,适用于整数类型
UNIQUE 唯一约束,唯一、不可重复,可为NULL
FOREIGN KEY 外键约束,必须是引用一张表的主键,可重复,可为空,可引用多个
CHARACTER SET charset_name 指定一个字符集
基本操作
  • 查看当前数据库所有表

    SHOW TABLES;
    
  • 查看表索引

    SHOW INDEX FROM tab_name;
    
  • 创建表

    CREATE TABLE tab_name (
    	field_name field_type [ props ],
    	...
        [[CONSTRAINT ct_name] ct_type field_name ]
    );
    
  • 查看创建表的SQL语句

    SHOW CREATE TABLE tab_name;
    
  • 查看表结构

    DESC tab_name;
    
  • 删除表

    DROP TABLE tab_name;
    
  • 清空数据

    TRUNCATE TABLE tab_name;  # 先DROP,再CREATE,无法回滚
    
  • 修改表 - ALTER TABLE

    • 增加新字段

      ALTER TABLE tab_name 
      ADD(
      field_name field_type [props],
      );
      
    • 修改字段类型

      ALTER TABLE tab_name 
      MODIFY field_name field_type;
      
    • 修改字段定义

      ALTER TABLE tab_name 
      CHANGE field_name field_name_new field_type [ props ];
      
    • 删除字段

      ALTER TABLE tab_name 
      DROP field_name;
      
    • 修改表名

      ALTER TABLE tab_name 
      RENAME TO tab_name_new;
      
    • 添加字段约束

      ALTER TABLE tab_name ADD CONSTRAINT ct_name PRIMARY KEY( field_name );  # 添加主键约束
      ALTER TABLE tab_name ADD CONSTRAINT ct_name UNIQUE( field_name );  # 添加唯一约束
      ALTER TABLE tab_name ADD CONSTRAINT ct_name CHECK( field_name > 0 );  # 添加范围约束
      ALTER TABLE tab_name ADD CONSTRAINT ct_name DEFAULT value FOR field_name;  # 添加默认约束
      
约束操作
  • **PRIMARY KEY ** - 主键

    # 建表时指定字段 主键 属性
    CREATE TABLE tab_name(
    	field_name field_type PRIMARY KEY,
        ...
    );
    
    # 建表时通过 主键约束 指定字段
    CREATE TABLE tab_name(
    	field_name field_type,
        ...
        PRIMARY KEY( field_name )
    );
    
    # 修改表指定主键
    ALTER TABLE tab_name
    ADD PRIMARY KEY( field_name );
    
    # 修改表字段定义
    ALTER TABLE tab_name
    CHANGE field_name field_name_new field_type PRIMARY KEY;
    
    # 删除主键
    ALTER TABLE tab_name
    DROP PRIMARY KEY;
    
  • AUTO_INCREMENT - 自增

    # 建表时指定字段 自增 属性
    CREATE TABLE tab_name(
    	field_name field_type PRIMARY KEY AUTO_INCREMENT,
        ...
    );
    
    # 修改表字段定义时设置自增
    ALTER TABLE tab_name
    ADD PRIMARY KEY( field_name );
    
    # 删除自增
    ALTER TABLE tab_name
    DROP PRIMARY KEY;
    
  • UNIQUE - 唯一

    # 建表时指定字段 唯一 属性
    CREATE TABLE tab_name(
    field_name field_type UNIQUE,
        ...
    );
    
    # 建表时指定字段 联合唯一 属性
    CREATE TABLE tab_name(
    	field_name1 field_type,
        field_name2 field_type,
        ...
        UNIQUE KEY (field_name1, field_name2)
    );
    
    # 修改表字段定义时设置自增
    ALTER TABLE tab_name
    ADD PRIMARY KEY( field_name );
    
    # 删除自增
    SHOW CREATE TABLE tab_name;  # 产看 
    

数据库操作语言 - DML

Data Manipulation Language - 数据库操作语言

条件表达式运算符

条件表达式运算符 含义
= 等于
!= 不等于
<> 不等于,不包含
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN m AND n [m,n] 左右闭区间; 字符串比较是从左到右按位按照其ASCII值来进行比较
IN(o,p,q) 字段值为 o,p,q 中任一为真
NOT 条件表达式 非,取反
条件表达式 AND 条件表达式 与,两条真则真
条件表达式 OR 条件表达式 或,任一真为真
IS NULL 字段内容为 NULL 则真
IS NOT NULL 字段内容非 NULL 则真
LIKE _:占位符;%:通配符

基本操作

  • 插入数据 - INSERT INTO

    • 插入所有字段数据

      INSERT INTO tab_name
      VALUES( value1, value2, ... );
      
    • 插入部分字段数据

      INSERT INTO tab_name(field_name1, field_name2) 
      VALUES(value1, value2);
      
  • 更新数据 - UPDATE

    UPDATE tab_name
    SET field_name=value,...
    WHERE 条件表达式
    
  • 删除数据 - DELETE FROM

    DELETE FROM tab_name
    [WHERE 条件表达式]
    

数据控制语言 - DCL

Data Control Language - 数据控制语言

用户管理

约定
  1. 一个项目创建一个用户,一个项目对应的数据库只有一个
基本操作
  • 创建用户

    CREATE USER user_name@ip_addr IDENTIFIED BY 'pass_wd';  # ip_addr -> '%' 为任意ip_addr
    
  • 删除用户

    DROP USER user_name@ip_addr
    

权限管理

权限表
Privilege Grant Table Column Context
ALL [PRIVILEGES] Synonym for “all privileges” Server administration
ALTER Alter_priv Tables
ALTER ROUTINE Alter_routine_priv Stored routines
CREATE Create_priv Databases, tables, or indexes
CREATE ROUTINE Create_routine_priv Stored routines
CREATE TABLESPACE Create_tablespace_priv Server administration
CREATE TEMPORARY TABLES Create_tmp_table_priv Tables
CREATE USER Create_user_priv Server administration
CREATE VIEW Create_view_priv Views
DELETE Delete_priv Tables
DROP Drop_priv Databases, tables, or views
EVENT Event_priv Databases
EXECUTE Execute_priv Stored routines
FILE File_priv File access on server host
GRANT OPTION Grant_priv Databases, tables, or stored routines
INDEX Index_priv Tables
INSERT Insert_priv Tables or columns
LOCK TABLES Lock_tables_priv Databases
PROCESS Process_priv Server administration
PROXY See proxies_priv table Server administration
REFERENCES References_priv Databases or tables
RELOAD Reload_priv Server administration
REPLICATION CLIENT Repl_client_priv Server administration
REPLICATION SLAVE Repl_slave_priv Server administration
SELECT Select_priv Tables or columns
SHOW DATABASES Show_db_priv Server administration
SHOW VIEW Show_view_priv Views
SHUTDOWN Shutdown_priv Server administration
SUPER Super_priv Server administration
TRIGGER Trigger_priv Tables
UPDATE Update_priv Tables or columns
USAGE Synonym for “no privileges” Server administration
权限操作
  • 查看用户权限

    SHOW GRANT FOR user_name@ip_addr;
    
  • 授予权限

    GRANT 权限清单 ON db_name.tab_name TO user_name@ip_addr;  # db_name.* -> 数据库 db_name 下所有表
    
  • 撤销权限

    REVOKE 权限清单 ON db_name.tab_name FROM user_name@ip_addr;
    
  • 刷新权限

    flush privileges;
    

数据查询语言 - DQL

Data Query Language - 数据查询语言

基本查询

SELECT *
FROM tab_name
WHERE 条件表达式

排序 - ORDER BY

SELECT *
FROM tab_name
WHERE 条件表达式
ORDER BY field_name [ASC | DESC] [, field_name [ASC | DESC] ... ]

# ASC 升序, DESC 降序
# 如果 排序字段出现相等的值,则该部分按后续排序规则进行排序

字段控制

  • 完全重复的记录只显示一次

    SELECT DISTINCT field_list 
    FROM tab_name;
    
    # 当查询的记录出现完全一致时,只显示一次,多数出现在只查询部分列的场景
    
  • 字段运算

    • 字段类型为 数量类型 时可进行 四则运算

      SELECT field_name + [-,*,/] value
      FROM tab_name
      
    • 字段类型为 字符串类型 时可进行 连接运算

      SELECT CONCAT(str,str,...)
      FROM tab_name
      
      # 可将合适位置的 str 换成 字段名 进行字符串拼接
      
    • NULL 值转换

      SELECT IFNULL(field_name,value)
      FROM tab_name;
      
      # 将字段值为NUll的用value替换
      
    • 给字段起别名

      SELECT field_name as field_name_new
      FROM tab_name;
      
      # field_name 可为 SELECT 函数产生的列名;
      # field_name field_name_new  <=>  field_name as field_name_new
      
  • 聚合函数

    • COUNT( ) - 计数

      # 返回表中总行数,不忽略 NULL,COUNT(1)效果类似
      SELECT COUNT(*)
      FROM tab_name;
      
      # 返回字段除值为 NULL 外的总行数
      SELECT COUNT( field_name )
      FROM tab_name;
        
        # 返回字段值不重复,且忽略 NULL的总行数
        SELECT COUNT( DISTINCT field_name )
        FROM tab_name;
      
    • MAX( field_name ) - 字段最大值

      SELECT MAX( field_name )
      FROM tab_name
      
    • MIN( field_name ) - 字段最小值

      SELECT MIN( field_name )
      FROM tab_name
      
    • SUM( field_name ) - 字段和

      SELECT SUN( field_name )
      FROM tab_name
      
      #忽略 NULL,NULL + 1 = NULL
      
    • AVG( field_name ) - 字段平均值

      SELECT AVG( field_name )
      FROM tab_name;
      
      #忽略 NULL 行
      

分组查询 - GROUP BY

SELECT field_name [, 聚合函数 ]
FROM tab_name
WHERE 条件表达式
GROUP BY field_name

# 查询的字段应该和分组字段保持一致,可组合的列名为聚合函数,在逻辑层面才有意义

LIMIT - MySQL方言

SELECT field_list
FROM tab_name
WHERE 条件表达式
LIMIT m,n

# 查询结果从下标m开始,取n行,类似分页效果

多表查询

  • 合并结果集

    对两个结果集进行并集操作

    1. SELECT 语句列的数量、顺序必须相同,字段的类型也要求相似( 合并的是 SELECT 的结果集合 );

    2. 结果集的列名为第一个SELECT语句中的字段名;

    3. 可带 WHEREORDER BY 关键字:

    SELECT field_name FROM tab_name
    UNION
    SELECT field_name FROM tab_name
    WHERE 条件表达式
    ORDER BY field_name
    
    # UNION  不包括重复行,相当于 DISTINCT 属性
    # UNION ALL 包括重复的记录
    
  • 连接查询

    • 内连接

      只显示满足连接条件的结果集

      # 标准 - INNER JOIN
      SELECT field_list
      FROM tab_name_1 alias_name_1 INNER JOIN tab_name_2 alias_name_2
      ON alias_name_1.field_name = alias_name_2.field_name
      
      # 自然 - NATURAL JOIN  (自动寻找两张表相同的字段,筛选笛卡儿积。)
      SELECT field_list
      FROM tab_name_1 alias_name_1 NATURAL JOIN tab_name_2 alias_name_2
      
      # MySQL 方言,使用 "," 连接表,通过 WHERE 筛选条件
      SELECT field_name
      FROM tab_name_1, tab_name_2
      WHERE 条件表达式
      
    • 外连接

      一主一从,当主表存在不满足连接条件的记录,用NULL补全从表显示

      # LEFT OUTER JOIN - 左表为主表,左表存在右表不存在的记录时,右表查询字段用NULL补全
      SELECT field_list
      FROM tab_name_1 LEFT OUTER JOIN tab_name_2
      ON alias_name_1.field_name = alias_name_2.field_name 
      
      # RIGHT OUTER JOIN - 右表为主表,左表存在右表不存在的记录时,左表查询字段用NULL补全
      SELECT field_list
      FROM tab_name_1 RIGHT OUTER JOIN tab_name_2
      ON alias_name_1.field_name = alias_name_2.field_name 
      
    • 自然连接

      # 内连接
      NATURAL JOIN
      
      # 外连接
      NATURAL LEFT OUTER JOIN
      NATURAL RIGHT OUTER JOIN
      
  • 子查询

    查询中有查询

    1. WHERE 后作为条件

      • 单行单列

        SELECT field_list
        FROM tab_name
        WHERE field_name [ =, >, <, >=, <=, != ] ( SELECT ... FROM ... WHERE... )
        
      • 多行单列

        SELECT field_list
        FROM tab_name
        WHERE field_name [ IN, ALL, ANY ] ( SELECT ... FROM ... WHERE... )
        
      • 单行多列

        SELECT field_list
        FROM tab_name
        WHERE field_name IN( SELECT ... FROM ... WHERE... )
        
    2. FROM 后作为数据表,需要使用别名

      • 多行多列

        SELECT alias.field_list
        FROM ( SELECT ... FROM ... WHERE... ) alias
        WHERE 条件表达式
        

概念模型

序号 概念 理解
1 一对多 一张表的一个字段的值取值范围是另一张表的一个字段值
2 多对多 两张表相互存在一对多关系,通过中间表建立关系
3 一对一 副表的主键的取值范围是另一张表的主键(唯一,非空,被引用)

维护

编码

  • 查看数据库编码

    SHOW VARIABLES LIKE 'char%';
    
    Variable_name Value 标注
    character_set_client utf8mb4 所有客户端发过来的数据,都以 Value 设定的字符集存储
    character_set_connection utf8mb4
    character_set_database utf8mb4
    character_set_filesystem binary
    character_set_results utf8mb4 服务器把所有查询结果以 Value 设定的字符集发给客户端
    character_set_server utf8mb4
    character_set_system utf8mb3
    character_sets_dir /usr/share/mysql/charsets/
  • 临时改编码

    set character_set_client=gbk;
    set character_set_results=gbk;
    
    # 只在当前窗口有效
    
  • 永久改编码

    [mysql]
    default-character-set=gbk; 
    
    #同时设定 client,results,connection 字符集
    

备份与恢复

  • 备份
    # 通过 shell命令 备份
    mysqldump -uroot -p123 db_name > sql_path
    
  • 恢复
    # 通过 shell命令 恢复
    mysql -uroot -p123 db_name < sql_path
    
    # 通过 MySQL客户端 恢复
    MySQL > USE db_name; SOURCE sql_path;
    
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wojue0823/article/details/127419251

智能推荐

第一章、计算机网络模型参考-程序员宅基地

文章浏览阅读562次,点赞29次,收藏10次。数据传输分为单工(数据只能从一个方向传输出去 ),双工 双工又分为两种 全双工(数据能同时进行传输 比如手机 双方可以同时讲话传输数据)和半双工(一方传输时,另一方不能传输数据 比如对讲机 一方在讲话时候 另一方只能等待对方讲话结束才能说话)443 HTTPS(超文本传输安全协议):在HTTP的基础上加了SSL/TLS层(安全套接层)的安全的超文本传输协议。(传输控制协议)协议应用的端口及其协议功能----传输更加稳定可靠。(用户数据报协议)协议应用的端口及其协议功能----传输效率更高。

Java获取指定时间之后的几分钟_java获取十分钟后的时间-程序员宅基地

文章浏览阅读6k次,点赞2次,收藏11次。public static Integer diff(String time) throws ParseException { SimpleDateFormat df = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); long currentTime =System.currentTimeMillis(); long createTime = df.parse(time).getTime(); lon_java获取十分钟后的时间

基于SpringBoot+Vue的移动端购物系统的详细设计和实现(源码+lw+部署文档+讲解等)-程序员宅基地

文章浏览阅读692次,点赞16次,收藏13次。博主介绍:全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战精彩专栏 推荐订阅2023-2024年最值得选的微信小程序毕业设计选题大全:100个热门选题推荐2023-2024年最值得选的Java毕业设计选题大全:500个热门选题推荐Java精品实战案例《500套》微信小程序项目精品案例《500套》文末获取源码+数据库。

机器学习入门1-译文-机器学习是什么以及它的重要性(machine learning--what it is and why it matters)_artificial intelligence programs today can learn t-程序员宅基地

文章浏览阅读2.7k次。本文目录索引1、前言1.0侵删1.0.1 20200920首发1.0.2 良心翻译1.1 此系列说明1.2 聊点机器学习1.2.1 机器学习的定义1.2.2 知识发现、机器学习、人工智能之间的异同2、机器学习是什么以及它的重要性序机器学习的演变史为什么机器学习很重要当今世界的机器学习都谁在使用这门技术?有哪些流行的机器学习方法?机器学习怎么玩一些框框内的机器学习与人工智能的区别创建良好的机器学习系统需要什么?拓展数据挖掘,机器学习和深度学习之间有什么区别?3、machine learning--what i_artificial intelligence programs today can learn to identify

古典乐器网页设计成品 大学生音乐网站制作模板 大学生静态音乐HTML网页源码 dreamweaver网页作业 简单网页课程成品-程序员宅基地

文章浏览阅读724次,点赞27次,收藏16次。网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程序方面:计划采用最新的网页编程语言HTML5+CSS3+JS程序语言完成网站的功能设计。并确保网站代码兼容目前市面上所有的主流浏览器,已达到打开后就能即时看到网站的效果。网站素材方面:计划收集各大平台好看的图片素材,并精挑细选适合网页风格的图片,然后使用PS做出适合网页尺寸的图片。网站文件方面:网站系统文件种类包含:html网页结构文件、css网页样式文件、js网页特效文件、images网页图片文件;...

使用Vue封装图片上传组件,使用原生HTML中input标签_原生input框实现上传图片组件-程序员宅基地

文章浏览阅读287次。使用原生input标签,封装的图片上传组件。可根据需要设置最多上传图片数,预览图片,删除图片。_原生input框实现上传图片组件

随便推点

考研人------------------最强C语言课程_鹏哥c语言课件 百度网盘-程序员宅基地

文章浏览阅读536次。适合小白和强化_鹏哥c语言课件 百度网盘

C++回文数的判断_c++判断回文数-程序员宅基地

文章浏览阅读3.6k次,点赞4次,收藏5次。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如 121 、 12321 、 45654 等。_c++判断回文数

java毕业生设计学生用品采购系统计算机源码+系统+mysql+调试部署+lw_学生用品采购系统的设计与实现论文-程序员宅基地

文章浏览阅读85次。java毕业生设计学生用品采购系统计算机源码+系统+mysql+调试部署+lw。JSP基于Web的在线文献查阅系统的设计与实现sqlserver。springboot基于web的数码产品应用平台设计与实现。springboot基于JSP的企业办公管理系统设计与实现。JSP酒店餐饮管理系统的设计与实现sqlserver。ssm基于SSM的停车场收费管理系统的设计与实现。springboot烟草经销平台的设计与实现。ssm基于SSM的英语学习网站的设计与实现。ssm基于B_S景区票务管理系统设计与实现。_学生用品采购系统的设计与实现论文

【已解决】浏览器小化或者切换标签,倒计时不准确解决方案_js使用定时器续签令牌当切换浏览器标签页或小化后,计时器停顿无法在有效期前及时-程序员宅基地

文章浏览阅读8.7k次,点赞47次,收藏50次。一般屏幕刷新率为60HZ,也就是1秒刷新60次,大概17毫秒刷新一次。确保每17毫秒都执行代码则不会出现任何问题,由于定时器会收到JS事件队列的宏任务、微任务的影响,所以并不可能保证每17毫秒都执行一次,可能会有延迟,出现丢帧、卡顿的现象。_js使用定时器续签令牌当切换浏览器标签页或小化后,计时器停顿无法在有效期前及时

Ubuntu 16.04 下编译安装Faiss CPU版本_ubuntu编译 faiss-cpu库-程序员宅基地

文章浏览阅读1.1w次,点赞3次,收藏4次。环境:unbuntu 16.04安装anaconda2#下载wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda2-4.3.0-Linux-x86_64.sh#权限chmod +x Anaconda2-4.3.0-Linux-x86_64.sh#安装bash Anaconda2-4.3.0-Linux-x8..._ubuntu编译 faiss-cpu库

Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数_python3 getattr-程序员宅基地

文章浏览阅读434次。hasattr()函数hasattr()函数用于判断是否包含对应的属性语法:hasattr(object,name)参数:object–对象name–字符串,属性名返回值:如果对象有该属性返回True,否则返回False示例:class People: country='China' def __init__(self,name): self.name=name def people_info(self): print('%s is xxx' %_python3 getattr

推荐文章

热门文章

相关标签