使用语言 MySQL
使用工具 Navicat Premium 16
代码能力快速提升小方法,看完代码自己敲一遍,十分有用
目录
1.SQL语言
1.1 SQL语言组成部分
2.MySQL数据类型
2.1 数值类型
2.2 字符串类型
2.3 日期类型
3.创建数据表
3.1 创建数据表方法1
3.2 创建数据表方法2
3.2.1 语法
3.2.2 简述
3.3 字段的约束和属性
3.3.1 MySQL中常用的字段约束或属性
3.3.2 单字段主键
3.3.3 多字段联合主键
3.3.4 约束贯穿总结示例
4. 注释
1.SQL语言
SQL(结构化查询语言)用于数据库的查询和操作,在MySQL中同样使用SQL实现数据的查询与操作。SQL语言有自己的国家标准,各数据库管理系统使用的SQL都是基于这个标准开发的,但彼此之间又有一定的不同。
1.1 SQL语言组成部分
- DDL(数据定义语言):用于创建或删除数据库对象,如create、drop、alter等语句
- DML(数据操作语言):用于插入、修改和删除表中的数据,如insert、update、delete语句
- DQL(数据查询语言):用于数据查询,指select语句
- DCL(数据控制语言):用于控制数据库组件的存取许可,存取权限等,如grant、revoke等
2.MySQL数据类型
2.1 数值类型
数据类型 | 字节数 | 存储大小 |
tinyint[(M)] | 1字节 | 有符号: (-128,127) 无符号: (0,255) |
smallint[(M)] | 2字节 | 有符号: (-32 768,32 767) 无符号: (0,65 535) |
mediumint[(M)] | 3字节 | 有符号: (-8 388 608,8 388 607) 无符号: (0,16 777 215) |
int[(M)]或INTEGER[(M)] | 4字节 | 有符号: (-2 147 483 648,2 147 483 647) 无符号: (0,4 294 967 295) |
BIGINT[(M)] | 8字节 | 有符号:(-9,223,372,036,854,775,808,9 223 372 036 854 775 807) 无符号:(0,18 446 744 073 709 551 615) |
float[(M,D)] | 4字节 | 有符号:(-9,223,372,036,854,775,808,9 223 372 036 854 775 807) 无符号:(0,18 446 744 073 709 551 615) |
double[(M,D)] | 8字节 | 有符号:(-1.797 693 134 862 315 7 E+308,-2.225 073 858 507 201 4 E-308),0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) 无符号:0,(2.225 073 858 507 201 4 E-308,1.797 693 134 862 315 7 E+308) |
decimal[(M,D)] | M+2字节 | M:最大精度位数即总位数,M的取值范围是1~65,默认值为10 D:小数位精度位数,D的取值范围是0~30 该类型可能的取值范围与double相同,但有效值访问由M、D决定。例如,类型为decimal(5,2)的字段取值范围是-999.99~999.99 |
M代表需要显示的数字的位数,即数据的显示宽度。该值的大小并不会对数据类型所能承载的值范围产生影响。若数据位数大于显示宽度,只要不超过该类型取值范围,则会以实际位数表示;反之,若数据位数小于指定宽度(就是有小数位但是没有值),则用空格补充。如果不指定显示宽度,系统会为每种类型指定默认的宽度值。例如,int类型的默认宽度值为11。若需要以0填充不足的位置,则可在类型后添加zerofill属性。
- tinyint、smallint、mediumint、int、bigint、integer都是整数类型,不同的类型所占的字节数不同,因此取值范围不同。在向表中插入整数类型数据时,若超出该类型的取值范围,则插入的值被阶段并显示警告信息。
- float和double是浮点型数据,decimal被称为定数类型,它们都可以存储含小数位的数据。float和double存储的是近似值。当对数据的精度要求非常高,如用来存储货币数据时,可以选择decimal类型,它的精度比double类型高。
- 所有数值类型都包含有符号数和无符号数两类,默认为有符号数,即值可以为负数。如果要确定字段的值一定是一个非负数,可在类型后添加unsigned属性。
- 若某个字段指定了zerofill属性,则MySQL会自动为该字段添加unsigned属性。
2.2 字符串类型
CHAR[(M)] | M字节 | 固定长度字符串 M为0~255的整数 |
VARCHAR[(M)] | 可变长度 | 可变长度字符串 M为0~65535的整数 |
TINYTEXT | 0~255 | 微型文本 |
TEXT | 0~65535 | 文本 |
char类型适合存储少量字符串。varchar类型长度是可变的,当字符串的长度检查变化时,为节约空间,可设置为varchar类型,其长度范围是0~65535。tinytext和text类型通常用来存储文章内容等纯文本信息。
2.3 日期类型
data | yyyy-MM-dd | 1000-01-01~9999-12-32 |
datetime | yy-MM-dd hh:mm:ss | 1000-01-01 00:00:00~9999-12-31 23:59:59 |
time | hh:mm:ss | -838:59:59~838:59:59 |
timestamp | YYYYMMDDhhmmss 这个可以跨国际,它会自动换算 | 1970年某时刻~2038年某时刻,精度为1秒 |
year | YYYY格式的年份 | 1901~2155 |
- 根据具体的业务场景选择适当的日期类型。MySQL运行"不严格"语法:任何标点符号都可以作为日期部分的间隔符。例如,若某个字段为date类型则20-07-08 20@07-08等均可被成功插入数据表中。
- 如果要设置某字段默认值为系统当前时间,可指定字段类型为timestamp,当该字段未插入数据时,默认为当前时间。
3.创建数据表
3.1 创建数据表方法1
直接在数据库中的表直接右键新建表
3.2 创建数据表方法2
3.2.1 语法
create table [if not exists] 表名(
字段1 数据类型 [字段属性 | 约束] [索引] [字段备注],
...
字段n 数据类型 [字段属性 | 约束] [索引] [字段备注],
)[表类型] [表字符集] [表备注];
3.2.2 简述
- 表中的字段也被称为列(竖)。
- 在使用create table语句创建时,字段之间使用逗号分隔,最后一个字段不用;
- 当SQL语句中出现的数据库名、表名或字段名等与保留字冲突时,可以使用撇号(`)括起来避免冲突。MySQL自动生成的代码,所有表名或字段名都会使用撇号括起来。
if not exists是表示如果有该表就创建,没有就不创建
3.3 字段的约束和属性
数据的完整性指数据的准确性和一致性。例如,病人的编号必须是唯一的,密码不能为空,只能到本医院存在的科室看病等。数据的完整性非常重要,他决定了数据库能否真实地反映项目的实际业务。因此,数据的完整性对数据库开发非常重要。
3.3.1 MySQL中常用的字段约束或属性
主键约束 | primary key(pk) | 设置该字段为表的主键,同时保证字段的唯一性和非空。例如,病人编号能唯一确定一名病人,可设置为主键。 |
外键约束 | foreign key(fk) |
|
自动增长 | auto_increment | 1.设置该列的自增字段,默认每条自增1 2.通常用于设置主键,且为整数类型 3.可设置初始值和步长 |
非空约束 | not null | 保证字段的值不能为空,如病人的姓名字段不允许为空 |
默认约束 | default | 保证字段中总会有值,即使没有插入值,也有默认值。例如,病人表中的地址信息,若未填写,则默认"地址不详" |
唯一约束 | unique key(uk) | 设置字段的值是唯一的。允许为空,但只能有一个空值,如病人的身份证号。 |
主键约束是非常重要的约束。当需要使用数据表中的某个字段或某几个字段来标识偶有记录是,需要将该字段设置为表的主键。主键可以是单字段的,也可以是多字段的。
3.3.2 单字段主键
创建方法1
create table [if not exists] 表名(
字段1 数据类型 primary key,
...
);
创建方法2
create table [if not exists] 表名(
字段1 数据类型 ,
...
[constraint<约束名>] primary key(列名)
);
3.3.3 多字段联合主键
create table [if not exists] 表名(
...
[constraint<约束名>] primary key(字段1,字段2,...)
);
3.3.4 约束贯穿总结示例
4. 注释
MySQL支持注释,注释的方法由单行注释和多行注释两种:
- 单行注释:#.....
- 多行注释:/*.....*/