0
点赞
收藏
分享

微信扫一扫

02【数据库的基本操作】


上一篇:​​01【数据库的介绍】​​



下一篇:​​03【MySQL字符集】​​

目录:​​【MySQL零基础系列教程】​​

文章目录

  • ​​二、数据库的基本操作​​
  • ​​2.1 DDL操作数据库​​
  • ​​2.1.1 创建数据库相关操作​​
  • ​​2.1.2 查看数据库相关操作​​
  • ​​2.1.3 修改数据库编码​​
  • ​​2.1.4 删除数据库​​
  • ​​2.1.5 使用数据库​​
  • ​​2.2 DDL操作表结构​​
  • ​​2.2.1 MySQL数据类型​​
  • ​​2.2.2 创建表​​
  • ​​2.2.3 查看表​​
  • ​​2.3.4 复制表结构​​
  • ​​2.3.5 删除表​​
  • ​​2.3.6 修改表结构​​
  • ​​2.3.7 修改表字符集​​
  • ​​2.3 DML操作表中的数据​​
  • ​​2.3.1 插入记录​​
  • ​​2.3.2 更新记录​​
  • ​​2.3.3 删除表记录​​
  • ​​2.3.4 清空表​​
  • ​​2.3.5 增删改方法小结​​
  • ​​2.4 数据库的查询​​
  • ​​2.4.1 查询全部数据​​
  • ​​2.4.2 查询指定列​​
  • ​​2.4.3 指定列的别名进行查询​​
  • ​​2.4.4 清除重复值​​
  • ​​2.4.5 查询结果参与运算​​
  • ​​2.5 DQL条件查询​​
  • ​​2.5.1 准备数据​​
  • ​​2.5.2 比较运算符​​
  • ​​2.5.3 逻辑运算符​​
  • ​​2.5.4 in关键字​​
  • ​​2.5.5 范围查询​​
  • ​​2.5.6 like 关键字​​
  • ​​2.5.7 查询为空的列IS NULL​​
  • ​​2.5.8 条件查询小结​​

二、数据库的基本操作

2.1 DDL操作数据库

2.1.1 创建数据库相关操作

  • 1)创建数据库

CREATE DATABASE 库名;

create database db01;

  • 2)判断数据库是否已经存在,不存在则创建数据库

CREATE DATABASE IF NOT EXISTS 库名

create database if not exists db01;

  • 3)创建数据库并指定字符集

CREATE DATABASE 库名 CHARACTER SET 字符集

create database db01 character set utf8;

Tips:我们在安装MySQL的时候,就已经指定了MySQL的字符集(为MySQL服务器字符集),我们创建的数据库如果没有特别指定默认为MySQL服务器的字符集;

2.1.2 查看数据库相关操作

-- 查看所有的数据库
show databases;

-- 查看某个数据库的DDL语句
show create database db01;

2.1.3 修改数据库编码

  • 修改数据库默认的字符集

ALTER DATABASE 数据库 CHARACTER SET 字符集

alter database db01 character set utf8;

2.1.4 删除数据库

DROP DATABASE 数据库名;

drop database db01;

2.1.5 使用数据库

  • 1)查看正在使用的数据库

select DATABASE();

  • 2)使用/切换数据库

USE 数据库名;

use db01;

2.2 DDL操作表结构

操作表之前,先使用某个数据库。

2.2.1 MySQL数据类型

  • 常使用的数据类型如下:

分类

类型名称

类型说明

整数

tinyInt

微整型:很小的整数(占8位二进制,1个字节)

smallint

小整型:小的整数(占16位二进制,2个字节)

mediumint

中整型:中等长度的整数(占24位二进制,3个字节)

int(integer)

整型:整数类型(占32位二进制,4个字节)

bigint

大整型:占64位二进制,8个字节

小数

float

单精度浮点数,占4个字节

double

双精度浮点数,占8个字节

decimal(m,n)

数值类型,m表示数值的长度,n表示小数的位数

日期

time

表示时间类型

date

表示日期类型

datetime

同时可以表示日期和时间类型

字符串

char(m)

固定长度的字符串,无论使用几个字符都占满全部,M为0~255之间的整数 如:char(20),实际使用只用了1个字符,也占用20个字符

varchar(m)

可变长度的字符串,使用几个字符就占用几个,M为0~65535之间的整数。 如:varchar(20),这个字符串最长是20,大于20会报错。 使用几个,占几个字符。

2.2.2 创建表

  • 创建表的格式

create table 表名(
字段名 字段类型,
字段名 字段类型,
字段名 字段类型
);

create table 表名(字段名 字段类型,字段名 字段类型);

Tips:字段名就是表中的列名,字段类型指数据类型

  • 具体操作:

-- 创建student表包含id整数,name变长字符串长20,sex性别定长型1,birthday字段日期类型

use db01;

create table emp (
id int,
`name` varchar(20), -- 重音符号:在Esc下面,~ 在同一个键
sex char(1),
address varchar(20)
);

2.2.3 查看表

  • 查看某个数据库中的所有表

show tables;

  • 查看表结构

desc 表名;

desc emp;

  • 查看创建表的SQL语句

show create table 表名;

show create table emp;

2.3.4 复制表结构

CREATE TABLE 新表 LIKE 旧表;

-- 创建e1表,e1表结构和emp表结构相同
create table e1 like emp;

-- 查看e1表的表结构
desc e1;

2.3.5 删除表

  • 直接删除表

DROP TABLE 表名; 

drop table e1;

  • 判断表是否存在,如果存在则删除表

DROP TABLE IF EXIST 表名;

drop table if exists e1;

2.3.6 修改表结构

  • 添加表列ADD

ALTER TABLE 表名 ADD 列名 类型;

-- 为学生表添加一个新的字段age,类型为int
alter table emp add age int;

02【数据库的基本操作】_DML

  • 修改列类型MODIFY(只修改数据类型)

ALTER TABLE 表名 MODIFY 列名 新的类型;

alter table emp modify address varchar(100);

02【数据库的基本操作】_mysql_02

  • 修改列名 CHANGE(既修改字段名又修改类型)

ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;

alter table emp change address addr varchar(80);

02【数据库的基本操作】_数据库_03

  • 删除列 DROP

ALTER TABLE 表名 DROP 列名;

alter table emp drop age;

  • 修改表名

RENAME TABLE 表名 TO 新表名;

-- 将emp表改为employee
rename table emp to employee;

-- 将employee表改为emp
rename table employee to emp;

Tips:MySQL中没有直接修改库名的语句

2.3.7 修改表字符集

ALTER TABLE 表名 character set 字符集;

-- 查看emp表的建表语句
show create table emp;

-- 修改emp表的字符集为gbk
alter table emp character set gbk;

-- 修改emp表的字符集为utf8
alter table emp character set utf8;

2.3 DML操作表中的数据

2.3.1 插入记录

  • 1)插入全部字段

02【数据库的基本操作】_查询_04

INSERT INTO 表名 VALUES (字段值1,字段值2...);

insert into emp values(1,'张三','男','河南汤阴',39);

  • 2)插入部分数据

INSERT INTO 表名 (字段名1,字段名2) VALUES (值1,值2);

-- 插入指定的字段
insert into emp(id,name,sex) values(2,'李四','男');

-- 也可以不按照列的顺序插入
insert into emp(id,name,addr) values(3,'王五','湖南邵阳');

Tips:没有添加数据的字段会使用NULL

  • 3)插入多条记录

INSERT INTO 表名 values (值1,值2),(值1,值2),(值1,值2);

INSERT INTO emp
VALUES
( 4, '小红', '女', '四川南充', 25 ),
( 5, '小明', '女', '河南平顶山', 24 ),
( 6, '小李', '男', '陕西榆林', 20 );

插入记录规范:

  • 1)数据的大小应在列的规定范围内,例如:不能将一个长度为30的字符串加入到长度为20的列中。
  • 2)在values中列出的数据位置必须与被加入的列的排列位置相对应。
  • 3)字符和日期型数据应包含在单引号中。MySQL中也可以使用双引号做为分隔符。
  • 4)不指定列或使用null,表示插入空值。

2.3.2 更新记录

  • 1)不带条件修改数据

语法:

UPDATE 表名 SET 字段名=值,字段名=值;

update emp set sex='女',addr='广西来宾';

Tips:不带条件表示更新所有的记录

02【数据库的基本操作】_查询_05

  • 2)带条件修改数据

语法:

UPDATE 表名 SET 字段名=值 WHERE 条件表达式;

-- 一次修改一列
update emp set addr='甘肃白银' where id=2;

-- 一次修改多列
update emp set sex='男',addr='陕西忻州' where id=5;

2.3.3 删除表记录

  • 1)不带条件删除数据

DELETE FROM 表名;

delete from emp;

Tips:不带条件的删除会删除表中的所有记录,慎用!

准备数据:

INSERT INTO emp
VALUES
( 1, '小明', '男', '山西铜川', 19 ),
( 2, '小兰', '女', '江西萍乡', 20 ),
( 3, '小龙', '男', '云南临沧', 23 ),
( 4, '小红', '女', '贵州毕节', 18 ),
( 5, '小龙', '男', '吉林白城', 22 );

  • 2)带条件删除

语法:

DELETE FROM 表名 WHERE 条件表达式;

delete from emp where id=5;

2.3.4 清空表

  • 语法:

truncate 表名;

truncate emp;

Tips:先删除表结构,再创建一个相同的表结构 相当于drop table emp,再create table emp

2.3.5 增删改方法小结

功能

语句

添加记录(增)

INSERT INTO 表名 VALUES (值1,值2)

更新记录(改)

UPDATE 表名 SET 字段名=值 WHERE 条件表达式

删除记录(删)

DELETE FROM 表名 WHERE 条件表达式

2.4 数据库的查询

2.4.1 查询全部数据

建立测试数据:

INSERT INTO emp
VALUES
( 1, '小明', '男', '辽宁盘锦', 26 ),
( 2, '小兰', '女', '安徽亳州', 21 ),
( 3, '小龙', '男', '湖北随州', 24 ),
( 4, '小红', '女', '西藏林芝', 25 ),
( 5, '小龙', '男', '福建宁德', 22 );

  • 语法

SELECT * FROM 表名;

select * from emp;

02【数据库的基本操作】_DDL_06

2.4.2 查询指定列

查询指定列的数据,多个列之间以逗号分隔

  • 语法:

SELECT 字段名1, 字段名2, 字段名3, ... FROM 表名;

select id,name,addr from emp;

02【数据库的基本操作】_DDL_07

2.4.3 指定列的别名进行查询

使用关键字AS:

  • 使用别名的好处:可以让查询结果,列名显示为汉字,可读性好一些。后期也可以给表起别名,主要用于多表查询。

对列指定别名:

  • 语法:

SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名;

select id as 编号,name as 姓名,addr 地址 from emp;

02【数据库的基本操作】_DML_08

Tips:as可以省略

2.4.4 清除重复值

添加数据:

INSERT INTO emp
VALUES
( 1, '小陈', '男', '青海西宁', 28 ),
( 7, '小辉', '男', '浙江衢州', 20 );

查询表数据:

02【数据库的基本操作】_DML_09

  • 清除重复数据语法:

SELECT DISTINCT 字段名 FROM 表名;

去重id相同的行:

-- 只去重id相同的行
select distinct id from emp;

02【数据库的基本操作】_mysql_10

去重sex相同的行:

select distinct sex from emp;

02【数据库的基本操作】_DML_11

2.4.5 查询结果参与运算

  • 1)某列数据和固定值运算

SELECT 列名1 + 固定值 FROM 表名; 

select id,name,addr,age+1 from emp;

02【数据库的基本操作】_查询_12

  • 2)某列数据和其他列数据参与运算

SELECT 列名1 + 列名2 FROM 表名; 

select id,name,addr,id+age from emp;

02【数据库的基本操作】_查询_13

Tips:参与运算的必须是数值类型

2.5 DQL条件查询

2.5.1 准备数据

创建一个学生表,包含如下列:

CREATE TABLE student (  
id int, -- 编号
`name` varchar(20), -- 姓名
age int, -- 年龄
sex char(1), -- 性别
address varchar(100), -- 地址
math int, -- 数学
english int -- 英语
);

-- 插入数据
insert into student values(1,'小明',20,'男','河北衡水',90,100);
insert into student values(2,'小红',26,'女','湖南衡阳',88,69);
insert into student values(3,'小龙',18,'男','内蒙包头',78,80);
insert into student values(4,'小丽',24,'女','陕西宝鸡',95,80);
insert into student values(5,'张三',22,'男','江西上饶',80,90);
insert into student values(6,'李四',19,'男','广西北海',100,95);
insert into student values(7,'王五',24,'男','黑龙江大庆',90,95);

2.5.2 比较运算符

比较运算符

说明

>、<、<=、>=、=、<>

不等于,在mysql中也可使用!=

  • 练习:

-- 查询年龄大于25岁的学生

-- 查询数学成绩大于等于80分的学生

-- 查询英语成绩低于60的学生

-- 查询数学成绩大于英语成绩的学生

-- 查询性别不为男的学生

-- 查询性别不为男的学生(第二种写法)

-- 查询年龄大于25岁的学生
select * from student where age>25;

-- 查询数学成绩大于等于80分的学生
select * from student where math>=80;

-- 查询英语成绩小于等于90的学生
select * from student where english<=90;

-- 查询数学成绩大于英语成绩的学生
select * from student where math>english;

-- 查询性别不为男的学生
select * from student where sex!='男';

-- 查询性别不为男的学生(第二种写法)
select * from student where sex<>'男';

2.5.3 逻辑运算符

逻辑运算符

说明

and 或 &&

与,全真为真

or 或 ||

或,见真为真

not 或 !

非,取反

  • 练习:

-- 查询年龄大于22岁并且性别为男的学生
select * from student where age>22 and sex='男';

-- 查询数学成绩大于80并且性别为女的学生
select * from student where english>80 and sex='女'

-- 查询数学成绩大于90或者英语成绩大于90的学生
select * from student where math>60 or english>60;

2.5.4 in关键字

  • 语法:

SELECT 字段名 FROM 表名 WHERE 字段 in (数据1, 数据2...);

in里面的每个数据都会作为一次条件,只要满足条件的就会显示

  • 练习:

-- 查询id是1或2或5的学生
select * from student where id in (1,2,5);

-- 查询id不是1或2或5的学生
select * from student where id not in (1,2,5);

2.5.5 范围查询

  • 语法:

BETWEEN 值1 AND 值2

表示从值1到值2范围,包头又包尾,值1要小于值2,类似于​​>=值1 and <=值2​

-- 查询english成绩大于等于60,且小于等于90的学生
select * from student where english between 60 and 90;

select * from student where english >=60 and english <=90;

2.5.6 like 关键字

LIKE表示模糊查询

  • 语法:

SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串';

  • MySQL通配符

通配符

说明

%

匹配零个或多个字符

_

匹配一个字符

-- 查询地址为'广'开头城市的学生
select * from student where address like '广%';

-- 查询地址中包含有'西'城市的学生
select * from student where address like '%西%';

-- 查询五个字地址城市的学生
select * from student where address like '_____'; -- 五个_

2.5.7 查询为空的列IS NULL

-- 查询性别成绩为NULL的学生
select * from student where sex is null;

-- 错误的
select * from student where sex = null;

-- 查询英语成绩不为NULL的学生
select * from student where sex is not null;

2.5.8 条件查询小结

比较运算符

说明

>、<、<=、>=、=、<>、!=

不等于

BETWEEN…AND

查询一个范围,包头又包尾

IN(集合)

条件在集合或数组中任何一个

LIKE ‘张%’

模糊查询 % 匹配多个字符 _ 匹配1个字符

IS NULL

为空


举报

相关推荐

02数据库操作

数据库的基本操作

数据库基本操作

数据库(MySQL)的基本操作

MySql数据库的基本操作

Mysql数据库的基本操作

sql数据库基本操作

MySQL数据库基本操作

0 条评论