MySQL基础总结(一) MySQL的基本操作和增删改

本文是MySQL基础总结的第一部分,主要讲解了MySQL的基本操作,包括数据库的概念、基本操作,如登录、修改密码,以及DDL和DML语言的使用。详细介绍了整型、浮点型、定点型和字符型等数值类型,并提供了创建/删除数据库和表的语句示例,以及插入、更新和删除数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


MySQL基础总结(一)
MySQL的基本操作和增删改语句

数据库基本介绍

基本概念

  1. SQL(Structure Query Language)结构化查询语言
  2. DQL(data query language)数据查询语言 select操作
  3. DML(data manipulation language)数据操作语言,主要是数据库增删改三种操作
  4. DDL(data defination language)数据库定义语言,主要是建表、删除表、修改表字段等操作
  5. DCL(data control language)数据库控制语言,如commit,revoke之类的,在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL
  6. TCL (transaction control language) 事务控制语言

基本操作

  • windows mysql环境配置:

添加bin目录到系统变量(path)

  • 登录mysql:
mysql -h localhost -P 3306 -u root -p
  • 修改密码
set password for <用户名>@localhost = password('新密码');
  • 显示数据库:
show databases;
  • 使用数据库:
use <数据库名>;
  • 查看数据库中的表名

    • 这个需要先进入数据库
    show tables;	
    
    • 这个不需要先进入数据库
    show tables from <数据库名>
    
  • 查看当前在哪个数据库:

select database();
  • 查看当前MySQL的版本

    • 在MySQL客户端中
    select version();
    
    • 在cmd/bash中
    mysql --version
    
  • 查看表结构:

desc <表名>;
  • 语法规范:

    • 不区分大小写,建议关键字大写,表名和列名小写
    • 每条命令用 ; 结尾
    • 每条命令根据需要可以进行缩进和换行
  • MySQL注释:

    • 单行注释
    # 单行注释
    
    • 单行注释(注意 – 后面有个空格)
    -- 单行注释
    
    • 多行注释
    /*
    多行注释
    多行注释
    */
    
  • MySQL的其他注意事项

    • 着重号 `` (注意这是TAB键上面的那个键,不是单引号)

      `` 是着重号,在里面的内容表示一个字段,可以区分与关键字重名的字段

    • 如果查询的字段或者别名中有空格或者特殊符号,加上 “”(建议)或’’

    • MySQL中的 + 只有运算功能,没有拼接功能,如果字符类型使用 + ,则尝试将字符型转换为数值类型

      想要字符拼接功能,使用concat()函数

      举例:

      • 如果转换成功,则输出结果,如’100’+1输出101
      • 如果转换失败,则将字符认为0,再做运算,如’abc’+1输出1
    • SQL语句中所有的索引都是从 1 开始,不是0

数值类型

整型
整数类型字节范围
tinyint1有符号: -27 ~ -27; 无符号: 0 ~ 28-1
smallint2有符号: -215 ~ 215; 无符号: 0 ~ 216-1
mediumint3有符号: -223 ~ 223; 无符号: 0 ~ 224-1
int/integer4有符号: -231 ~ 231; 无符号: 0 ~ 232-1
bigint8有符号: -263 ~ 263; 无符号: 0 ~ 264-1

注意

创建表格字段时,默认是有符号,如果想设为无符号,在后面加上unsigned

create table  表名(
	id int		#默认无符号
);

create table 表名(
	id int unsigned		#设置为无符号
)

如果超出器范围,会抛出异常,并显示该类型最大/小值(临界值),或者直接报错报错(至于抛出异常还是报错,与MySQL的版本有关)

int无符号默认值 11 ,有符号默认值 10

int 后面添加参数,不是指定的该int的数值长度,而是指定的其显示长度,但是如果只添加一个数字参数并没有效果,需要在创建表时再添加 zerofill ,但是如果添加了zerofill,默认是无符号数,不能指定有符号数

create table 表名(
	id int(7) zerofill
);
浮点型
浮点数类型字节范围
float4±1.75494351E-38 ~ ±3.402823466E-38
double8±2.2250738585072014E-308 ~ ±1.7976931348623157E308
  • float
create table test(
	num float[(m,d)]
)

注意

1. 长度为m,保留小数点后d位,如果超出位数,则四舍五入,如果范围超出指定的长度,就显示指定范围的临界值或者直接报错(至于抛出异常还是报错,与MySQL的版本有关)

2. (m,d) 可以省略,一般使用默认值即可

  • double
create table test(
	num double[(m,d)]
)

注意

1. 长度为5,保留小数点后2位,如果超出位数,则四舍五入,如果范围超出指定的长度,就显示指定范围的临界值或者直接报错(至于抛出异常还是报错,与MySQL的版本有关)

2. (m,d) 可以省略,一般使用默认值即可

定点型
定点数类型字节范围
dec(M,D)/decimal(M,D)M+2最大值的范围与double相同,给定decimal的有效取值范围M和D决定
字符型
  • 较短的字符型
    • char
    • varchar
  • 较长的字符型
    • text
    • blob

DDL语言

创建/删除语句

  • 创建数据库
create database [if not exists] <数据库名>;
  • 创建表
create table [if exists] <表名>(
<列名1> <列名类型1> [(长度) 约束],
<列名2> <列名类型2> [(长度) 约束],
...
<列名n> <列名类型n> [(长度) 约束]
);
  • 删除数据库
drop database [if exists] <数据库名>;
  • 删除(销毁)表
drop table [if exists] <表名>;
  • 复制表

    • 复制表的结构,不复制内容
    create table <新表名>
    like <旧表名>;
    
    • 复制表的内容+数据,可以通过where语句复制部分符合条件的数据
    create table <新表名>
    select * from <旧表名> 
    [where 条件];
    
    • 只复制表的部分字段
    create table 新表名
    select 字段1,字段2,...
    from 旧表名
    where 恒不成立的条件(如0);
    

修改语句

  • 修改列名
alter tabel <表名> change [column] <旧列名> <新列名> [新列名的类型(长度)];

注意

column可加可不加,效果都是一样的,下同

  • 修改列的类型或约束
alter table <表名> modify [column] <列名> <新列名的类型(长度)> [新列的约束条件]
  • 添加列
alter table <表名> add [column] <新列名> <新列名的类型(长度)> [约束]
  • 删除列
alter table <表名> drop [column] <列名>

DML语言

插入语句

语法 1

  • 插入一行
insert into <表名>(<字段列表>) value(<值列表>);
  • 插入多行
insert into <表名(<字段列表>) value(<值列表1>),(<值列表2>),(<值列表3>)...(<值列表n>);

注意

1. 插入的值要与字段类型一致或兼容

2. 非空字段必须插入值;可以为空的字段,可以设置为NULL,也可以直接不写

3. 列的顺序可以调换,但是要保证字段列表和值列表一一对应

4. 支持子查询,例如

insert into student(id,name,age,score) select '2','李四',18,90;

语法 2 插入指定字段

insert into <表名> set <字段名1>=<值1>,<字段名2>=<值2>...<字段名n>=<值n>

注意

1. 需要保证非空字段全部设置

2. 不支持一次性插入多行

3. 不支持子查询


更新语句

  • 更新单个表
update 表名 
set 字段名1=新值1,字段名2=新值2,...,新值n
where 条件;
  • 更新多个表
update 表1 别名
inner|left|right join 表2 别名
on 连接条件
set 字段名1=值1,字段名2=值2...,字段名n=值n
where 条件;

删除语句

  • delete

    • 删除符合条件的行
    delete from <表名> where <条件>;
    
    • 删除整张表的所有行
    delete from <表名>;
    
  • truncate

truncate table <表名>
  • drop
drop table [if exists] <表名>;

注意

1. delete是删除符合条件的行,不加条件默认是全部的行,不会删除整个表

2. truncate是删除整张表,相当于销毁了整个表格,然后创建一个一模一样的空表

3. drop是销毁表格,直接销毁表格释放空间,不会自动创建

3. 如果表有自增长的字段,使用delete删除后,再添加数据从自增正的断点开始,而truncate删除后自增长的字段从1开始

4. delete执行之后会返回数据(影响了几行数据),而truncate删除之后没有返回数据

5. elete删除之后可以回滚,truncate删除之后不能回滚


  • 删除整张表的所有行
delete from <表名>;
  • truncate
truncate table <表名>
  • drop
drop table [if exists] <表名>;

注意

1. delete是删除符合条件的行,不加条件默认是全部的行,不会删除整个表

2. truncate是删除整张表,相当于销毁了整个表格,然后创建一个一模一样的空表

3. drop是销毁表格,直接销毁表格释放空间,不会自动创建

3. 如果表有自增长的字段,使用delete删除后,再添加数据从自增正的断点开始,而truncate删除后自增长的字段从1开始

4. delete执行之后会返回数据(影响了几行数据),而truncate删除之后没有返回数据

5. elete删除之后可以回滚,truncate删除之后不能回滚


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值