千家信息网

MySQL学习笔记 数据类型与操作数据表

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,1.数据类型【1】整型:数据类型存储范围字节TINYINT有符号型:-128~127(-2^7~2^7 -1),无符号型0~255(0~2^8 -1)1SMALLINT有符号型:-2^15~2^15
千家信息网最后更新 2024年11月14日MySQL学习笔记 数据类型与操作数据表

1.数据类型

【1】整型:

数据类型存储范围字节
TINYINT有符号型:-128~127(-2^7~2^7 -1),无符号型0~255(0~2^8 -1)1
SMALLINT有符号型:-2^15~2^15 -1,无符号型0~2^16 -12
MEDIUMINT有符号型:-2^23~2^23 -1,无符号型0~2^24 -13
INT有符号型:-2^31~2^31 -1,无符号型0~2^32 -14
BIGINT有符号型:-2^63~2^63 -1,无符号型0~2^64 -18




【2】浮点型

数据类型存储范围字节
FLOAT[(M,D)]-3.402823466E+38~-1.175494351E-38、0和 1.175494351E-38 ~3.402823466E+384
DOUBLE[(M,D)]2.2250738585072014E-308~ 1.7976931348623157E+3088





【注】M是数字总位数,D是小数点后面的位数。如果M和D被省略,根据硬件允许的限制来保值。单精度浮点数值精确到大约7位小数位。E+38 表示10^38

【3】日期时间型

列类型字节存储范围
YEAR1YEAR[(2|4)] 缺省为4位格式,4位格式取值范围为1901 - 2155,
TIME3-838:59:59~838:59:59
DATE31000-1-1~9999-12-31
DATETIME8日期时间, 1000-1-1 00:00:00~9999-12-31 23:59:59
TIMESTAMP4时间戳,1970-1-1 00:00~2037年的某个时刻





【注】实际开发中"日期时间型"用得比较少,因为考虑到跨时区的问题,一般会用数字类型取代

MySQL本身Y2K安全的,但是呈交给MySQL的输入值可能不是。一个包含2位年份值的任何输入是由二义性的,因为世纪是未知的。这样的值必须被解释成4位形式,因为MySQL内部使用4位存储年份。

对于DATETIME, DATE, TIMESTAMP和YEAR类型,MySQL使用下列规则的解释二义性的年份值:

-在范围00-69的年值被变换到2000-2069。

-在范围70-99的年值被变换到1970-1999。

记得这些规则仅仅提供对于你数据的含义的合理猜测。如果MySQL使用的启发规则不产生正确的值,你应该提供无二义的包含4位年值的输入。

【4】字符型

列类型存储需求
CHAR(M)(定长,不足用空格自动补全)M个字节,0<=M<=255
VARCHAR(M)(变长,输入多少就是多少)L+1个字节,其中L<=M,0<=M<=65535
TINYTEXTL+1个字节,其中L<2^8 (1个字节表示最大存储范围,下同)
TEXTL+2个字节,其中L<2^16
MEDIUMTEXTL+3个字节,其中L<2^24
LONGTEXTL+4个字节,其中L<2^32
ENUM('value1','value2',…)(最终选择其中的一个value)1或2个字节,取决于枚举值的个数(最多65535个)
SET ('value1','value2',…)(集合,可在其中做任意的排列组合)1、2、3、4或者8个字节,取决于set成员的




CHAR(M) :定长类型,定义数据为5个字节,当需要存储abc3个字节的时候,会以2个空格的形式补满5个字节。

VARCHAR(M) :变长类型,输入abc3个字节就存储3个字节,不会存储多余的数据。

2.数据表操作

【1】概述

数据表(或称表)是数据库最重要的组成部分之一,是其他对象的基础。

【2】命令

USE 打开数据库:

mysql> USE <数据库名称>;
  • 显示当前用户所打开的数据库:

mysql> SELETE DATABASES;
  • 创建数据库表

CREATE TABLE [IF NOT EXISTS] table_name (column_name列名称 data_type数据类型,....)例:创建数据库表:列名称为username和age和salarymysql> USE t1;mysql> CREATE TABLE IF NOT EXISTS t1(    -> username VARCHAR(20),    -> age TINYINT UNSIGNED,    -> salary FLOAT(8,2) UNSIGNED    -> );
  • 查看数据表列表

mysql> SHOW TABLES;
  • 查看其他数据库的数据表列表,例查看mysql数据库

mysql> SHOW TABLES FROM mysql;
  • 查看数据表的结构

mysql> SHOW TABLES FROM mysql;


3.MySQL记录的插入与查找

记录插入:

INSERT [INTO] tbl_name [(col_name,...0] VALUES (val,...)

例:

mysql> INSERT t1 VALUES('Tom',25,7863.25);

记录查找:

SELECT expr,... FROM tbl_name

例:

SELECT * FROM t1;

4.MySQL空值与非空

*** NULL ,字段值可以为空

*** NOT NULL ,字段值禁止为空

例:

mysql> USE t2;mysql> CREATE TABLE IF NOT EXISTS tb2(    -> username VARCHAR(20) NOT NULL,    -> age TINYINT UNSIGNED NULL,    -> salary FLOAT(8,2) UNSIGNED    -> );

5.MySQL主键约束

*** 主键约束

*** 每张数据表只能存在一个主键

*** 主键保证记录的唯一性

*** 主键自动为NOT NULL

6.MySQL自动编号 AUTO_INCREMENT

*** 自动编号,且必须与主键组合使用

*** 默认情况下,起始值为1,每次的增量为1

例,创建自动编号表:

mysql> CREATE TABLE tb3(    -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,    -> username VARCHAR(30) NOT NULL    -> );mysql> SHOW COLUMNS FROM tb3;+----------+----------------------+------+-----+---------+----------------+| Field    | Type                 | Null | Key | Default | Extra          |+----------+----------------------+------+-----+---------+----------------+| id       | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment || username | varchar(30)          | NO   |     | NULL    |                |+----------+----------------------+------+-----+---------+----------------+

例,插入记录,查看表:

mysql> INSERT tb3(username) VALUES('Tom')mysql> INSERT tb3(username) VALUES('John')mysql> INSERT tb3(username) VALUES('Rose')mysql> INSERT tb3(username) VALUES('Dimitar')mysql> SELECT * FROM tb3;+----+----------+| id | username |+----+----------+|  1 | Tom      ||  2 | John     ||  3 | Rose     ||  4 | Dimitar  |+----+----------+

7.MySQL唯一约束 UNIQUE KEY

*** 唯一约束

*** 唯一约束可以保证记录的唯一性

*** 唯一约束的字段可以为空值(NULL)

*** 每张数据表可以存在多个唯一约束

例:

创建数据表tb4:

mysql> CREATE TABLE tb4(    -> id SMALLINT AUTO_INCREMENT PRIMARY KEY,     -> username VARCHAR(20) NOT NULL UNIQUE KEY,     -> age TINYINT UNSIGNED    -> );    mysql> SHOW COLUMNS FROM tb4;+----------+---------------------+------+-----+---------+----------------+| Field    | Type                | Null | Key | Default | Extra          |+----------+---------------------+------+-----+---------+----------------+| id       | smallint(6)         | NO   | PRI | NULL    | auto_increment || username | varchar(20)         | NO   | UNI | NULL    |                || age      | tinyint(3) unsigned | YES  |     | NULL    |                |+----------+---------------------+------+-----+---------+----------------+
  • 插入记录:

mysql> INSERT tb4(username,age) VALUES('Tom',25);Query OK, 1 row affected (0.00 sec)
  • 再插入一条username同时'Tom'的记录,提示重复:

mysql> INSERT tb4(username,age) VALUES('Tom',23);ERROR 1062 (23000): Duplicate entry 'Tom' for key 'username'

8.MySQL默认约束

*** 默认值

*** 当插入记录时,如果没有明确为字段赋值,则自动赋予默认值

例:

创建数据表tb6,设置sex列的默认值为3:

mysql> CREATE TABLE tb6(    -> id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,    -> username VARCHAR(20) NOT NULL UNIQUE KEY,    -> sex ENUM('1','2','3') DEFAULT '3'    -> );    mysql> SHOW COLUMNS FROM tb6;+----------+----------------------+------+-----+---------+----------------+| Field    | Type                 | Null | Key | Default | Extra          |+----------+----------------------+------+-----+---------+----------------+| id       | smallint(5) unsigned | NO   | PRI | NULL    | auto_increment || username | varchar(20)          | NO   | UNI | NULL    |                || sex      | enum('1','2','3')    | YES  |     | 3       |                |+----------+----------------------+------+-----+---------+----------------+
  • 插入记录,不给sex赋值:

mysql> INSERT tb6(username) VALUES('Tom');mysql> INSERT tb6(username) VALUES('John');mysql> INSERT tb6(username) VALUES('Mimiter');
  • 查看数据表,sex自动为默认值3:

mysql> SELECT * FROM tb6;                     +----+----------+------+| id | username | sex  |+----+----------+------+|  1 | Tom      | 3    ||  2 | John     | 3    ||  3 | Mimiter  | 3    |+----+----------+------+


数据 字节 数据表 类型 号型 存储 数据库 范围 输入 字段 时间 年份 日期 规则 二义性 位数 取决于 唯一性 小数 形式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 中学生网络安全实例 杭州无与网络技术有限公司 负载均衡服务器同步数据 网络技术学院的毕业之后的学历 数据库一对多 多多对一 成都商机网络技术有限公司印章 cgw网络安全 计算机网络技术标语 k神数据库 古籍目录数据库 视频云联网网络安全项目效益分析 软件开发属于什么属性 数据库sql分页查询 手机发信息一直显示服务器 福建正规软件开发服务检测中心 国资委网络安全攻防大赛 深圳市海源鸿软件开发商行 网络安全世态感知 凡忆网络技术工作室 cs架构测试软件开发 重庆net软件开发费用 数据库驱动程序错误 服务器管理器不自动启动不了 公安部网络安全局新闻发布会 广东网络安全服务公司 服务器区域如何实现独立防护 国资委网络安全攻防大赛 网易服务器值得购买吗 网络安全法出台的定位是 山东省浪潮存储服务器代理哪家好
0