博客主页:小蜗
系列专栏:MySQL
参考教程:黑马/菜鸟
关注博主,后期持续更新系列文章
如果有错误请大家批评指出,我会及时修改
感谢大家点赞收藏⭐评论✍
MySQL是一个广泛使用的开源关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,现属于Oracle公司。它使用关系型模型存储数据,支持SQL(结构化查询语言),适用于各种规模的应用,从小型个人网站到大型企业级应用。MySQL的主要特点包括:
SQL(Structured Query Language,结构化查询语言)是一种用于管理和操作关系型数据库的标准编程语言。它被广泛应用于各种数据库系统,如MySQL、Oracle、SQL Server等。
SQL 语言主要分为:
select * – 简单的查询语句
注意:–与注释文字之间用空格分隔;
/*这是是一个
多行注释的例子
*/
MySQL 常用的数据类型包括:
一、数值类型
二、字符串类型
三、日期和时间类型
四、枚举和集合类型
create table 表名(
字段名 数据类型,
字段名 数据类型
… );
例 1:创建表 g,字段要求:name(姓名),数据类型:varchar(字符串),长度为
9
create table g(
name varchar(9)
);
例 2:创建表 h,字段要求:
name(姓名),数据类型为 varchar(字符串),长度为 10;
height(身高),数据类型为 decimal(小数),一共 5 位, 其中 3 位整数,2 位
小数。
create table h(
name varchar(10),
height decimal(5,2)
);
SQL 语句中,字符串用单引号’’或者双引号””引起来,数字可以省略引号。
格式一:所有字段设置值,值的顺序与表中字段的顺序对应
insert into 表名 values (…);
例 1:表 c 插入一条记录,设置所有字段的信息
insert into c values (0,‘蜗牛’,23);
格式二:部分字段设置值,值的顺序与给出的字段顺序对应
insert into 表名 (字段 1,…) values (值 1,…);
例 2:表 c 插入一条记录,只设置 id 和姓名 name
insert into c (id,name) values (1,‘大蜗牛’);
格式一:写多条 insert 语句,语句之间用英文分号隔开
例 3:表 c 插入三条记录,写三条 insert 语句, 语句之间用分号隔开
insert into c (id,name,age) values (2,‘秦蜗蜗’,23);
insert into c (id,name,age) values (3,‘汉蜗蜗’,26);
insert into c values (4,‘唐蜗蜗’,23);
格式二:写一条 insert 语句,添加多条记录,数据之间用英文逗号隔开
insert into 表名 values (…),(…)… ;
例 4:表 c 插入多条记录,用一条 insert 语句, 数据之间用逗号隔开
insert into c values (5,‘宋蜗蜗’,23),(6,‘蜗子’,23);
格式三:写一条 insert 语句,设置指定字段值
insert into 表名(字段 1,…) values (值 1,…),(值 1,…)… ;
例 5:表 c 插入多条记录,用一条 insert 语句, 只设置姓名和年龄
insert into c (name, age) values (‘刘蜗’,26),(‘张蜗’, 35);
select * from 表名
例 1:查询表 c 所有数据
select * from c
select 字段 1,字段 2,… from 表名
例 2:查询表 c 的姓名(name 字段)和年龄(age 字段)
select name,age from c;
update 表名 set 字段 1=值 1,字段 2=值 2… where 条件;
例 1:修改表 h,所有人的年龄(age 字段)改为 80
update h set age=80;
delete from 表名 where 条件;
例 2:删除表 g 的所有记录
delete from g;
truncate table 表名;
例:删除表 c 的所有数据
truncate table c;
DELETE
和 TRUNCATE
都是 SQL 中用于删除数据的语句,但它们之间有一些重要的区别:
操作方式:
DELETE
:通过特定条件来删除表中的数据。你可以使用 WHERE
子句来指定删除哪些行,如果没有 WHERE
子句,则会删除表中的所有行。TRUNCATE
:用于快速删除表中的所有数据,它不接受 WHERE
子句,因此会删除表中的每一行。速度和资源消耗:
TRUNCATE
通常比 DELETE
更快,因为它不会记录每行的删除操作,而是直接释放表的存储空间。这使得 TRUNCATE
在删除大量数据时更加高效。DELETE
会记录每一行的删除操作,这可能会消耗更多的日志空间和处理时间,特别是在处理大量数据时。事务安全性:
DELETE
是一个可回滚的操作,这意味着如果在事务中执行了 DELETE
,但随后事务被回滚,那么删除的数据将会恢复。TRUNCATE
在某些数据库系统中(如 MySQL 的 InnoDB 存储引擎)不是可回滚的,一旦执行,数据就无法恢复。然而,在其他数据库系统或存储引擎中,TRUNCATE
可能会有不同的事务行为。触发器和约束:
DELETE
删除数据时,如果表上有触发器或外键约束,它们将会被触发或检查。TRUNCATE
时,通常会忽略触发器和外键约束(但这取决于具体的数据库系统和配置)。因此,TRUNCATE
可能会导致违反外键约束的错误,或者不会触发与删除操作相关的触发器。权限要求:
TRUNCATE
可能需要更高的权限,因为它可以快速删除大量数据并释放存储空间。总之,DELETE
和 TRUNCATE
在删除数据时具有不同的特点和用途。在选择使用哪个语句时,应根据具体需求和数据库系统的特性进行权衡。如果你需要删除特定条件的数据并保留事务安全性,那么 DELETE
是更好的选择。如果你需要快速删除表中的所有数据,并且不关心事务回滚或触发器等问题,那么 TRUNCATE
可能更合适。
语法 :
drop table 表名;
drop table if exists 表名;
例 1:删除表 a
drop table a;
drop table if exists a;
create table 表名(
字段名 数据类型 约束,
字段名 数据类型 约束
… );
create table 表名(
字段名 数据类型 primary key auto_increment,
字段名 数据类型 约束
… );
例 1:创建表 d,字段要求如下:
id : 数 据 类 型 为 int unsigned( 无 符 号 整 数 ) ) ,primary key(主键),auto_increment(自增长);name 姓名:数据类型为 varchar(字符串)长度为 10;
age 年龄:数据类型为 int(整数);
create table d(
id int unsigned primary key auto_increment,
name varchar(10),
age int
);
例 2:不指定 id 字段值,系统自动填写, 且自增长
insert into d (name, age) values (‘慈蜗’,65);
insert into d (name, age) values (‘光蜗’,30);
insert into d (name, age) values (‘溥蜗’,12);
insert into d values (‘乾蜗’,60);
使用占位符,通常使⽤0 或者 null (空)来占位。
例 4:用 0 或者 null 来占位,实现自增长字段的插入
insert into d (id, name, age) values (null,‘康蜗’,41);
insert into d (id, name, age) values (0,‘蜗蜗’,66);
create table 表名(
字段名 数据类型 not null,
… );
例 1:创建表 e,字段要求如下:
id:数据类型为 int unsigned (无符号整数);
name 姓名:数据类型为 varchar(字符串)长度为 10,not null(非空),
age 年龄:数据类型为 int(整数);
create table e(
id int unsigned,
name varchar(10) not null,
age int
);
insert 插入数据,没有指定 name 的值会失败,因为 name 字段 not null(非空)
create table 表名(
字段名 数据类型 unique,
… );
例 1:创建表 f,字段要求如下:
id:数据类型为 int (整数);name 姓名:数据类型为 varchar(字符串)长度为 10,unique(唯一);age 年龄:数据类型为 int(整数);
create table f(
id int,
name varchar(10) unique,
age int
);
如果插入的记录中 name 值重复, 会插入失败
默认值(default):当不填写此值时会使用默认值,如果填写时以填写为准;
create table 表名(
字段名 数据类型 default 值,
… );
例 1:创建表 g,字段要求如下:
id:数据类型为 int (整数);name 姓名:数据类型为 varchar(字符串)长度为 10;
age 年龄:数据类型为 int(整数),default(默认值)30;
create table g(
id int,
name varchar(10),
age int default 30
);
age 字段的默认值为 30,如果 insert 没有指定 age 的值,默认 age 为 30,insert 指定了 age 的值 50,最终写入表中是数据为 50