MySQL所支持的数据类型与表字段约束类型的学习教程_MySQL
MySQL 数据(字段)类型
在创建表的时候,要明确定义字段对应的数据类型。MySQL 主要的数据类型分为数值类型、字符串(文本)类型、时间日期类型和其他类型几类。
数值类型
数值类型说明:
补充说明
在 int(integer) 系列中,只能存储整型值,且可以在后面用括号指定显示的尺寸(M),如果不指定则会默认分配。如果实际值的显示宽度大于设定值,将会显示实际值而不会截断以适应显示尺寸。如 smallint(3) 中的 3 即为显示尺寸,即显示三位的数值(不包括 - 号)
int 类型可以指定 UNSIGNED 属性,即无符号(非负),所以存储范围有两种
在 float、double 及 decimal 类型中,不能指定 UNSIGNED 属性,其显示尺寸包含了小数点精度(D),即 float(3,1) 保存范围为 -99.9 至 99.9
decimal 必须指定显示尺寸(M)和小数点精度(D),float 和 double 都是可选的
在可能涵盖取值范围的基础上,尽可能选择较小的类型以提高效率和节约存储空间,如年龄,就选择 tinyint(3) 。该原则对于字符类型同样适用
字符串(文本)类型
字符串(文本)类型说明:
补充说明
char 和 varcha 需要指定长度,不同的是,char 存储时总是按照指定的长度储存,而 varchar 则根据实际字符串长度再加上一个字节分配空间。
时间日期类型
时间日期类型说明:
提示
在 PHP 中,一般情况下对于时间都是按照 UNIX 时间戳以 int 类型存储于表中,再根据实际需要用 PHP 的时间函数进行处理,但不完全都是这样。
MySQL 表字段属性
主键
表的主键(primary key,主关键字)是表中的一个或多个字段,它的值用于惟一地标识表中的某一条记录。一个表不能有多个主关键字,并且主关键字的列不能包含空值和重复值。主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。
语法:
PRIMARY KEY (column_name)
在这个表中,uid 这个字段就是该表的主键。
建立主键应该遵循的一般原则
主键应当是对用户没有意义的
永远也不要更新主键,如果主键需要更新,则说明主键应对用户无意义的原则被违反了
主键不应包含动态变化的数据,如时间戳、创建时间等
主键应当由系统自动生成
外键
在两个表的关系中,当一张表(如表A )的主关键字被包含在另一张表(如表B)中时,A 表中的主关键字便成为 B 表的外键(外关键字)。B 表称为主表,A 表称为从表。
外键主要用于保持数据一致性,完整性,避免冗余数据,使两张或多张表形成关联。
在这个文章评论表 comment 样例中,uid 便是外键,它是 user 表的主键。在该表中记录了用户对文章的评论,关于用户信息,只需对应 user 表的主键 uid 即可。在数据一致性方面,比如当 comment 表没有 uid 为 3 的评论后,才可以删除 user 表中 uid = 3 的记录。
自动递增
在 MySQL 数据库中,提供了字段的自动递增(AUTO_INCREMENT)属性,即将该字段设置为 int 类的数据类型,每向数据表添加一条记录,该字段的值会自动加1 。设置了自动递增后,该列不用再设置默认值和唯一性约束。
例子:
uid mediumint(8) NOT NULL auto_increment
非空
因为逻辑上的一些要求,有时候需要把字段属性设置为非空(NOT NULL),如记录用户名、密码等非空值的字段。
设置为非空的列,虽然不是必须,但最好设定一个默认值,以防止意外的错误和减少增加数据时的 SQL 语句复杂度。当向数据表增加数据记录时,如果设置为非空的字段不写入数据,系统将会以默认值写入。
例子:
username char(20) NOT NULL default '' //将NOT NULL 改为 NULL ALTER TABLE user CHANGE username username char(20) NULL
提示
在上面的例子中 CHANGE 后面 username username ,前者表示更改的字段名,后者表示新字段名。在本例中,只更改了字段属性为 NULL ,不涉及到字段名称的更改,因此二者一致。
空
与非空相反,可以将字段属性设置为空,如果字段属性没有设置为非空(NOT NULL)属性,那么系统默认就是可以为空(NULL)值的。
将NULL 改为 NOT NULL:
ALTER TABLE user CHANGE username username char(20) NOT NULL DEFAULT ''
唯一性约束
有时候某些字段数据不允许重复,如用户名,这时候就需要增加唯一性约束(UNIQUE)。
语法:
UNIQUE (column_name) //给表字段增加 UNIQUE ALTER TABLE tb_name ADD UNIQUE (column_name) //去掉 UNIQUE ALTER TABLE tb_name DROP INDEX column_name
主键(PRIMARY KEY)会强制性的拥有自动定义的唯一性约束,不用额外定义 UNIQUE 。
索引
数据库索引(index)是为了增加查询速度而对字段附加的一种标识。我们对表的某些可能需要经常查询的字段建立适当的索引,那么在查询该字段数据时,便会显著的加快查询速度。
语法:
KEY key_name (column_name)
KEY 后面的字符为索引名称,括号内为建立索引的字段名。
改进后的建表 SQL
CREATE TABLE user ( uid mediumint(8) unsigned NOT NULL auto_increment, username char(15) NOT NULL default '', password char(32) NOT NULL default '', email varchar(40) NOT NULL default '', regdate int(10) unsigned NOT NULL default '0', PRIMARY KEY (uid), UNIQUE KEY username (username), KEY email (email) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
补充说明
在建表语句正文后面还附加了建表的其它几个属性:
ENGINE:表示存储引擎类型,分为 MyISAM 和 InnoDB 两种类型。MyISAM 不支持事务处理等高级处理,强调表的性能,执行也比 InnoDB 快。而 InnoDB 提供事务支持已经外部键等高级数据库功能,性能上比 MyISAM 差。默认为 MyISAM 类型
CHARSET:表示数据表表字符集,一般为 gbk 或 utf8 以及 big5 等,为了兼容性考虑,我们设置为 utf8 字符集
AUTO_INCREMENT:设置主键默认增长的开始数
以上就是MySQL所支持的数据类型与表字段约束类型的学习教程_MySQL的内容,更多相关内容请关注PHP中文网(www.php.cn)!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











다음 단계를 통해 phpmyadmin을 열 수 있습니다. 1. 웹 사이트 제어판에 로그인; 2. phpmyadmin 아이콘을 찾고 클릭하십시오. 3. MySQL 자격 증명을 입력하십시오. 4. "로그인"을 클릭하십시오.

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템으로, 주로 데이터를 신속하고 안정적으로 저장하고 검색하는 데 사용됩니다. 작업 원칙에는 클라이언트 요청, 쿼리 해상도, 쿼리 실행 및 반환 결과가 포함됩니다. 사용의 예로는 테이블 작성, 데이터 삽입 및 쿼리 및 조인 작업과 같은 고급 기능이 포함됩니다. 일반적인 오류에는 SQL 구문, 데이터 유형 및 권한이 포함되며 최적화 제안에는 인덱스 사용, 최적화 된 쿼리 및 테이블 분할이 포함됩니다.

Redis는 단일 스레드 아키텍처를 사용하여 고성능, 단순성 및 일관성을 제공합니다. 동시성을 향상시키기 위해 I/O 멀티플렉싱, 이벤트 루프, 비 블로킹 I/O 및 공유 메모리를 사용하지만 동시성 제한 제한, 단일 고장 지점 및 쓰기 집약적 인 워크로드에 부적합한 제한이 있습니다.

데이터베이스 및 프로그래밍에서 MySQL의 위치는 매우 중요합니다. 다양한 응용 프로그램 시나리오에서 널리 사용되는 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) MySQL은 웹, 모바일 및 엔터프라이즈 레벨 시스템을 지원하는 효율적인 데이터 저장, 조직 및 검색 기능을 제공합니다. 2) 클라이언트 서버 아키텍처를 사용하고 여러 스토리지 엔진 및 인덱스 최적화를 지원합니다. 3) 기본 사용에는 테이블 작성 및 데이터 삽입이 포함되며 고급 사용에는 다중 테이블 조인 및 복잡한 쿼리가 포함됩니다. 4) SQL 구문 오류 및 성능 문제와 같은 자주 묻는 질문은 설명 명령 및 느린 쿼리 로그를 통해 디버깅 할 수 있습니다. 5) 성능 최적화 방법에는 인덱스의 합리적인 사용, 최적화 된 쿼리 및 캐시 사용이 포함됩니다. 모범 사례에는 거래 사용 및 준비된 체계가 포함됩니다

MySQL은 성능, 신뢰성, 사용 편의성 및 커뮤니티 지원을 위해 선택됩니다. 1.MYSQL은 효율적인 데이터 저장 및 검색 기능을 제공하여 여러 데이터 유형 및 고급 쿼리 작업을 지원합니다. 2. 고객-서버 아키텍처 및 다중 스토리지 엔진을 채택하여 트랜잭션 및 쿼리 최적화를 지원합니다. 3. 사용하기 쉽고 다양한 운영 체제 및 프로그래밍 언어를 지원합니다. 4. 강력한 지역 사회 지원을 받고 풍부한 자원과 솔루션을 제공합니다.

Apache는 데이터베이스에 연결하여 다음 단계가 필요합니다. 데이터베이스 드라이버 설치. 연결 풀을 만들려면 Web.xml 파일을 구성하십시오. JDBC 데이터 소스를 작성하고 연결 설정을 지정하십시오. JDBC API를 사용하여 Connections, 명세서 작성, 매개 변수 바인딩, 쿼리 또는 업데이트 실행 및 처리를 포함하여 Java 코드의 데이터베이스에 액세스하십시오.

Centos에 MySQL을 설치하려면 다음 단계가 필요합니다. 적절한 MySQL Yum 소스 추가. mysql 서버를 설치하려면 yum install mysql-server 명령을 실행하십시오. mysql_secure_installation 명령을 사용하여 루트 사용자 비밀번호 설정과 같은 보안 설정을 작성하십시오. 필요에 따라 MySQL 구성 파일을 사용자 정의하십시오. MySQL 매개 변수를 조정하고 성능을 위해 데이터베이스를 최적화하십시오.

Docker에서 MySQL을 시작하는 프로세스는 다음 단계로 구성됩니다. MySQL 이미지를 가져와 컨테이너를 작성하고 시작하고 루트 사용자 암호를 설정하고 포트 확인 연결을 매핑하고 데이터베이스를 작성하고 사용자는 데이터베이스에 모든 권한을 부여합니다.
