数据库基本操作

1.创建数据库

  • 语法:

create database 数据库名

  • 示例:

create database kkDB;

2.删除数据库

  • 语法:

drop database 数据库名

  • 示例:

drop database kkDB;

3.新建表

  • 语法:

create table 表名(字段名 字段类型 约束条件,....,字段名 字段类型 约束条件)charset=utf8;

  • 示例:

create table student(
id int primary key auto_increment,
name varchar(20) default ‘zz’,
age int,
sex char(20)
)charset=utf8;

4.数据操作

4.1增

4.1.1新增数据(一整行)

语法:

insert into 表名 values(字段名数据,字段名数据,字段名数据);

示例:

INSERT INTO kkdb.student VALUES(1,‘小李’,18,‘男’);

4.1.2新增数据(一行中的部分)

语法:

insert into 表名(字段名,字段名,字段名)values(字段数据,字段数据,字段数据);

示例:

insert into kkdb.student(age,sex) values(18,‘女’);

4.1.3新增多条数据

语法:

insert into 表名(字段名,字段名,字段名)values(字段数据,字段数据,字段数据),(字段数据,字段数据,字段数据);

示例:

insert into kkdb.student(name,age,sex)value(‘小红’,18,‘女’),(‘小红2’,18,‘女’);

4.2删

4.2.1删某一行

语法:

删除 delete from 表名 where 条件;

示例:

delete from kkdb.student where id=2;

4.2.2删表

语法:

drop table 表名; drop会连同表结构一起删掉

示例:

drop table kkdb.student;

4.3改

语法:

update 表名 set 字段名=修改的内容 where 条件

示例:

update kkdb.student set name=‘紫菜’ where age=30;

4.4查

语法:select 字段名,字段名 from 表名 where 条件;

比较符:

符号含义
>大于
=等于
<小于
>=大于等于
<=小于等于
!=不等于
<>不等于
between … and …在…区间
in在…里
like模糊查询
and
or
not

示例:

select * from student3 where math>80; #查询成绩大于80分的学生;

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

select * from student3 where english between 65 and 80; #查询英语成绩在65分和80之间;

SELECT * from student3 WHERE english>=80 or english<=99; #or 或 一个条件成立就行

SELECT * from student3 WHERE not english>=80 # not 非 不成立;

SELECT * from student3 where english in(80,90,70,77); # in 在。。里面

模糊查询:

like模糊查询,匹配任意多个字符 查询

%匹配任意多个字符:select * from student3 where name like '孙%'; #查询姓孙的

_匹配一个字符:select * from student3 where name like '孙_'; #查询孙某

排序:

语法:order by 字段名 asc/desc 默认asc(升序)

select * from student3 ORDER BY age desc; #按照年龄降序排序;

聚合函数:

语法:

max(列名) #取最大值
min(列名) #取最小值
avg(列名) # 取平均值
count(列名) #统计这列有多少数据
sum(列名) #求和

示例:

select max(age) from student3; #最大年龄学生

select min(age) from student3; #最小年龄学生

select avg(math) from student3; #math平均值

select count(math) from student3; #统计math这一列不为空的总条数

select sum(math) from student3; #对math列求和

分组:

group by不会单独使用,通常和聚合函数一起使用;

select count(*)as ‘统计’,sex ‘性别’ from student3 group by sex; #统计男女各有多少人 统计 取个别名 as 用空格

select avg(english),sex from student3 group by sex; #男女英语成绩平均值

having:

having用于分组后过滤数据,where是分组之前过滤数据不能加聚合函数;

#查询年龄在28岁(包含)以上的学员人数 按照性别分组,查询性别人数大于2的数据。

select count(* )as ‘总数’,sex as ‘性别’ from student3 where age>=28 group by sex having count(*)>2;

limit:

语法:limit 起始数,显示条数起始数不写默认从0开始

示例:SELECT * from student3 LIMIT 3,3

连接查询:

在这里插入图片描述

隐士查询:在这里插入图片描述

在这里插入图片描述

select emp.id,emp.name,gender,salary,join_date,dept.name from emp,dept where emp.dept_id=dept.id

join连接:

inner join连接,可以只写join,相当于两张表的交集

语法:select <字段名> from <表a> inner join <表b> on a.<字段名>=b.<字段名>

示例:

select emp.id,emp.name,gender,salary,join_date,dept.name from emp inner join dept on emp.dept_id=dept.id

left join连接,返回左表中符合where条件语句的数据,右表没有符合连接条件时将返回null

示例:

select emp.id,emp.name,gender,salary,join_date,dept.name from emp left join dept on emp.dept_id=dept.id
在这里插入图片描述

right join连接,返回右表中符合where条件语句的数据,左表没有符合连接条件时将返回null

select emp.id,emp.name,gender,salary,join_date,dept.name from emp right join dept on emp.dept_id=dept.id

在这里插入图片描述

full join连接,返回表中符合where条件语句的数据,没有符合连接条件时将返回null

子查询:

子查询指一个查询语句嵌套在另一个查询语句内部的查询

示例:

SELECT * FROM kkDB.S WHERE SNO IN (SELECT SNO FROM kkDB.SC WHERE CNO=(SELECT CNO FROM kkDB.C WHERE CNAME=‘税收基础’))

5.存储过程:

存储过程类似python中的函数

无参数

创建语法:

delimiter //            #delimiter用于定义存储过程的分隔符可子定义
CREATE PROCEDURE test_1()
BEGIN
	SQL语句;
end//       #end后,必须使用delimiter语句中设置的分隔符为结束

使用 call 存储名()

call test_1()

有参数

带参数的存储过程需要用in传数据进来

delimiter //
create PROCEDURE test_2(in aname varchar(20))
BEGIN
	select * from student3 where name=aname;
end//

#调用
call test_2('马云')

有参数、有返回

当需要返回调用的存储过程参数使用in传参进去,使用out输出数据

#有返回 用out 输出数据
#查询某个人的性别
delimiter //
create PROCEDURE test_3(in aname varchar(20), out usex varchar(20))
BEGIN
	select sex into usex from student3 where name=aname;
	select usex;
end//

#调用
call test_3('小红',@usex);
  • 29
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吃鱿鱼的大叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值