千家信息网

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

发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,MySQL学习笔记-数据类型与操作数据表数据类型: 1.字符型 2.整型 3.浮点型 4.日期时间型数据表操作: 1.插入记录 2.查找记录记录操作: 1.创建数据表 2.约束的使用1.数据类型【1】
千家信息网最后更新 2024年11月24日MySQL学习笔记-数据类型与操作数据表

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

数据类型: 1.字符型 2.整型 3.浮点型 4.日期时间型

数据表操作: 1.插入记录 2.查找记录

记录操作: 1.创建数据表 2.约束的使用

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和salary

mysql> 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 COLUMNS FROM t1;

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安全错误 数据库的锁怎样保障安全 南京在线医疗健康软件开发 我的世界怎样开挂在服务器炸图 广东品质软件开发服务推广 项目网络安全包含哪些内容 雨木林风软件开发 战舰少女内华达服务器好不好 通州区正规网络技术诚信合作 技术机网络技术包含 深圳市蜂巢软件开发有限公司 苹果xr登陆ld连接服务器超时 中国网络安全态势2016 企业网络安全人才的培养建议 软件开发期间如何保密 重装系统后无法连接公司服务器 学网络安全需要了解什么 wlan服务器无响应 完美世界软件开发公司 无锡项目软件开发价目表 重庆曼丹网络技术有限公司 英雄联盟怎么去别的国家服务器 先进工控网络技术 it软件开发外包合同范本 进程导致db服务器宕机 浪潮存储服务器 dcs 历史数据库 宝鸡市软件开发行情 vpn服务器客户端 海珠区软件开发工程师 大学生网络安全培训平台 深圳字节跳动服务器面试
0