MySQL数据库DDL、DML详解

Wesley13
• 阅读 794

一、MySQL数据库数据类型

<1> MySQL数据库中支持多种数据类型

  • 数值型
  • 字符型
  • 日期型

<2> 常用的数据类型

  • 整型
    • int:整型,存储整数
    • int(M): M表示预期值,与存储大小和数值的范围无关
      • id int                    1
      • id int(3) zerofill 001
      • zerofill 零填充 会在左侧补0
    • tinyint         1        -128~127
    • smallint       2        32767/65535
    • int               4        21亿
    • bigint           8        兆
    • mediumint    3        八百多万/一千六百多万
  • 浮点型
    • float[(M,D)]: 浮点型,存储小数
      • salary float(6,2): 表示最多6位,小数占2位,最大存储数值为:9999.99
    • double: 浮点型,小数
  • 字符型
    • char(M): 固定长度的字符串类型          name char(5)      '1     '
    • varchar(M): 可变长度的字符串类型 (推荐)   name varchar(5) '1'
    • text: 大的字符串类型,4G字符串
    • blob:字节类型
  • 日期
    • date: 日期类型,年月日 YYYY-MM-DD 日期格式
    • time: 时间类型,时分秒 HH:mm:ss 时间格式
    • year: 年份,年               YYYY格式的年份值
    • timestamp: 年月日 时分秒,时间戳 1970年1月1日0时0分0秒 - 2037年的某一个时刻   YYYYMMDDhhmmss
    • datetime: 年月日 时分秒  YY-MM-DD hh:mm:ss
  • 注意:选择合适的数据类型,是数据库优化的一部分,short it better 原则

二、MySQL数据库中的数据的使用

如何操作:编程语言

<1> SQL概述

  • 结构化查询语言,可以用于查询和修改关系数据库的语言
  • SQL语言,是数据库的核心语言,被ISO采纳为数据库语言国际标准,几乎所有的数据库都支持SQL

<2> 组成

  • 数据定义语言(Data Definition Language, DDL): 用于管理和定义数据对象,包括数据库,数据表等
    • create: 创建数据库和表
    • drop: 删除表对象
    • alter: 修改表结构
  • 数据操作语言(Data Manipulation Language, DML): 用于操作数据库对象中所包含的数据
    • insert: 添加数据
    • delete: 删除数据
    • update: 修改数据
  • 数据查询语言(Data Query Language, DQL): 用于查询数据库对象中所包含的数据
    • select: 查询数据
  • 事务控制语言(Transaction Control Language, TCL): 包括提交事务、事务回滚
    • commit: 提交事务
    • rollback: 事务回滚
    • savepoint: 事务节点
  • 数据控制语言(Data Control Language, DCL): 用来管理数据库,包括管理权限以及数据更改
    • grant: 授权
    • revoke: 收回权限

1. 数据定义语言(DDL)

数据库的操作

<1> 创建数据库
  • 语法格式: creat database [if not exists] 数据库名称 [character set [=] 编码名称];     // '[]'表示可有可无
    • 例如:
    • create database ruochen;
    • create database if not exists ruochen; // 忽视错误,显示警告
<2> 查看数据库
  • 语法格式
    • show databases; // 查看所有的数据库
    • show create database 数据库名称; // 查看某一个已经创建的数据库
    • show warnings; // 查看警告
    • create database db character set gbk; // 指定创建的数据库的字符集
<3> 修改数据库
  • 语法格式: alter database [if not exists] 数据库名称 [character set 新的编码名称]
    • 例如:
    • alter database db character set = utf8;
<4> 删除数据库
  • 语法格式:drop database 数据库名称;
    • 例如:
    • drop database ruochen; // 删除数据库
数据表的操作

<1> 创建数据表
  • 使用一个数据库: use 数据库名称
  • select database(); // 查看当前正在使用的数据库
  • 创建数据表语法:
    • create table 表名(        字段名  字段类型  约束,        字段名  字段类型  约束,        ...... )
    • 例如:创建用户表
      • ceeate table user(        uid int,        username varchar(32),        password varchar(32),        birthday date,        sex enum('男', '女') )
<2> 查询数据表
  • show tables; // 显示当前数据库中所有的数据表
  • show columns from 表名; // 查询某张表表结构
  • desc 表名; // 查询某张表的表结构
<3> 修改数据表
  • 修改表名
    • 方式一: alter table 表名 rename [as|to] 新表名
      • 例如:alter table user rename us;
    • 方式二:rename table 旧表名 to 新表名 [,旧表名 to 新表名, ....];
      • 例如:rename table user to us;
  • 添加列
    • 语法格式:
      • alter table 表名 add [column] 列名 列定义 [first|after 列名];
    • 例如:
      • alter table user add sal double after password; // 在指定的列后面添加新的列
      • alter table user add phone varcher(32); // 默认在列的最后添加新的列
      • alter table user add hobby varchar(32) first; // 在列的最前面添加新的列
  • 修改列定义
    • 语法格式:
      • alter table 表名 modify 列名 列定义 [first|after 列名];
    • 例如:
      • alter table user modify sex varchar(32) first;
  • 修改列名
    • 语法格式:
      • alter table 表名 change 列的列名 新的列名 新的列定义 [first|after 列名];
    • 例如:
      • alter table user change hobby address varchar(20) after sal;
  • 删除列
    • 语法格式:
      • alter table 表名 drop [column] 列名;
    • 例如:
      • alter table user drop phone;
<4> 删除数据表
  • 语法格式:
    • drop table 表名;
  • 例如:
    • drop table user;

2. 数据操作语言(DML)


<1> 插入操作

  • 语法格式:
    • insert [into] 表名 [(列名1,列名2,....)] values|value (数值1|表达式,数值2|表达式,....);
  • 例如:
    • insert into teacher (id, name) values ('1', 'xian zheng ta yi ge yi');
    • insert into teacher value(2, '
    • wangjianlin', 'xian zheng ta yi ge yi'); // 如果前面不指定字段,默认采用所有字段,按照列的顺序添加

<2> 删除操作

  • 语法格式:
    • delete from 表名 where 条件;
  • 例如:
    • delete from teacher where id=1; // 指定条件删除记录
    • delete from teacher; // 不带条件删除,删除所有记录
  • 扩充:truncate table 表名; // 清空表,会清空表中所有数据
    • 例如
    • truncate table teacher;
  • 面试题:
    • delete删除与truncate 有什么区别?
      • 删除方式
        • delete:一条一条的删除,不清空 auto_increment 记录数
        • truncate:直接将表中的数据进行清空, auto_increment 自增将被重置,从新开始

<3> 修改操作

  • 语法格式:
    • update 表名 set 列名1=数值,列名2=数值,.... where 条件;
    • 例如:
      • update teacher set name='xiaosan',note='ming nian zai zhao yi ge' where id=1; // 带条件修改,修改指定记录
      • update teacher set name='xiaosi'; // 不带条件,修改表中所有数据
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这