1. MySQL表数据类型
请参照
MySQL 数据类型
2. SQL语句创建表
2.1 创建表
语法:
use 数据库;
create table 表名(属性名 数据类型 [完整性约束],
属性名 数据类型 [完整性约束],
…
)
事例:
2.2 创建表的主键
主键:特殊的字段,能够唯一标识每条记录,不能重复
目的:为了让 MySQL 能以最快的速度查找到该记录
创建:
单字段主键:
语法:属性名 数据类型 primary key
例子:
多字段主键
语法:primary key(属性 1…属性 n)
例子:
2.3 创建表的外键
外键:与父表建立关系的字段
原则:必须依赖于父表已存在的主键
目的:保证数据的完整性
Astu_id 1001
B stu_id score 1001 90
语法:constraint 外键别名 foreign key(字段 1.1,字段 1.2) references 主表名(字段 2.1,字段 2.2)
字段 2–>主表的主键列
例子:
2.4 创建表的相关完整性约束
1、非空约束
语法:属性名 类型 not null
2、唯一约束
语法:属性名 类型 unique
3、自增长
语法:属性名 类型 auto_increment
(要求:类型必须是整型)
(注意:如果插入到最后一个标识为 7,删除掉后这个”7”后,后续则从 8 开始)
4、默认值
语法:属性名 类型 default 默认值
2.5 查看表结构
1、基本结构:
语法:describe 表名
可简写:desc 表名
例子:
2、详细结构:
语法:show create table 表名
例子:
详细结构美化:在语句后加上 \G(PS:一定要是大写的 G)
3. 用SQL语句向表中添加数据
3.1 为表的所有字段插入数据
insert 语句不指定字段名
例子3.2 insert 语句列出所有字段
例子
3.3 为表的指定字段插入数据
例子
3.4 为表同时插入多条数据
语法:insert into 表名 values(…),(…),(…)
例子:
3.5 将查询结果插入到表内
语法:insert into 表 1 (字段列表 1) select 字段列表 2 from 表 2
例子:
4. 用SQL语句删除表
4.1 删除表中已有数据
语法:
delete from 表名 [where 条件表达式]
现有数据:
例子:
关于DELETE,DROP, TRUNCATE 的实现和区别,将在之后另外发布博客。
5. SQL 修改表
5.1 修改表名
1.use 数据库名;
语法:alter table 旧表名 rename [to] 新表名
查看当前数据库下所有的表
语法:show tables;
例子:
5.2 修改字段
语法:alter table 表名 change 旧属性名 新属性名 新属性类型
1.修改字段类型
2.修改字段名和类型
5.3 新增字段
语法:alter table 表名 add 新属性名 新属性类型 [完整性约束] [first | after 原有字段]
1.新增无完整性约束的字段
2.新增有完整性约束的字段
3.将字段添加到第一位
4.将字段添加到某个字段之后
5.4 删除字段
语法:alter table 表名 drop 属性名
5.5 修改字段排列顺序
1.将字段修改到首位
语法:alter table 表名 modify 属性名 属性类型 [完整性约束] [first]
2.将字段修改到指定位置
语法:alter table 表名 modify 属性名 属性类型 [完整性约束] [after 原有字段]
5.6 删除外键
语法:alter table 表名 drop foreign key 外键名
6. 练习项目
6.1 超过 5 名学生的课(难度:简单)
SQL:
6.2 交换工资(难度:简单)
当要执行 update 时,如果报错:
Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.
这是因为 MySql 运行在 safe-updates 模式下,该模式会导致非主键条件下无法执行 update 或者delete 命令,执行命令 SET SQL_SAFE_UPDATES = 0;
修改下数据库模式