前言必读

读者手册(必读)_云边的快乐猫的博客-CSDN博客

目录导航:

一概念解析

1.什么是数据库?

2.什么是数据库管理系统?

3.什么是SQL?

4.什么是关系型数据库?

5.SQL通用语句?

6.名词解释

7.约束(列中的规则制定者)

二、查

1.查询全部数据库

2.查询正在使用的数据库。

3.查询所有表(当前使用的库中)

4.查询单个表结构

5.查询全部列中的详细数据

6.查询列中的数据

7.查出列中的数据并且起别名

8.查询列中的数据并且去除重复的

条件查询

9.根据条件查询表中的数据

10.根据条件查询表中的数据之区间

条件查询之模糊查询

11.查询列中指定数据开头的

12.查询列中指定位置匹配的数据

13.查询列中的关键字

排序查询

14.查询列中从小到大排序(默认)--升序

15.查询列中从大到小排序   --降序

16.多种要求排序

聚合函数 (数学运算)

17.统计表中有多少列数据

18.对该列的数据进行各种计算

分组查询

19.对表中的列进行聚合函数计算分组

20.对表中的列进行灵活分组查询

21.对表中的列进行灵活查询基础上,再进行分组筛选

分页查询

22.从索引值开始查多少条数据

23.查看外键名称

多表查询

24.隐式内连接查询

25.显式内连接查询

26.左外连接查询

27.右外连接查询

子查询

29.子查询之多行单列查询

30.子查询之多行多列查询

三、增

1.直接创建一个数据库

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

3.创建一个表

4.表中加添一列

5.给表中添加数据

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

四、删

1.直接删除某个数据库

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

3.删除表

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

5.删除列

6.删除表中的数据

五、改 

1.修改表名

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

3.修改列名和数据类型

4.修改数据内容

六、其他操作 

1.使用指定的数据库。

七、约束

1.约束格式

2.外键约束

============================================================================================================

一、概念解析

1.什么是数据库?

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

2.什么是数据库管理系统?

答:管理数据库的大型软件(DataBase Management System,简称DBMS)

例子:MySQL

3.什么是SQL?

答:操作关系型数据库的编程语言,是一种结构化查询语言(Structured Query Language,简称SQL)

4.什么是关系型数据库?

答:由多张能互相连接的二维表组成的数据库

优点:

(1)都是使用表结构,格式一致,易于维护

(2)使用通用的SQL语言操作,使用方便,可用于复杂查询

(3)数据存储在磁盘中,安全

5.SQL通用语句?

答:SQL可以单行或者多行书写,以分号结尾,不分大小写,关键字建议大写

单行注释:--注释内容或者#注释内容

多行注释:/*注释*/

6.名词解释

DDL:操作数据库等

DML:对表中的数据进行增删改

DQL:对表中的数据进行查询

DCL:对数据库进行权限控制

7.约束(列中的规则制定者)

(1)作用于表中列上的规则,用于限制加入的数据

(2)约束的存在保证了数据库中数据的正确性、有效性和完整性

分类: 

非空约束:保证列中所有的数据不能有null值。

唯一约束:保证列中所有的数据各不相同

主键约束:主键是一列数据的唯一标识,一张表里面只能有一个。要求非空且唯一

检查约束:保证列中的值满足某一条件

默认约束:保存数据时,未指定值则采用默认值

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

二、查

1.查询全部数据库

show databases;

2.查询正在使用的数据库。

select database();

3.查询所有表(当前使用的库中)

show tables;

4.查询单个表结构

格式为:desc 表名;

desc func;

5.查询全部列中的详细数据

格式为:select * from 表名;

select * from mm;

6.查询列中的数据

格式为:select 列名,列名 from 表名;

select id,username from mm;

7.查出列中的数据并且起别名

格式为:select 原列名 as 改后列名,原列名 as 改后列名 from 表名;

select id as 情侣,username as 名字 from mm;

8.查询列中的数据并且去除重复的

格式为: select distinct 列名 from 表名;

select distinct hobby from mm;

条件查询

9.根据条件查询表中的数据

格式为:select * from 表名 where  列名 条件

select * from mm where hobby = '步兵';

10.根据条件查询表中的数据之区间

格式为:select * from 表名 where 列名 between 条件区间 and 条件区间;

select * from mm where id between 3 and 5;

条件查询之模糊查询

11.查询列中指定数据开头的

格式为:select * from 表名 where 列名 like '指定数据%';

select * from mm where hobby like '步%';

12.查询列中指定位置匹配的数据(比如那列中第2个是3的全要了,几个下划线就代表几个空格)

格式为:select * from 表名 where 列名 like '截取的下划线  需要的数据%';

select * from mm where password like '__3%';

13.查询列中的关键字

格式为:select * from 表名 where 列名 like '%关键字%';

select * from mm where hobby like '%兵%';

运行结果:

原表:

查询后:

排序查询

14.查询列中从小到大排序(默认)--升序

格式为:select * from 表名 order by 列名 asc;

select * from mm order by id asc;

15.查询列中从大到小排序   --降序

格式为:select * from 表名 order by 列名 desc;

select * from mm order by id desc;

16.多种要求排序

格式为:select * from 表名 order by 列名1 升或者降 ,列名2 升或者降;

select * from mm order by id asc,password desc;
--就是当第一个列条件相同时,才会排序第二个列条件

聚合函数 (数学运算)

17.统计表中有多少列数据

格式为:select count(*) from 表名;

select count(*) from mm;

18.对该列的数据进行各种计算

格式为:select 聚合函数名(列名) from 表名;

select avg(id) from mm;--例子--count 统计数量
--max  最大值
--min  最小值
--sum  求和
--avg  平均值

分组查询

19.对表中的列进行聚合函数计算分组

格式为:select 分组的列,聚合函数(计算的列) from 表名 group by 分组的列;

select hobby,avg(id) from mm group by hobby;

20.对表中的列进行灵活分组查询

格式为:select 分组的列, 聚合函数(计算的列),count(*)  from 表名  判断条件 group by 分组的列;

select sex, avg(math),count(*) from home where math >50 group by sex;

21.对表中的列进行灵活查询基础上,再进行分组筛选

格式为:select 分组的列, 聚合函数(计算的列),count(*)  from 表名  判断条件 group by 分组的列

分组条件;

select sex, avg(math),count(*) from home where math >50 group by sex having count(*)>2;

20和21的总语法结构

格式为: select 分组的列,from 表名 where 分组前条件限定 group by 分组的列 having 分组后条件筛选

注意:执行顺序:where>聚合函数>having

分页查询

22.从索引值开始查多少条数据

格式为:select * from 表名 limit 起始值,查询条目数;

select * from home limit 0,3;
--注意数据库的第一条是从索引值0开始的
--当上万条数据时需要按页面展示,只需要改变索引值就好了,索引值可以设置成一个动态的公式
--起始索引值 = (当前页码-1) * 每页显示的条数

23.查看外键名称

格式为: show create table 从表的表名;

show create table BM;--BM:从表的表名

运行结果:

 多表查询

简介:多表查询有连接查询和子查询两种方式

(1)连接查询:内连接(即A和B的交集)、外连接

(2)子查询

24.隐式内连接查询 (即A和B两张表的交集)

格式为 :select * from 表1的表名,表2的表名 where 表1的表名.id = 表2的表名.id;

注意点:这个*号是表示交集里面全部查询出来,如果有需要查特定的,就把*号换成需要的表名.列名

select * from mm,home where mm.id =home.id;

25.显式内连接查询 (即A和B两张表的交集)

格式为:select * from 表1的表名 inner join 表2的表名 on 表1的表名.id = 表2的表名.id;

select * from mm inner join home on mm.id = home.id;

26.左外连接查询(即取A表所有部分和AB的交集)

格式为:select * from 表1的表名 left join 表2的表名 on 表1的表名.列名 = 表2的表名.列名;

select * from mm left join home on mm.id = home.id;

27.右外连接查询(即取B表所有部分和AB的交集)

格式为:select * from 表2的表名 right join 表1的表名 on 表2的表名.列名 = 表1的表名.列名;

select * from home right join mm on mm.id = home.id;

注意点:左右外连接可以互换,A表也可以是B表,灵活变换,想让哪个是A表哪个就是A表呗。

子查询

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

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_incrementname 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:外键名,在创建时候就定义好了,如果不知道外键名可以在本文章中的查里面找找相关的查询语句

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

  1. MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物

    MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物 前言 1.MySQL概述 1.1数据库相关概念 1.2MySQL数据库 1.2.1版本 1.2.2下载 1.2.3安装 ...

  2. R操作MySQL数据库创建表、删除表、增删改查(CRUD)

    R操作MySQL数据库创建表.删除表.增删改查(CRUD) 关系数据中的数据是按照一定范式去存储的.当我们需要非常高级和复杂的Sql查询就可以使用关系数据库的数据资产.不光java和python可以容 ...

  3. Hibernate的四种典型例子(增删改查)

    Hibernate的四种典型例子(增删改查)  //查询  // Session session=HibernateSessionFactory.getSession();  // session.b ...

  4. mysql封装增删改查_jdbc封装一行代码实现增删改查

    一行代码实现增删改查.支持自定义结果集. 2个测试类(先看效果) public class UserDao extends Dao { public User login(User user) thr ...

  5. SpringBoot+Mysql+MDUI实现数据的增删改查和列表操作及单,多文件上传实例

    SpringBoot+Mysql+MDUI实现数据的增删改查和列表操作及单,多文件上传实例 开源地址:https://gitee.com/jfkjrym/demo.git evan原创内容!evan原 ...

  6. 巨杉数据库SequoiaDB在Java开发中的增删改查CURD

    文章目录 JSON应用开发 增删改查操作 1 快速入门 1.1 环境部署 部署SequoiaDB集群环境 部署Windows开发环境 1.2 正式开始 2 CURD教程 2.1 Java开发环境搭建 ...

  7. day38 mycql 初识概念,库(增删改查),表(增删改)以及表字段(增删改查),插入更新操作...

    在Navicat中把已经生成的表逆向成模型 数据库上,右键-逆向数据库到模型 ego笔记: 增删改查 文件夹(库)增create database day43 charset utf8;改alter ...

  8. 数据库之OrmLite的简单学习:增删改查_两个表

    参考学习网址: 1.android OrmLite 入门 - ziqiang1的专栏 - CSDN博客 http://blog.csdn.net/ziqiang1/article/details/52 ...

  9. Python操纵Mysql数据库的三种方法,实现增删改查

    目录 这里使用的数据库是关系型数据库Mysql 一.首先,需要安装两个库 二.3种实现增删改查的方法 1.  使用原生语句进行增删改查 2. 使用表结构进行增删改查 3. 使用集成ORM类操纵数据库, ...

最新文章

  1. 高并发:RocketMQ 削峰实战
  2. app.config中增加appSettings节点,conn.open时报初始化错误
  3. 试试 python-dotenv,避免敏感信息被硬编码到代码中
  4. uni-app 请求封装
  5. 花五分钟看这篇之前,你才发现你不懂RESTful
  6. 《噬血代码》:一款轻度的魂Like游戏
  7. 在 Rolling Update 中使用 Health Check - 每天5分钟玩转 Docker 容器技术(146)
  8. 01-hibernate注解:类级别注解,@Entity,@Table,@Embeddable
  9. 经典商务未来科技海报PSD分层模板,以后绝对用得上
  10. 使用rsyslog+loganalzey收集日志显示客户端ip
  11. 进化计算-遗传算法-入门级最好教程
  12. java编程汽水_[原创]JAVA解决喝汽水问题
  13. 搭建Web和FTP站点
  14. 《Oracle 11g 数据库基础教程》读书笔记:
  15. 管理学定律七:责任分散效应与帕金森定律
  16. lazarus编译程序提示不能加载PostgreSQL客户端动态库“libpq.dll“
  17. 配置git mergetool不产生*.orig文件
  18. Linux【网络库】| 【02 <netdb.h>】以及网络常用结构体
  19. 我们的地盘,我们做主
  20. 【渝粤题库】陕西师范大学292011 初级微观经济学 作业(高起专)

热门文章

  1. 诸葛亮给儿子上的十堂课
  2. Android快速开发 动画系列(一) 之 TranslateAnimation(平移动画)
  3. ios删除字符串第一位_iOS字符串操作总结
  4. DPU全球混战,国内多家崛起(2023)
  5. 一篇文章让你掌握企业画像
  6. 转:那些一眼看透本质的人,逻辑都是这样练就的!
  7. [如何书写优雅的代码]有意义的命名
  8. 转载和积累系列 - 微博计数器
  9. 浅析物流输运行业车队数字化运营平台的发展与建设
  10. 网络流量产生工具 D-ITG