MySQL数据库操作
1.创建数据库
create database 数据库名;
2.使用数据库
user 数据库名;
3.删除数据库
drop database 数据库名;
4.查询数据库
show databases; 查询所有数据库名
MySQL表操作
1.创建表
create table 表名( )
-- 语法
create table 表名(
字段名:1 字段类型1(字段长度) [约束] [ comment 字段1注释 ], -- 不是;号
字段名2 字段类型2(字段长度) [ comment 字段2注释 ],
....
字段名n 字段类型n(字段长度) [ comment 字段n注释 ]-- 最后一列后面是没有,的
) [ comment 表注释 ];
表名:建议多个单词使用下划线分割。
字段名:建议多个单词使用下划线分割。
字段类型:
约束:
字段类型
大分类 | 类型 | 描述 |
---|---|---|
数值类型 | int | 大整数 |
float | 浮点数类型 | |
double | 浮点数类型 | |
字符类型 | varchar(30) | 可变长度字符串,如果插入的长度小于定义长度时,插入多长就存多长 |
char(11) | 固定长度字符串,如果插入的长度小于定义长度,则可以右侧填充空格 | |
日期类型 | date | 日期,格式:yyyy-MM-dd |
datetime | 日期时间,格式:yyyy-MM-dd HH:mm:ss | |
timestamp | 时间戳 |
-
需求:
需求:在day035中创建一张名为student1的数据表,表中字段的要求如下
-
id:标识,数字类型
-
name:姓名,字符串类型,长度限制最多30个字符
-
gender:性别,字符串类型,长度限制为1个字符
-
age:年龄,数值类型
-
birthday:生日,日期类型,格式YYYY-mm-dd
-
-
实例:
create table student1( id int comment '标识', name varchar(30) comment '姓名', gender char(1) comment '性别', age int comment '年龄', birthday date );
字段约束
约束用于对表中的数据进行进一步的限制,一般作用在表中的字段上,用于保证数据的正确性。
约束种类有:主键约束、唯一约束、非空约束、默认值、外键约束。
约束 | 描述 | 关键字 |
---|---|---|
主键约束 | 主键是一行数据的唯一标识,要求非空且唯一;一张表只能有一个注解列 | primary key(auto increment自增) |
非空约束 | 限制该字段值不能为null | not null |
唯一约束 | 保证字段的所有数据都是唯一、不重复的 | unique |
默认约束 | 保存数据时,如果未指定该字段值,则采用默认值 | default |
外键约束 | 让两张表的数据建立连接,保证数据的一致性和完整性 | foreign key |
需求:在db1中创建一张名为student3的数据表,表中字段的要求如下:
-
id:数字类型,
主键字段,并且数值自动增长
-
name:字符串类型,长度限制最多30个字符,
要求姓名不能出现重复
-
gender:字符串类型,长度限制为1个字符,
如果不插入,默认为男
-
age:数值类型,
不能为空
-
birthday:日期类型,格式YYYY-mm-dd
-- 语法
create table 表名(
字段名1 字段类型1(字段长度) [ 约束 ] [ comment 字段1注释 ], -- 不是;号
字段名2 字段类型2(字段长度) [ 约束 ] [ comment 字段2注释 ],
....
字段名n 字段类型n(字段长度) [ 约束 ] [ comment 字段2注释 ] -- 最后一列后面是没有,的
) [ comment 表注释 ];
-- 实例
create table student3(
id int primary key comment '标识',
name varchar(30) unique comment '姓名',
gender char(1) default '男' comment '性别',
age int not null comment '年龄',
birthday date comment '生日'
) comment '学生表';
添加完约束之后,可以查询添加一些违法数据,观察报错
-- id重复会报错 Duplicate entry '1' for key 'PRIMARY'
-- 姓名重复会报错 Duplicate entry '黑张三' for key 'name'
-- age为null,会报错 Column 'age' cannot be null
1.主键约束
-- 创建表,声明字段时,确定主键。缺点:只能给一个字段声明主键。
create table pk1(
id int primary key,
name varchar(50)
);
-- 创建表,在约束区域,确定主键字段。特点:可以声明联合主键(多个字段合在一起时一个主键)
create table pk2(
id int,
name varchar(50),
constraint primary key (id)
);
-- 创建表后,修改表结构,声明主键。特点:可以声明联合主键
create table pk3(
id int,
name varchar(50)
);
alter table pk3 add constraint primary key (id);
测试:
--非空
insert into pk1(id) values(1); -- name为null
insert into pk1(name) values('jack'); -- id不允许为null,且没有默认值,添加失败。
--唯一
insert into pk1(id) values(1); -- 在执行一遍,添加失败,重复了!!!
-- Duplicate entry '1' for key 'PRIMARY'
2.非空约束
--只能在创建表,声明字段时,设置非空
create table nn1(
id int not null,
name varchar(50) not null
);
测试:
insert into nn1(id) values(1); --在没有默认值的前提下,添加失败
3.唯一约束
-- 创建表,声明字段时,确定唯一。
create table un1(
id int unique,
name varchar(50)
);
-- 创建表,在约束区域,确定唯一字段。
create table un2(
id int,
name varchar(50),
constraint unique (id)
);
-- 创建表后,修改表结构,声明唯一。
create table un3(
id int,
name varchar(50)
);
alter table un3 add constraint unique (id);
测试
insert into un1(id) values(1); --成功
insert into un1(id) values(1); --失败,重复
insert into un1(name) values('jack'); --成功,允许为null
4.默认约束
--在创建表,声明字段时,设置默认
create table de1(
id int,
name varchar(50) default ''
);
测试
insert into de1(id) values(1); --name没有设置,采用默认值
2.查询表
-- 1. 查看当前库中的所有数据表
show tables;
-- 2. 查看student3表的表结构
-- 语法: desc 表名
desc student3;
-- 3. 查看student3表的建表语句
-- 语法:show create table 表名;
show create table student3;
3.修改表
-- 添加字段:alter table 表名 add 字段名 类型(长度)
alter table student1 add description varchar(200);
alter table student1 add `desc` varchar(200); --关键字需要使用重音符
-- 修改字段类型:alter table 表名 modify 字段名 新数据类型(长度)
alter table student1 modify `desc` varchar(100);
-- 修改字段名和字段类型:alter table 表名 change 旧字段名 新字段名 类型 (长度)
alter table student1 change `desc` description varchar(150);
-- 删除字段:alter table 表名 drop column 字段名
alter table student1 drop column description;
-- 修改表名:rename table 表名 to 新表名
rename table student1 to student;
4.删除表
-- 删除表 drop table [ if exists ] 表名
drop table student2;
-- 添加一个删除的数据
create table student2(
id int comment '标识',
name varchar(30) comment '姓名',
gender char(1) comment '性别',
age int comment '年龄',
birthday date
);
MySQL数据操作
1.单表查询
设置编码格式,在查询时显示中文数据 set names gbk;
--select * from 表名;
select * from student1;
2.插入数据
字段名:可以使用重音符括起来,也可以不用。
值:整型直接写,字符串需要引号引起来。(双引号、单引号都可以。推荐单引号)
--全部字段添加数据
--insert into 表名 values(值1,值2,值3...);
insert into student1 values(1,'张三','男',14,'2023-12-23','在上学');
--指定字段添加数据
--insert into 表名 (字段1, 字段2, 字段3...) values(值1,值2,值3..);
insert into student1 (id, name, age) values (2, '李四', 20);
3.修改数据
--修改数据: update 表名 set 字段名1 = 值1 , 字段名2 = 值2 , .... [ where 条件 ]
---- 如果没有where更新条件,将修改所有数据
update student set name='张三三', gender='女', age=19; --修改表中所有数据
update student set name='张三三', gender='女', age=19 where id = 1; --更新指定的
4.删除数据
--删除数据: delete from 表名 [ where 条件 ]
delete from student where id = 2;
--删除表中所有数据:
delete from student;