数据库的基础概念和代码例子(增删改查和其他操作-约束)(下)

简介: 什么是数据库?答:存储数据的仓库,数据是有组织的进行存储(DataBase,简称DB)

子查询

子查询就是从表中查出初步的条件后,再用这个作为条件再进行查询

28.子查询之单行单列查询 (使用=  != > <判断)

1.先写出子查询的语句,2.再嵌套到大的查询语句里面,例子:查询比虞姬大的年龄都有哪些 ?

那就先查询出虞姬的年龄,再嵌套到查询全部人的年龄里面比较

格式为:

第一步select 对比的列名 from 表名 where 对比条件;

第二步select * from 表名 where 对比的列名 >(第一步的子查询);

select age from home where name = '虞姬';--为第二步做准备的
select * from home where age >(select age from home where name = '虞姬');--把第一步嵌套到括号里面

运行结果:

原表:

 

第一步:

最终步骤


29.子查询之多行单列查询 (使用in判断)

可以用来提取两个表中的两种列的信息,例子:查询表1中会舞剑的,在表2里面有几个

格式为:

select * from 表名2 where 表名2  in(select 根据什么提取的列名 from 表名1 where 要提取的列名 ='列中具体信息' or 要提取的列名 ='列中具体信息');

select * from home where name in (select username from mm where hobby='舞剑');

运行结果(原图参考上一题):


30.子查询之多行多列查询(作为虚拟表)

可以用来提取两个表中都符合条件的两个列信息,例子:根据id,提取出表中在1955-3-7后出生的人

格式为:

select * from (select * from 表1的表名 where 表1的列名>'列名具体条件')表1的表名 ,表2的表名 where 表1的表名.列名=表2的表名.列名;

select * from (select * from home where hire_date>'1995-3-7')home ,mm where home.id=mm.id;

运行结果 :

三、增

1.直接创建一个数据库

格式为:create database 数据库名;

create database love;

2.先判断该数据库是否存在再创建

格式为: create database if not exists 数据库名;

create database if not exists dog;

3.创建一个表,里面设置3列标题(注意,建表之前要先指定用哪一个数据库)

解析,20代表username的这个字符数不能超过20,起到限制作用,其他的同理

mysql> create table people(
    -> id int,
    -> username varchar(20),
    -> password varchar(24)
    -> );

4.表中加添一列

格式为:alter table 表名 add 列名 数据类型;

alter table bb add pig int;

5.给表中添加数据

格式为:insert into 表名(列名1,列名2,.....)values(数据值1,数据值2,.....);

insert into mm(id,username,password,hobby)
values(1,'张三','123456','踢足球');

6.给表中大批量添加数据

格式为:insert into 表名(列名1,列名2,.....)values(数据值1,数据值2,.....),(数据值1,数据值2,.....);

insert into mm(id,username,password,hobby)
values(1,'张三','123456','打篮球'),
(2,'李四','6668888','踢足球');

四、删

1.直接删除某个数据库。

格式为:drop database 要删除的数据库名;

drop database dog;

2.先判断该数据库是否存在,再执行删除。

格式为:drop database if exists 要删除的数据库名;

drop database if exists love;

3.删除表。

格式为:drop table 表名;

drop table people;

4. 先判断表是否存在再删除

格式为:drop table if exists 表名;

drop table if exists cc;

5.删除列

格式为:alter table 表名 drop 要删除的列名;

alter table bb drop dog;

6.删除表中的数据

格式为:delete from 表名 where 列名 = '列名对应条件';

delete from mm where password = '123456';

五、改

1.修改表名

格式为:alter table aa rename to 表名;

alter table aa rename to zz;

2.修改表中列的数据类型

格式为:alter table 表名 modify 列名 char(50);

alter table bb modify pig char(50);

3.修改列名和数据类型

格式为:alter table 表名 change 列名 新列名 新数据类型;

alter table bb change pig dog int;

4.修改数据内容

格式为: update 表名 set 列名 = '改后值' where 列名 = '列名对应数据';

update mm set username = '坏人' where id = '1';--判断条件设置不一样而已
update mm set username = '笨蛋' where hobby = '踢足球';---判断条件设置不一样而已

运行结果:

原:

第一次修改后:

第二次修改后:

六、其他操作

1.使用指定的数据库。

格式为:use 要使用的数据库;

use love;

七、约束

1.约束格式

需要什么约束就在什么列里面加上约束就好了

非空约束:not null

唯一约束:unique

主键约束:primary key

检查约束:check

默认约束:default

foreign key--这个是表和表之间连接使用的

格式为:创建列值 约束,

create table wz(
     id int primary key auto_increment,--非空且自增,非空是primary key 自增是auto_increment
     name varchar(20) not null,--非空
     girlfriend varchar(30) not null unique,--非空且唯一
     parent varchar(20) unique,--唯一约束
     money int default 0);--默认约束

建完表后添加非空约束

alter table 表名 modify 字段名 数据类型 not null;

删除约束

alter table 表名 modify 字段名 数据类型;

2.外键约束

(1)外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性

(2)外键就是让两个表之间的两个列建立绑定连接

(3)两张表之间可以有多个外键

(4)主表(别称为父表),从表(别称为子表)

注意点:

(1)主表必须有主键,从表有没有主键都可以,这样才可以创建外键连接。

(2)建表和添加数据时候都要先添加主表的,再添加从表的

建表时添加外键:

格式为:

1.先建立主表

2.在从表建表时最下面添加这个连接语句

constraint  自定义的外键名  foreign key(本表要绑定的列名) references 主表(主表要绑定的主键列名)

--主表(老大)
 create table car(
     id int primary key,
     name varchar(20)
     );
--从表(小弟)
create table BM(
     my_id int ,
     name varchar(30),
     money int,
    constraint zzzz foreign key(my_id) references car(id)
     );
---zzzz是自己定义的外键名,要删除的时候用得着

建表后添加外键:

格式为:

alter table 从表表名 add constraint  自定义的外键名称 foreign key(从表列名) references 主表表名(主表的主键列名);

alter table BM add constraint hhhh foreign key(money) references car(id);
---hhhh:自己定义的外键名称,删除时候用得着

删除外键:

格式为:

alter table 从表的表名 drop foreign key  外键名;

alter table BM drop foreign key  zzzz;
--zzzz:外键名,在创建时候就定义好了,如果不知道外键名可以在本文章中的查里面找找相关的查询语句

目录
相关文章
|
8天前
|
XML Java 数据库连接
【MyBatis】MyBatis操作数据库(一)
【MyBatis】MyBatis操作数据库(一)
16 1
|
5天前
|
关系型数据库 MySQL 数据库
关系型数据库MySQL开发要点之多表设计案例详解代码实现
关系型数据库MySQL开发要点之多表设计案例详解代码实现
15 2
|
5天前
|
分布式计算 大数据 数据处理
MaxCompute操作报错合集之odps数据库T1有几百行的数据,为什么出来只有5行的数据
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
1天前
|
SQL Java 数据库连接
使用Python通过JDBC操作数据库(达梦数据库)
使用Python通过JDBC操作数据库(达梦数据库)
7 0
|
2天前
|
SQL 关系型数据库 MySQL
php mysqli操作数据库
php mysqli操作数据库
8 0
|
2天前
|
Java 关系型数据库 MySQL
连接MySQL数据库的最优JDBC代码
连接MySQL数据库的最优JDBC代码
|
2天前
|
Java 数据库连接 数据库
JDBC之Statement与PreparedStatement操作数据库对比
JDBC之Statement与PreparedStatement操作数据库对比
8 0
|
4天前
|
存储 数据库连接 数据库
逆向学习数据库篇:表设计和数据库操作的核心概念与流程
逆向学习数据库篇:表设计和数据库操作的核心概念与流程
10 0
|
5天前
|
SQL 分布式计算 MaxCompute
MaxCompute操作报错合集之通过UDF(用户定义函数)请求外部数据库资源并遇到报错,是什么原因
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
|
7天前
|
SQL 关系型数据库 MySQL
MySQL数据库数据模型概念入门及基础的SQL语句2024
MySQL数据库数据模型概念入门及基础的SQL语句2024
15 0

热门文章

最新文章