SQL知识点

数据库和表的概念

数据库的概念

数据库的概念是存储数据的容器(可对比仓库来理解)

表的概念

表的概念是真正的存储单元

数据库与表的关系

数据库与表是一对多的关系,一个库里通常维护了多个表(好比如一个仓库有多个货架)

SQL

概念:

  1. SQL是结构化语言
  2. SQL是用于访问和处理数据库的标准计算机语言

作用:
3. 创建数据库、表等数据库对象
4. 数据库记录的增、删、改、查

创建数据库

语法:
create database 数据库名称; (注意末尾需要加英文下的分号)

# 例如创建一个名为text数据库
create database text

创建表

语法:
create table <表名>(<字段名1> <类型1>,<字段名2> <类型2>,…<字段名n> <类型n>) DEFAULT CHARSET=utf8;

# 例如创建一个名为student的表
create table student(
					id int not null PEIMARY key auto_increment,
					name varchar(100),
					sex varchar(12),
					class_id int(11),
					create_date datetime,
					update_date datetime
)DEFAULT CHARSET=utf8;

常见字段类型

每种字段都有自己的类型,例如整型、浮点型、字符型、时间类型、日期类型等。

  • 整型
    tinyint:占1个字节,取值范围为-128~127
    int:占4个字节,取值范围为-2147483648~2147473647
  • 浮点型
    float(m,d):单精度浮点型,32bit,m代表总位数,d代表小数位,例如99.99声明类型为float(4,2)
    double(d,m):双精度浮点型,64bit,m代表总位数,d代表小数位
    decimal(m,d):m代表总位数,d代表小数位,用于精度要求非常高的计算中且存储值不会超过m,小数点后不超过d位
    区别:双精度类型能表示的小数的精确值更高
  • 字符串型
    char(n):n个字符,最多225个字符,固定长度
    varchar(n):n个字符,最多65535个字符,可变长度
  • 时间和日期类型
    date:日期,格式(yyyy-mm-dd,如2020-04-01)
    time:时间,格式(hh:mm:ss,例如16:15:28)
    datetime:日期时间,格式(yyyy-mm-dd hh:mm:ss,例如2020-04-01 16:17:23)

主键

概念:

  1. 主键字段存储的值不能重复,因此主键可以唯一标识一行数据
  2. 一个表只能有一个主键
  3. 主键是非必须的,也就是说一个表可以不声明主键字段

语法:
<字段名> <类型> primary key;

# 例如创建一个学生表,id不能为空且为自动递增并设置为主键
# 自动递增为auto_increment
create table student(id int not null PEIMARY key auto_increment);

插入数据

  • 插入一条数据,对所有字段都赋值
    语法:
    insert into <表名> values (值A,值B,…值n);
# 例如对member表插入数据
insert into member values(1,'text1','123456');
  • 插入一条数据,只对一部分字段赋值
    语法:
    insert into <表名> (字段A,字段B,…字段n) values (值A,值B,…值n);
# 例如对member表插入数据
insert into member(name,pwd) values('text1','123456');
  • 批量插入,一次插入多条数据
    语法:
    insert into <表名> (字段A,字段B,…字段n) values (值A,值B,…值n),(值A,值B,…值n),(值A,值B,…值n)…;
# 例如对member表插入数据
insert into member(id,name,pwd) values(1,'text1','123456'),
										(2,'text2','123321'),
										(3,'text3','123456');

修改表数据

  • 修改一个表里的所以数据
    语法:
    update 表名 set 字段名1=新值1,字段名2=新值2…;
# 例如更新member表的所有paw为123456
update member set paw='123456'
  • 修改一个表里满足某些条件的那一部分数据
    语法:
    update 表名 set 字段名1=新值1,字段名2=新值2… where 条件表达式1 and(or) 条件表达式2…;(一般or用的比较多)
# 例如更新member表名字为text2和test3的paw为123456
update member set paw='123456' where name = 'text2' or name = 'test3'

# 例如更新member表paw为123456且姓名为text1的手机号码为13512345678
update member set mobilephone='13512345678' where name = 'text1' and paw = '123456';

删除数据库或表

  • 删除数据库,并将数据库内的所有表和数据一并删除
    语法:
    drop database 数据库名称;
# 例如删除testdb的数据库
drop database testdb;
  • 删除数据表,并将表内的所有数据和结构一并删除
    语法:
    drop table 表名;
# 例如删除testtable的数据表
drop table testtable;

drop删除结构且删除数据,需慎用

  • 删除表内的所有数据,但不删除表的结构
    语法:
    delete from 表名;
# 例如清空testtable表
delete from testteble;
  • 删除一个表内满足某些条件的数据
    语法:
    delete from 表名 where 条件1 and(or) 条件2…;(一般用or比较多)
# 例如删除testtable表里名为text2的数据
delete from testteble where name = 'text2';

delete只会删除表内的数据,不会删除表和库即不会删除结构

查询表数据

单表查询

  • 不加条件进行查询
    语法:
    select <字段1,字段2…字段n> from <表名>;
  • 查询所有字段
    语法:
    select * from <表名>;
  • 按条件进行查询
    select <字段1,字段2…字段n> from <表名> where 表达式A and(or) 表达式B and(or) 表达式N;

多表查询

语法:
select <表名1.字段1,表名2.字段2…> from <表名1>,<表名2> where <表名1.id=表名2.id>;

# 例如有text1和text2两张表
select * from text1,text2 where text1.id = text2.id;

连接查询

  • 内连接(inner join)
    在这里插入图片描述
# 例如有A、B两张表
select A.name,B.name from A inner join B on A.id = B.u_id;
  • 左连接(left join)
    在这里插入图片描述
# 例如有A、B两张表
select A.name,B.name from A left join B on A.id = B.u_id;
## 例如有A、B、C三张表
select * from A LEFT JOIN B on A.id = B.u_id LEFT JOIN C on B.class = C.class;
  • 右连接(right join)
    在这里插入图片描述
# 例如有A、B两张表
select A.name,B.name from A right join B on A.id = B.u_id;

对查询结果进行排序

语法:
select … from … order by 需要排序的字段A asc(desc),字段B asc(desc)…;

asc为升序
desc为降序

select * from A where class = '初三一班' order by code; # 默认为升序
select * from A where class = '初三一班' order by code desc; # 降序

查询的多种用法

in和not in

语法:
select … from 表名 where 条件 in(not in) 数据集;

# 例如查询id为1000,2000,3000的用户信息
select * from A where id in(1000,2000,3000);
# 例如查询id不为1000,2000,3000的用户信息
select * from A where id not in(1000,2000,3000);

模糊查询like

  • 条件字段的值以任意字符串开头,以XX结尾的值
    select <字段1,字段2…字段n> from <表名> where <条件字段> like ‘%XX’;
  • 条件字段的值以XX开头,以任意字符串结尾
    select <字段1,字段2…字段n> from <表名> where <条件字段> like ‘XX%’;
  • 条件字段的值包含了XX
    select <字段1,字段2…字段n> from <表名> where <条件字段> like ‘%XX%’;
select * from A where name like '%小%'; # 不论是在左中右都会查询出来

统计count()

语法:
select <字段1,count(字段2),…字段n> from <表名>;

select id,name,count(code),class from A;

分组group by

语法:
select 查询字段 from 表名 group by 分组字段 having 过滤条件;

# 将class_num进行分组的条件下再将小于十的过滤出来
select name,count(code) from A group by class_num having class_num <10;

去重distinct

语法:
select distinct 字段名 from 表名;

# 对相同的编号num进行去重
select distinct num from A;

两者之间between

语法:
select … from 表名 where 条件字段 between 数值A and 数值B;

# 查询用户编号为10到20的用户信息
select * from A where id >= 10 and id <= 20;
select * from A where id between 10 and 20;

分页limit

语法:
select … from 表名 limit m,n;

# 取索引从10开始取5条记录
select * from A limit 10,5; # 从10开始11~15

常用数值相关函数

最大值max:select max(amount) from text;
最小值min:select min(amount) from text;
平均值avg:select avg(amount) from text;
求和sum:select sum(amount) from text;

select语句查询结构

select…from…where…group by…having…order by…limit…

子查询

概念:可以把一条sql语句的执行结果作为一个新的数据

select * from A where id in (select id from B where id < 5);
<think>好的,用户想了解如何删除本地分支GitLab上的远程分支。首先,我需要回忆一下相关的Git命令。根据之前提供的引用内容,用户可能需要分步骤的指导。 用户的问题很明确,但作为新手,可能对命令的具体用法不太熟悉。需要先确认删除分支的前提条件,比如不能在当前分支删除自己,需要切换到其他分支。然后,删除远程分支通常使用`git push origin --delete`命令,而本地分支则是`git branch -d`。不过有时候如果分支未合并,可能需要强制删除,这时候要用`-D`选项。 还要注意权限问题,删除远程分支可能需要项目的相应权限,这点在引用3中提到过。用户如果遇到失败,可能需要检查权限。此外,确保在执行删除前已经拉取了最新代码,避免分支状态不一致,引用2中提到了创建分支前先git pull,这可能同样适用于删除前的同步。 是否需要给出具体的例子?比如具体的分支名称替换,让用户更清楚如何替换成自己的分支名。同时,提醒用户删除分支后的影响,比如其他协作者是否需要同步,或者分支删除后的恢复方法? 另外,用户可能还想知道如何验证分支是否删除成功。比如,删除远程分支后,可以运行`git fetch --prune`来更新本地远程分支列表,或者查看GitLab网页上的分支列表是否更新。 总结步骤应该是:先删远程,再删本地,或者反过来?根据引用1和3,两种顺序都有可能,但通常推荐先删远程再处理本地,避免混淆。不过具体步骤可能没有严格顺序,但需要确保不在要删除分支上操作。 最后,是否需要给出常见问题的解决办法,比如无法删除时的处理方法,或者分支未合并时的提示?这些能帮助用户更好地应对可能遇到的问题。</think>以下是删除本地分支GitLab远程分支的分步操作指南: ### 一、删除GitLab远程分支 1. **执行删除远程分支命令** ```bash git push origin --delete 分支名称 ``` 例如删除`feature/login`分支: ```bash git push origin --delete feature/login ``` 2. **验证远程删除结果** 通过访问GitLab仓库页面或执行命令查看远程分支列表: ```bash git ls-remote --heads origin ``` ### 二、删除本地分支 1. **切换出目标分支** ```bash git checkout 其他分支名称 # 如 git checkout main ``` 2. **执行删除本地分支命令** - 安全删除(仅合并过的分支) ```bash git branch -d 分支名称 ``` - 强制删除(未合并的分支) ```bash git branch -D 分支名称 ``` ### 三、补充说明 1. **权限要求** 删除远程分支需要具备GitLab仓库的`Maintainer`或更高权限[^3] 2. **同步本地仓库状态** 删除远程分支后建议执行: ```bash git fetch origin --prune ``` ### 操作示例 ```bash # 删除远程分支 git push origin --delete feature/payment # 切换回主分支 git checkout main # 删除本地分支 git branch -d feature/payment ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值