Day1-MySQL数据库
学习目标
1、掌握Navicat
基本使用
2、掌握select
基本语法;
3、掌握insert
基本语法;
4、掌握update
基本语法;
5、掌握delete
基本语法;
一、数据库简介(Mysql)
-
SQL语言主要分为
- DQL:数据查询语言,用于对数据进行查询,如
select
; - DDL:数据定义语言,进行数据库、表的管理等,如
create
、drop
; - DML:数据操作语言,对数据进行增、删、改,如:
insert
,update
,.delete
; - TPL:事务处理语言,对事务进行处理,包括
begin transaction
,commit
,rollback
;
- DQL:数据查询语言,用于对数据进行查询,如
-
对于测试工程师来讲,重点是数据的查询,需要熟练编写DQL,能看懂DDL,DML和其他语句了解即可;
-
SQL语言不区分大小写
Navicat基本使用
然后配置
mysql
,参考教程:CSDN
- 配置
Navicat
连接mysql
,并且创建数据库
- 新建查询
看到如下结果,代表navicati
连接mysql
设置成功
二、SQL语言基础
2.1 学习目标
- 掌握
CREATE TABLE
、DROP TABLE
语句; - 掌握:增加
INSERT
、查询SELECT
、删除DELETE
、修改UPDATE
表语句;
2.2 SQL语言中的注释
-
单行注释
格式: -- 注释内容
select * -- 简单的查询语句
from students;
注意: -- 与注释文字之间用空格分开
-
多行注释
格式:
/*注释内容*/
/*
这是一个多行注释
的句子
*/
- 在
Navicat
中按ctrl + /
快速注释选中的SQL代码 - 在
Navicat
中按ctrl+shift+/
选中SQL代码取消注释
2.3 Mysql常用数据类型
- 整数: int,有符号范围(-2147483648 ~2147483647),⽆符号(unsigned)范围(0 ~ 4294967295)
- ⼩数: decimal,例如:decimal(5,2) 表示共存5位数,⼩数占2位,整数占3 位
- 字符串: varchar,范围(0~65533),例如:varchar(3) 表示最多存3个字符,⼀个中⽂或⼀个字⺟都占⼀个字符
- ⽇期时间: datetime,范围(1000-01-01 00:00:00 ~ 9999-12-31 23:59:59),例如:'2020-01-01 12:29:59'
- 整数⽆符号设置
2.4 数据库中的元素
-
数据库(database)
-
表(table):
表(table),数据库中存储数据的基本单位,表是一个由行和列组成的二维表格结构 -
字段(field)
表中的列,在数据库中,叫做字段(filed)
-
记录(record)
表中的一行,在数据库中,叫做记录(record)
2.5 CREATE TABLE创建表
-
语法
create table 表名( 字段名 数据类型, 字段名 数据类型 ... );
-
举例 - 1
-- 例 1:创建表 a,字段要求:name(姓名),数据类型:varchar(字符串),长度为 l0 CREATE TABLE a( name VARCHAR(10) );
-
举例 - 创建两个字段的表
/* 例2:创建表b,字段要求:name(姓名),数据类型为varchar(字符串),长度为10; height(身高),数据类型为decimal(小数),一共5位,其中3位整数,2位小数。 */ CREATE TABLE b( name VARCHAR(10), height DECIMAL(5, 2) -- 5位,2位是小数 );
-
举例 - 创建三个字段的表
/* 例3:创建表c,字段要求如下: id:数据类型为int(整数): name姓名:数据类型为varchar(字符串)长度为20, age年龄:数据类型为tinyint unsigned(无符号小整数); */ CREATE TABLE c( id int, name VARCHAR(20), age TINYINT UNSIGNED ); -- 如果表c不存在,则创建,存在,不执行 create TABLE if NOT EXISTS c ( id int, name VARCHAR(20), age TINYINT UNSIGNED );
2.6 INSERT添加数据
-
语法:inset into 表名 values(值,值,值);
-
添加一条记录
格式一:所有字段设置值,值的顺序与表中字段的顺序对应
-- 往表c插入一条记录 INSERT INTO c VALUES(0, '张飞', 30);
格式二:部分字段设置值,值的顺序与给出的字段顺序对应
-- 表c插入一条记录,只设置id和姓名name INSERT INTO c(id, name) VALUES (1, '老夫子');
-
添加多条记录
格式一:写多条insert语句,语句之间用英文分号隔开
-- 表c插入三条记录,写三条insert语句,语句之间用分号隔开 INSERT INTO c(id, name, age) VALUES(2, '秦始皇', 20); INSERT INTO c(id, name, age) VALUES(3, '汉武帝', 30); INSERT INTO c VALUES(4, '唐太宗', 23);
格式二:写一条insert语句,添加多条记录
数据之间用英文逗号隔开
-- 表c插入多条记录,用一条insert语句,数据之间用逗号隔开 INSERT INTO c VALUES(5,'宋太祖',23),(6, '庄子', 23);
格式三:写一条insert语句,设置指定字段值
-- 表c插入多条记录,用一条insert语句,只设置姓名和年龄 INSERT into c(name, age) VALUES('雍正', 18),('刘备', 22);
表C最终结果:
2.7 SELECT简单查询
-
查询所有字段
-
语法:
select * from 表名
-- 查询表c所有数据 SELECT * FROM c;
-
-
查询指定字段
-
语法:
select 字段1,字段2,... from 表名
-- 查询表c中id,age SELECT id, age FROM c; -- 查询表c的所有字段,但顺序自定义 select name,id age from c;
-
2.8 UPDATE修改数据
-
语法:
update 表名 set 字段1=值1,字段2=值2... where 条件;
-- 修改表c,所有人的年龄age字段改为50 UPDATE c SET age=50; -- 修改表c,id为2的记录,姓名(name字段)改为狄仁杰',年龄(age字段)改为20 UPDATE c SET name='狄仁杰',age=20 WHERE id=2; -- 修改name为刘备的记录为李白 UPDATE c SET name='李白' where name='刘备'; -- id大于10的记录,长一岁 UPDATE c set age=age+1 WHERE id > 10;
2.9 DELETE删除表中的记录
-
语法:
delete from 表名 where 条件
-- 删除表c中id为6的记录 DELETE FROM c WHERE id=6; -- 删除表c中name为诸葛亮的记录 DELETE from c where name='诸葛亮';
2.10 TRUNCATE 删除表中的记录
-
语法:(删除表的所有数据,保留表结构)
truncate table 表名;
-- 删除表c的所有数据 TRUNCATE TABLE c;
2.11 DELETE和TRUNCATE区别
- 在速度上,
truncate
>delete
; - 如果想删除部分数据用
delate
,注意带上where子句; - 如果想保留表而将所有数据删除,自增长字段恢复从1开始,用
truncate
;
2.12 小结
- 增
- insert into
- 删
- delete
- 改
- update
- 查
- select
2.13 DROP TABLE 删除表
-- 删除表a
drop TABLE a;
-- 如果表a存在删除表a,如果不存在,不执行
drop table if EXISTS a;
三、字段的约束
3.1 常用的约束介绍
- 主键(primary key):值不能重复,auto_increment代表值自动增长;
- 非空(not null):此字段不允许填写空值;
- 惟一(unique):此字段的值不允许重复;
- 默认(default):当不填写此值时会使用默认值,如果填写时以填写为准。
3.2 创建带约束字段的语法格式
create table 表名(
字段名 数据类型 约束,
字段名 数据类型 约束,
...
);
3.3 主键与自增长
-
带有Primary key(主键)的字段,值不能重复;
-
auto_increment为自增长;
-
语法
create table 表名( 字段名 数据类型 primary key auto_increment, 字段名 数据类型 约束, ... );
/*
例1:创建表d字段要求如下:
id:数据类型为int unsigned(无符号整数)),primary key(主键),auto_increment(自增长);
name 姓名:数据类型为varchar(字符串)长度为10,
age年龄:数据类型为int(整数):I
*/
drop table d;
CREATE TABLE if not EXISTS d(
id int UNSIGNED PRIMARY KEY auto_increment,
name VARCHAR(10),
age int
);
insert into d values(1,'张飞',20);
INSERT into d(name,age) VALUE('刘备',55);
insert into d(name,age) values('关羽',33);
-- 插入时候指定了id的值
INSERT into d VALUES (6,'曹操',33);
-- 不指定id的值,在最后一条id自增长
INSERT into d(name,age) VALUES('不后悔', 12);
-- 如果不指定字段,主键自增长字段的值可以用占位符,0或者null
INSERT into d values(null,'里斯',12);
INSERT into d values(0,'面试',12);
3.4 非空
-
非空 not null
-
这个字段必须有值,如果没有值,insert会插入失败
/* 例1:创建表e,字段要求如下: id:数据类型为int unsigned(无符号整数); name姓名:数据类型为varchar(字符串)长度为10,not null(非空), age年龄:数据类型为int(整数); */ CREATE table if not EXISTS e( id int UNSIGNED, name VARCHAR(10) not null, age int ); INSERT into e values(1,'张三',33); SELECT * from e; -- insert into e(id,age) VALUES(2,30); -- INSERT into e values(1,null,33);
-
3.5 唯一
-
唯一(unique):此字段的值不允许重复
-
语法:
create table 表名( 字段名 数据类型 unique, ... );
/* 例1:创建表f,字段要求如下: id:数据类型为int(整数); name姓名:数据类型为varchar(字符串)长度为10,unique(唯一); age年龄:数据类型为int(整数); */ TRUNCATE table f; select * from f; create table if not EXISTS f( id int, name VARCHAR(10) UNIQUE, age int ); insert into f values(1,'里斯',20); -- insert into f values(2,'里斯',33);
3.6 默认值
-
默认值(default):当不填写此值时会使用默认值,如果填写时以填写为准;
-
语法:
create table if not exists 表名( 字段名 数据类型 default 值, ... );
/* 例1:创建表g,字段要求如下: id:数据类型为int(整数): name姓名:数据类型为varchar(字符串)长度为10; age年龄:数据类型为int(整数),default(默认值)30; */ TRUNCATE TABLE g; select * from g; create table if not EXISTS g( id int, name VARCHAR(10), age int DEFAULT(30) ); insert into g VALUES(1,'漳卅四年',12); DELETE from g where id=2; -- 插入时候不指定age的值 insert into g(id,name) VALUES(2,'发达的');
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义