创建数据库
| |
| CREATE DATABASE text; |
| |
| |
| CREATE DATABASE text CHARACTER set 'UTF8'; |
| |
| |
| |
| CREATE DATABASE if not EXISTS text; |
使用数据库
| |
| |
| |
| SHOW DATABASES; |
| |
| |
| SELECT DATABASE(); |
| |
| |
| SHOW TABLES FROM myemployees; |
| |
| |
| SHOW CREATE DATABASE myemployees; |
| |
| |
| use myemployees; |
修改数据库
| |
| ALTER DATABASE 数据库名 CHARACTER SET 字符集; |
删除数据库
| |
| DROP DATABASE 数据库名; |
| |
| |
| DROP DATABASE IF EXISTS 数据库名; |
创建表
| |
| create table 【if not exists】 表名( |
| 字段名 字段类型 【约束】, |
| 字段名 字段类型 【约束】, |
| 。。。 |
| 字段名 字段类型 【约束】 |
| ) |
修改表
| |
| alter table 表名 add column 列名 类型 【first|after 字段名】; |
| |
| |
| alter table 表名 modify column 列名 新类型 【新约束】; |
| |
| |
| alter table 表名 change column 旧列名 新列名 类型; |
| |
| |
| alter table 表名 drop column 列名; |
| |
| |
| alter table 表名 rename 【to】 新表名; |
删除表
| |
| drop table【if exists】 表名; |
复制表
| |
| create table 表名 like 旧表; |
| |
| |
| create table 表名 |
| select 查询列表 from 旧表【where 筛选】; |
数值型
| |
| tinyint、smallint、mediumint、int/integer、bigint |
| 1 2 3 4 8 |
| |
| 特点: |
| ①都可以设置无符号和有符号,默认有符号,通过unsigned设置无符号 |
| ②如果超出了范围,会报out or range异常,插入临界值 |
| ③长度可以不指定,默认会有一个长度 |
| 长度代表显示的最大宽度,如果不够则左边用0填充,但需要搭配zerofill,并且默认变为无符号整型 |
| |
| |
| |
| 定点数:decimal(M,D) |
| 浮点数: |
| float(M,D) 4 |
| double(M,D) 8 |
| |
| 特点: |
| ①M代表整数部位+小数部位的个数,D代表小数部位 |
| ②如果超出范围,则报out or range异常,并且插入临界值 |
| ③M和D都可以省略,但对于定点数,M默认为10,D默认为0 |
| ④如果精度要求较高,则优先考虑使用定点数 |
字符型
| |
| char、varchar、binary、varbinary、enum、set、text、blob |
| |
| char:固定长度的字符,写法为char(M),最大长度不能超过M,其中M可以省略,默认为1 |
| varchar:可变长度的字符,写法为varchar(M),最大长度不能超过M,其中M不可以省略 |
日期型
| |
| year年 |
| date日期 |
| time时间 |
| datetime 日期+时间 8 |
| timestamp 日期+时间 4 比较容易受时区、语法模式、版本的影响,更能反映当前时区的真实时间 |
常见的约束
| |
| NOT NULL:非空,该字段的值必填 |
| UNIQUE:唯一,该字段的值不可重复 |
| DEFAULT:默认,该字段的值不用手动插入有默认值 |
| CHECK:检查,mysql不支持 |
| PRIMARY KEY:主键,该字段的值不可重复并且非空 unique+not null |
| FOREIGN KEY:外键,该字段的值引用了另外的表的字段 |
| |
| |
| |
| ①、一个表至多有一个主键,但可以有多个唯一 |
| ②、主键不允许为空,唯一可以为空 |
| |
| |
| 都具有唯一性 |
| 都支持组合键,但不推荐 |
| 外键: |
| 1、用于限制两个表的关系,从表的字段值引用了主表的某字段值 |
| 2、外键列和主表的被引用列要求类型一致,意义一样,名称无要求 |
| 3、主表的被引用列要求是一个key(一般就是主键) |
| 4、插入数据,先插入主表 |
| 删除数据,先删除从表 |
| 可以通过以下两种方式来删除主表的记录 |
| |
| ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE CASCADE; |
| |
| |
| ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) REFERENCES major(id) ON DELETE SET NULL; |
创建表时添加约束
| |
| create table 表名( |
| 字段名 字段类型 not null, |
| 字段名 字段类型 primary key, |
| 字段名 字段类型 unique, |
| 字段名 字段类型 default 值, |
| constraint 约束名 foreign key(字段名) references 主表(被引用列) |
| |
| ) |
| 注意: |
| 支持类型 可以起约束名 |
| 列级约束 除了外键 不可以 |
| 表级约束 除了非空和默认 可以,但对主键无效 |
| |
| 列级约束可以在一个字段上追加多个,中间用空格隔开,没有顺序要求 |
修改表时添加或删除约束
| 修改表时添加或删除约束 |
| /* |
| |
| alter table 表名 modify column 字段名 字段类型 新约束; |
| |
| alter table 表名 add 【 constraint 约束名】 约束类型(字段名) 【 外键的引用】 ; |
| */ |
| |
| |
| |
| alter table 表名 modify column 字段名 字段类型 not null; |
| |
| alter table 表名 modify column 字段名 字段类型 ; |
| |
| |
| |
| alter table 表名 modify column 字段名 字段类型 default 值; |
| |
| alter table 表名 modify column 字段名 字段类型 ; |
| |
| |
| |
| |
| alter table 表名 modify column 字段名 字段类型 primary key; |
| |
| alter table 表名 add【 constraint 约束名】 primary key(字段名); |
| |
| PRIMARY KEY (字段1,字段2) |
| |
| |
| alter table 表名 drop primary key; |
| |
| |
| |
| alter table 表名 add【 constraint 约束名】 unique(字段名); |
| alter table 表名 modify column 字段名 字段类型 UNIQUE; |
| |
| alter table 表名 drop index 索引名(字段名); |
| |
| |
| |
| alter table 表名 add【 constraint 约束名】 foreign key(字段名) references 主表(被引用列); |
| |
| alter table 表名 drop foreign key 约束名; |
自增长列
| 特点: |
| |
| auto_increment_increment |
| 如果要更改起始值:手动插入值 |
| 如果要更改步长:更改系统变量 |
| set auto_increment_increment=值; |
| |
| |
| |
| |
| |
| |
| create table 表( |
| 字段名 字段类型 约束 auto_increment |
| ) |
| |
| alter table 表 modify column 字段名 字段类型 约束 auto_increment |
| |
| |
| alter table 表 modify column 字段名 字段类型 约束 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南