MySQL-学习笔记3
一、DML语言 (数据操作语言)
- 插入:insert
- 修改:update
- 删除:delete
1、插入语句
方式一
语法
insert into 表名(列名1,列名2…)value(值1,值2,…)
insert into boys(id, boyName,userCP) value (5,'鹿晗',200)
特点
- 插入的值类型要与列的类型一致
- 不可以为空值的列必须插入值,可以为空值的列有两种插入空值的方式
- 可以省略列名,默认所有列,且列的顺序与表中列的顺序一致
方式二
语法
insert into 表名
set 名1 = 值1,列名2 = 值2
两种方式PK
- 方式一支持插入多行
insert into boys(id, boyName,userCP)
value(7,'张艺兴',200),(8,'邓超',200),(9,'陈赫',200);
- 方式一支持子查询,方式二不支持子查询
insert into boys(id, boyName,userCP)
select 10,'蔡徐坤',300;
2、修改语句
修改单表的记录
语法
update 表名
set 列 = 新值, 列 = 新值
where 筛选条件
eg.把柳岩的电话改成18888888888
update beauty
set phone = '18888888888'
where name = '柳岩';
修改多表的记录
语法
update 表名1 别名,
inner join 表名2 别名
set 列 = 新值, 列 = 新值
on 连接条件
set 列 = 值
where 筛选条件
eg. 把张无忌的女朋友的电话号码改成114
update beauty g
inner join boys b
on g.boyfriend_id = b.id
set phone = 114
where b.boyName = '张无忌';
3、删除语句
语法
delete from 表名 where 筛选条件
单表删除
eg. 删除手机号以9为结尾的女神信息
delete from beauty
where phone like '%9';
多表删除
eg. 删除张无忌的女朋友的信息
delete g
from beauty g
inner join boys b
on g.boyfriend_id = b.id
and b.boyName = '张无忌';
二、DQL(数据定义语言)
- 库的管理:创建、修改、删除
- 表的管理:创建、修改、删除
1、库的管理
库的创建
语法
create database 库名;
库的修改
语法
rename database 库名 to 新库名;
2、表的管理
表的创建
语法
create table 表名(
列名 列的类型【(长度)约束】,
列名 列的类型【(长度)约束】,
列名 列的类型【(长度)约束】,
...
列名 列的类型【(长度)约束】
);
例子
create table `books`.`book`(
`id` int(10),
`name` varchar(20),
`price` decimal(10),
`author` varchar(20)
);
表的修改
- 修改列名
alter table 表名 change column 列名 新列名;
- 修改列的字段类型
alter table 表名 modify column 列名 字段新类型;
- 添加新列
alter table 表名 add column 列名 字段类型;
- 删除列
alter table 表名 drop column 列名;
表的删除
drop table 表名;
约束
1、常见的约束类型
- not null 非空约束,用于保证该字段的值不为空
- default 默认约束,用于保证该字段的值有默认值
- primary key 主键,用于保证该字段的值具有唯一性并且非空
- unique 唯一值,用于保证该字段的值具有唯一性,可以为空
- check 检查约束
- foreign key 外键,用于限制两表的关系,保证该字段的值必须来自主表关联列的值
2、添加约束的时机
- 创建表时
- 修改表时
创建表时添加约束
create table 表名(
列名 列的类型 【约束】,
列名 列的类型 【约束】,
列名 列的类型 【约束】,
...
列名 列的类型 【约束】
);
例子
create table stuinfo(
id int primary key,
stuName varchar(10) not null,
gender char(1) check(gender = '男' or gender = '女'),
age int(5) default 18,
majoerId int(5));
添加约束的分类
- 表级的约束:除了非空和默认,其它约束都支持
- 列级的约束:六大约束都支持,但外键约束没有效果