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

  • 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;

在这里插入图片描述

  • 修改列类型MODIFY(只修改数据类型)
ALTER TABLE 表名 MODIFY 列名 新的类型;

alter table emp modify address varchar(100);

在这里插入图片描述

  • 修改列名 CHANGE(既修改字段名又修改类型)
ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;

alter table emp change address addr varchar(80);

在这里插入图片描述

  • 删除列 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)插入全部字段

在这里插入图片描述

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:不带条件表示更新所有的记录

在这里插入图片描述

  • 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;

在这里插入图片描述

2.4.2 查询指定列

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

  • 语法:
SELECT 字段名1, 字段名2, 字段名3, ... FROM 表名;

select id,name,addr from emp;

在这里插入图片描述

2.4.3 指定列的别名进行查询

使用关键字AS:

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

对列指定别名:

  • 语法:
SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名;

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

在这里插入图片描述

Tips:as可以省略

2.4.4 清除重复值

添加数据:

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

查询表数据:

在这里插入图片描述

  • 清除重复数据语法:
SELECT DISTINCT 字段名 FROM 表名;

去重id相同的行:

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

在这里插入图片描述

去重sex相同的行:

select distinct sex from emp;

在这里插入图片描述

2.4.5 查询结果参与运算
  • 1)某列数据和固定值运算
SELECT 列名1 + 固定值 FROM 表名; 

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

在这里插入图片描述

  • 2)某列数据和其他列数据参与运算
SELECT 列名1 + 列名2 FROM 表名; 
 
select id,name,addr,id+age from emp;

在这里插入图片描述

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值