【数据库】02 SQL语句

这篇博客详细介绍了SQL语句的使用,包括如何通过命令行客户端操作数据库和表,创建、删除数据库表,以及数据的增删改查操作。重点讲述了数据查询操作,如条件查询、排序、聚合函数、分组查询、连接查询和子查询。内容涵盖了基本的SQL语法和实际操作示例,适合初学者学习。
摘要由CSDN通过智能技术生成

0 学习目标

  1. 数据库表操作。
  2. 数据的增删改查操作。
  3. 数据查询操作。【重点】【难点:关联查询】

1 命令行客户端

1.1 操作数据库

说明:操作数据库之前要选通过命令行工具连接到数据库。

常见数据库操作命令

  • 查看所有数据库:show databases;(所有,故+s)
  • 使用数据库:use 数据库名;
  • 查看当前使用数据库:select database();
  • 创建数据库:create database 数据库名 charset=utf8;(charset=utf8是字符集)
  • 删除数据库:drop database 数据库名;

示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 操作数据库表

说明:操作数据表之前要选通过use打开对应的数据库。

常见表操作命令

  • 查看当前数据库所有的表:show tables;
  • 查看表结构:desc 表名;
  • 查看表的创建语句:show create table 表名;
    在这里插入图片描述
    在这里插入图片描述

2 创建、删除数据库表操作

2.1 创建数据库表

语法格式:

create table 表名 ( 
	字段名1 类型 约束, 
	字段名2 类型 约束, 
	…… ….. 
	)

例:create table students (name varchar(10))

【提示】注释:ctrl 加 /(- -)

【示例】创建数据库表
创建学生表,字段要求如下: 姓名(长度为10)、年龄、身高(保留2位小数)。
自己写的:

create table students(
	name varchar(10),
	age int(20),
	heigth decimal(5,2)  #!!最后一句不需要加,
)

修改后:

create table students( 
	id int unsigned primary key auto_increment, #auto_increment:自动增加;unsigned:无符号int类型
	name varchar(20), 
	age int unsigned, 
	height decimal(5,2) 
	)

在这里插入图片描述

2.2 删除数据库表

语法格式:
方法一: drop table 表名;
方法二: drop table if exists 表名;

例:

drop table students;
drop table if exists students;

【练习】通过SQL语句创建表、删除表

  1. 创建一个成绩表,包含以下字段名: 姓名(长度为10)、班级(长度为8)、科目(长度为56)、成绩(保留1位小数) 。
create table marks(
	name varchar(10),
	class varchar(8),
	subject varchar(56),
	mark decimal(3,1)
)
  1. 将刚才创建的成绩表删除。
drop table marks;

3 数据的增删改查操作

3.1 简单查询

语法格式: select * from 表名;
例: select * from students;

【注】*表示查询所有字段。

3.2 添加一行数据

说明:主键自增长,可以用0或null代替。
方式一【全部字段填写】:insert into 表名 values(…)
例1:

insert into students values(0, '亚瑟', 22, 177.56)

方式二【部分字段填写】:inert into 表名 (字段1, 字段2, …) value(值1, 值2, …)
例:

inert into students (name) values ('老夫子')

3.3 添加多行数据

方式一:写多条insert语句,多条语句之间用;分隔。
例:

insert into students(name) value ('老夫子2'); 
insert into students(name) value ('老夫子3'); 
insert into students values(0,'亚瑟2',23,167.56) 

方式二:通过一条insert语句插入多条数据,数据间用逗号分隔
格式一:insert into 表名 values (...), (...) ...
例:

insert into students values(0,'亚瑟3',23,167.56),(0,'亚瑟4',23,167.56) 

格式二:insert into 表名(字段名1,...) value(值1,...),(值1,...)...
例:

insert into students(name) value ('老夫子5'),('老夫子6')

3.4 修改数据——update

语法格式: update 表名 set 字段名1=值1,字段名2=值2... where 条件

例:修改id为5的学生数据,姓名改为 狄仁杰,年龄改为 20。

update students set name='狄仁杰',age=20 where id=5

3.5 删除数据——delete

语法格式:delete from 表名 where 条件 (真正删除)
例:删除id为6的学生数据 。

delete from students where id=6

【注意】此方法为物理删除(即真正删除) ,工作中大部分使用逻辑删除。
逻辑删除是指通过设定一个字段来标识当前记录已经删除。
is_delete字段来标识,1代表删除,0表示未删除。

3.6 删除数据——其他方式

Truncate删除数据(清空表的内容):truncate table 表名 (少用)

例:删除学生表的所有数据(保留表结构)

 truncate table students; 

Drop删除表:drop table 表名
例:删除学生表(包括所有数据和表结构)

drop table students;

3.7 三种删除数据的区别

【注意】收delete

【练习】数据的增、删、改操作

  1. 通过一条SQL语句在成绩表中新增以下三条数据。
    张三、一班、语文、89.5
    李四、一班、数学、98
    王五、二班、英语、95.5
insert into students values
('张三','一班','语文',89.5),
('李四','一班','数学',98),
('王五','二班','英语',95.5);
  1. 将成绩表中李四的数学成绩改成97分。
update marks set mark=97 where name='李四';
  1. 删除学生为王五的记录。
delete from marks where name='王五';

3.8 小总结

  1. 查询表中所有数据(select)
  2. 数据添加(insert into)
  3. 数据修改(update)
  4. 数据删除(delete)

4 数据查询操作

  • 条件查询
  • 排序
  • 聚合函数
  • 分组、分页
  • 连接查询
  • 自关联
  • 子查询

4.1 数据准备

  1. 创建数据库表
drop table if exists students; 

create table students ( 
	studentNum varchar(10) primary key, 
	name varchar(10), 
	sex varchar(1), 
	hometown varchar(20), 
	age tinyint(4), --小整型
	class varchar(10), 
	card varchar(20) 
);
  1. 插入数据
insert into students values
('001', '王昭君', '女', '北京', '20', '1班', '340322199001247654'),
('002', '诸葛亮', '男', '上海', '18', '2班', '340322199002242354'), 
('003', '张飞', '男', '南京', '24', '3班', '340322199003247654'), 
('004', '白起', '男', '安徽', '22', '4班', '340322199005247654'), 
('005', '大乔', '女', '天津', '19', '3班', '340322199004247654'), 
('006', '孙尚香', '女', '河北', '18', '1班', '340322199006247654'), 
('007', '百里玄策', '男', '山西', '20', '2班', '340322199007247654'), 
('008', '小乔', '女', '河南', '15', '3班', null), 
('009', '百里守约', '男', '湖南', '21', '1班', ''), 
('010', '妲己', '女', '广东', '26', '2班', '340322199607247654'), 
('011', '李白', '男', '北京', '30'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值