使用语言 MySQL
使用工具 Navicat Premium 16
代码能力快速提升小方法,看完代码自己敲一遍,十分有用
目录
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支持注释,注释的方法由单行注释和多行注释两种:
- 单行注释:#.....
- 多行注释:/*.....*/