MySQL数据库单表基本使用(小白)

本文详细介绍了MySQL的入门语法,包括数据库连接、DDL(数据定义语言)如创建、删除数据库和表,以及DML(数据操作语言)如插入、更新和删除数据。还涵盖了数据类型、表结构操作和基本查询、修改、分组、排序及分页技巧。
摘要由CSDN通过智能技术生成

MySQL入门语法


连接数据库

mysql -u用户名 -p密码

数据库操作(DDL)

所有SQL语句都要以分号结束

查询数据库

查询所有已创建的数据库

show databases;

查询当前使用的数据库

select database();

使用数据库

使用某一个数据库

use 数据库名;

创建数据库

-- if not exists表示如果没有这个名称的数据库就创建,有就不创建也不会报错
-- 设置默认字符集为utf8
create database [if not exists] 数据库名 DEFAULT CHARACTER SET = 'utf8mb4';;

删除数据库

-- if exists表示如果有这个名称的数据库就删除,没有也不会报错
drop database [if exists] 数据库名;

数据表操作(DDL)

创建表

约束

  • 约束是作用于表中字段上的规则,用于限制存储在表中的数据
  • 保证数据库中数据的正确性、有效性和完整性
约束描述关键字
非空约束限制该字段值不能为nullnot null
唯一约束保证字段的所有数据都是唯一、不重复的unique
主键自增让主键自增auto_increment
主键约束主键是一行数据的唯一标识,要求非空且唯一primary key
外键约束让两张表的数据建立连接,保证数据的一致性和完整性foreign key
默认约束保存数据时,如果未指定该字段值,则采用默认值default

数据类型

  • 数值类型

无符号取值 需要设置 unsingned

类型大小(byte)有符号取值范围无符号取值范围描述备注
tinyint1(-128,127)(0,255)小整数值
smallint2(-32768,32767)(0,65535)大整数值
mediumint3(-8388608,8388607)(0,16777215)大整数值
int4(-2147483648,2147483647)(0,4294967295)大整数值
bigint8(-263,263 - 1 )(0,2^64 - 1)极大整数值
float4(-3.402823466 E+38,3.402823466351 E+38 )0和(1.175494351 E-38,3.402823466 E+38)单精度浮点数值float(5,2):5表示整个数字长度,2表示小数位个数
double8(-1.7976931348623157 E+308,1.7976931348623157 E+308 )0和(2.2250738585072014 E-308,1.7976931348623157 E+308)双精度浮点数值double(5,2):5表示整个数字长度,2表示小数位个数
decimal小数值(精度更高)decimal(5,2):5表示整个数字长度,2表示小数位个数
  • 字符串类型
类型大小描述
char0-255 bytes定长字符串
varchar0-65535 bytes变长字符串
tinyblob0-255 bytes不超过255个字符的二进制数据
tinytext0-255 bytes短文本字符串
blob0-65 535 bytes二进制形式的长文本数据
text0-65 535 bytes长文本数据
mediumblob0-16 777 215 bytes二进制形式的中等长度文本数据
mediumtext0-16 777 215 bytes中等长度文本数据
longblob0-4 294 967 295 bytes二进制形式的极大文本数据
longtext0-4 294 967 295 bytes极大文本数据
  • 日期时间类型
类型大小(byte)范围格式描述
date31000-01-01 - 9999-12-31YYYY-MM-DD日期值
time3-838:59:59 - 838:59:59HH:MM:SS时间值或持续时间
year11901 - 2155YYYY年份值
datetime81000-01-01 00:00:00 - 9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
timestamp41970-01-01 00:00:01- 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳
create table 表名(
  字段1 字段类型 [约束] [comment 字段1注释],
  字段2 字段类型 [约束] [comment 字段2注释],
  ...
  字段n 字段类型 [约束] [comment 字段n注释],
) [comment 表注释]

-- 例如
create table test_user (
    id int primary key auto_increment comment "id唯一表标识",
    username  varchar(20) not null unique comment "用户名",
    name varchar(10) not null comment "员工姓名",
    gender char(1) comment "性别",
    img mediumblob comment "图片",
    job char(4) comment "职位",
    date date comment "入职日期",
    password varchar(16) default '123456' comment "密码,默认123456",
    create_time datetime not null comment "创建时间",
    update_time datetime not null comment "修改日期"
) comment "用户表";

上面例子创建了一个名为test_user的数据表,其中ID为主键,并且自增,username不能为空且必须有值 password 有一个默认的123456

查询表

-- 查询当前数据库所有的数据表
show tables;

-- 查询表结构
desc 表名;

-- 查询建表语句
show create table 表名;

修改表

--添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];

-- 修改字段类型
alter table 表名 modify 字段名 新数据类型(长度);

-- 修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];

-- 删除字段
alter table 表名 drop column 字段名;

-- 修改表名
rename table 表名 to 新表名;

删除表

drop table [if exists] 表名;

数据操作(DML)

添加数据(insert)

-- 指定字段添加数据
insert into 表名 (字段1,字段2) values (1,值2);

-- 全部字段添加数据
insert into 表名 values (1,值2...);

-- 批量添加数据(指定字段)
insert into 表名 (字段1,字段2) values (1,值2),(1,值2);

-- 批量添加数据(指全部字段)
insert into 表名 values (1,值2),(1,值2);

修改数据(update)

update 表名 set 字段1=1,字段2=2 [where 条件];

删除数据(delete)

delete语句如果没有条件,将会删除整张表的所有数据

delete不能删除某一字段的值,可以使用update,将该字段的值置为null

delete from 表名 [where 条件];

数据查询(DQL)

基本查询

-- 查询该表中的所有数据
select * from 表名;

-- 查询多个字段
select 字段1,字段2,字段3 from 表名;

-- 设置别名
select 字段1 [as 别名1], 字段2[as 别名2] from 表名;

-- 去除重复记录
select distinct 字段列表 from 表名;
  • 条件运算符
运算符功能
>大于
>=大于等于
小于
<=小于等于
=等于
<>或!=不等于
between…and…在某个范围之内(含最小值和最大值)
in(…)在in之后的列表中的值,多选一
like 占位符模糊匹配(_匹配单个字符,%匹配多个字符)
is null是null
and或&&并且(多个条件同时成立)
or或或者(多个条件同任意一个成立)
not或!非,不是

语法

select 字段 from 表名 where 条件;
  • 聚合函数
函数功能
count统计数量
max最大值
min最小值
avg平均值
sum求和

不对null进行计算
统计数量推荐使用count(*)
语法

select 函数名称(字段) from 表名;

分组查询(group by)

select 字段 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];

排序查询(order by)

ASC升序

DESC降序

select 字段 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件] order by 字段1 排序方式1,字段2 排序字段2;

分页查询(limit)

select 字段 from 表名 limit 起始索引,查询记录数;

流程控制函数(if)

select if(条件,符合条件的值,不符合条件的值) from 表名

流程控制函数(case)

select  
       case 字段 when 条件1 then1
           when 条件2 then2
           when 条件3 then3
           when 条件4 then4 end -- 结束用end  还可以使用 else.....end  else表示当以上条件都不符合的时候返回的值
           as 职位
from 表名
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值