数据库基本操作(基础篇)
前言
总结和归纳我近几天学习关于数据库基础的知识。
一、SQL的通用语法
1.SQL语句可以单行或多行书写,以分号结尾。
2.SQL语句可以使用空格或者是缩进符增强语句可读性。
3.MySQL数据库的SQL语句不区分大小写,关键字使用大写。
1、DDL语句
DDL(Data Definition Languages)语句:数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。
1.DDL-对数据库操作
(1)查询所有数据库 show databases;
(2)查询当前数据库 select database();
(3)创建数据库 create datadase (if not existe) + 数据库名 + [字符集] [排列规律];
(4)使用数据库 use + 数据库名;
(5)删除数据库 drop datadase (if exists) + 数据库名;
2.DDL-对表操作
对表操作-查询
(1)创建表格。
create table 表名(字段1 字段1类型(comment 字段1注释),字段2 字段2类型(comment 字段2注释),……字段n 字段n类型(comment 字段n注释));
(2)查询当前数据库所有表 show tables;
(3)查询表结构 desc + 表名;
(4)查询指定表的建表语句 show create table + 表名;
对表操作-修改
(1)添加字段 alter table 表名 add 字段名 类型(长度)
##添加字段
alter table emp add emp_id varchar(10);
(2)修改数据类型 alter table 表名 modify 字段名 新数据类型(长度)
##修改数据类型
alter table emp modify idcart varchar(10);
(3)修改字段名和字段类型 alter table 表名 change 旧字段名 新字段名 类型(长度);
##修改字段名和字段类型
alter table emp change emp_id emp_memberID varchar(10);
(4)删除字段 alter table 表名 drop 字段名;
##删除字段
alter table emp drop emp_id;
(5)修改表名 alter table 表名 rename to 新表名;
##修改表名
alter table old_emp rename to new_emp;
对表操作-删除 drop table (if exists) 表名;
2、DML语句
DML(Data Manipulation Language)语句:数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、udpate 和select 等。(增添改查)
添加数据
1.给指定字段添加数据 insert into 表名(字段1,字段2……)values(值1,值2……);
2.给全部字段添加数据 insert into 表名 values (值1,值2……);
3.批量添加数据。
insert into 表名(字段1,字段2……)values(值1,值2……),(值1,值2……),(值1,值2……);
insert into 表名 values (值1,值2……),(字段1,字段2……),(值1,值2……);
##给指定字段添加数据
insert into emp(id ,name ,brithday)values('1', '小明','1997-10-6');##给全部字段添加数据
insert into 表emp values ('1', '小明','1997-10-6');##批量添加数据insert into emp values ('1', '小明','1997-10-6'),('2', '小红','1992-11-8');
注:(1)插入数据时,指定字段顺序需要值的顺序一一对应。
(2)插入数据大小应该在字段规定范围以内。
修改数据
updata 表名 set 字段名1=值1,字段名2=值2,……【where 条件】;
注:修改语句的条件可以有,也可以没有,如果没有条件,则会修改整张表的所有数据。
删除数据
delete from 表名 [where 条件]
注意:1.语句可以有条件,也可以没有如果,没有条件则会删除整张列表中的所有数据。
2.语句不能删除某一个字段的值,可以用update。
3.DQL语句
DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。主要的语句关键字包括 grant、revoke 等。
DQL语句编写顺序:
select 字段列表 + from 表名列表 + where 条件列表 + group by 分组字段列表 + having 分组后条件列表 + order by 排序字段列表 + limit 分页参数
基本查询
1.查询多个字段 select 字段1(字段2,……)from 表名; select *from 表名;
2.设置别名 select 字段1 [as 别名] from 表名
3.去除重复数据 select disinct 字段列表 from 表名
条件查询
语法: select 字段列表 from 表名 where 条件列表;
分组查询
语法: select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过滤条件];
where与having 的区别:
1.where是分组前进行过滤。不满足where条件不参与分组,而having是分组后对结果进行过滤。
2.where不能对聚合函数进行判断而having可以。
排序查询
语法: select 字段列表 from 表名 order by 字段1 排序方式;
排序方式:ASC升序 , DESC降序
##排序查询select * from emp order by id desc;
注意:1.如果多字段排序,当第一个字段值相同时,才会根据第2个字段进行排序。
2.当不写排序方式时,默认是升序。
分页查询
语法:select 字段列表 from 表名 limit 起始索引 ,查询记录数;
##分页查询select nmae , age from emp_id limit 1*10,5;
注意:1.起始索引从零开始。起始索引=(页码-1)*每页显示记录数。
2.分页查询是数据库的方言。不同数据库有不同的实现。
3.如果分页查询的是第一页数据,起始索引可以省略,可以简写为Limit 10。
4.DCL语句
DCL(Data Control Language)语句:数据控制语言,用来管理数据库用户,控制数据库访问权限。
管理用户
1,查询用户use mysql;select * from user
2,创建用户c reate user‘用户名’@‘主机地址’identified by‘密码’;
用这条命令创建的用户没有任何权限,练全部数据库都查不到,只能查到自带的mysql库,配权在后面,要结合起来用
常见的主机地址有配成localhost,只能在本机登录;还常配成通配符%,代表任意主机,在哪里都能登录。
3,修改用户密码 alter user 用户名@主机地址 identified with mysql_native_password by ‘新密码’
4,删除用户 drop user ‘用户名’@‘主机地址’;
权限控制
1.基本权限
2,查询权限 SHOW GRANTS FOR '用户名'@'主机地址';
3.授予权限 GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机地址';
(可以用*表示所有,某个数据库后面加*就是这个数据库的所有表;撤销权限也一样)
4,撤销权限 REVOKE 权限列表 ON 数据库名.表名 FROM'用户名'@'主机名';
二、函数
1.字符串函数
##concat
select concat("Hello","world"); //Hello world
##lower
select lower("Hello"); //hello
##upper
select upper("Hello"); //HOLLE
##lpad
select lpad(1,5,0); //00001
##rpad
select rapd(1,5,0); //10000
##trim
select trim(" hello world "); //hello world
##substring
select substring("123 123" ,1 ,4) //23 1
2.数值函数
##ceil
select ceil(5.1); //5
##floor
select floor(5.9); //5
##mod
select mod(5,3); //2
select mod(4,3); //1
##round(x,y)
select round(3.243,2); //3.24
3.日期函数
4.流程函数
三、约束
主键约束
理论上来说每一个数据表都必须有一个唯一主键作为数据的唯一标识,设置主键的列不允许为空,
主键习惯 id 表示,可以在创建数据时直接指定,也可以通过修改表结构直接添加,设置为主键的
列在添加数据时不能重复,既唯一性。
自动递增 AUTO_INCREMENT 的特点
1.只有整形数据列才能设置为自动递增
2.只有主键才能设置为自增列
3.自动增长,新增数据时可以不赋值
4.初始化默认值为1,默认增量为1
5.自增列一旦被使用过就不会出现
6.一旦申请到但不符合条件的话无法添加到列表,但会一直占有一个序列。
唯一约束
唯一约束用来保护表中某列数据不允许重复,与主键约束类似,但级别没有主键高。一份表中唯一约束可以创建多个,并且唯一约束的列允许为空。
非空约束
可以通过 not null 设置数据表中某一列是必填字段,既不允许为空。
默认约束
可以通过default设置默认值约束,设置了默认约束的列,如果不给值就会使用默认值来填充。
外键约束
外键约束用来在两个表的数据之间设立关联,MySql数据库是关系型数据库,既表与表之间的存在关系的,而这种关系我们成为外键关系。
四、多表查询
1.连接查询
(1)内连接:相当于查询A、B两表的交集部分数据。
语法:(隐式)select 字段列表 from 表1,表2 where 条件 ;
(显式)select 字段列表 from 表1 [inner] join 表2 连接条件……;
(2)外连接
外连接又分为左外连接和右外连接。
左外连接:左外连接查询的是左表的全部数据以及与右表的交集部分;
右外连接:右外连接查询的是右表的全部数据)以及与左表的交集部分;
语法:
左外连接 select 字段列表 from 表1 left [outer] join 表2 on 条件;
右外连接 select 字段列表 from 表1 right [outer] join 表2 on 条件;
左外连接:
select emp.*, dept.* from emp left outer join dept on emp.dept_id = dept.id;
右外连接:
select dept.*, emp.* from emp right outer join dept on emp.dept_id = dept.id;
3.自连接
语法:select 字段列表 from 表a 别名a join 表a 别名b on 条件;
4.联合查询
描述:把多次查询的结果合并起来,形成一个新的查询结果集。
语法:
SELECT * from 表1 LEFT JOIN 表2 on 条件
UNION [all]
SELECT * from 表1 RIGHT JOIN 表2 on 条件;
注意点:
1,对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致,;
2,union关键字默认去重,如果使用union all 可以包含重复项;
2.子查询
概念:子查询实际就是查询语句嵌套查询语句,然后通过子查询语句的返回值不同可以将子查询分为不同种类;以往我们在sql语句中的where条件中的条件都是固定的值,有了子查询语句我们就可以实现将查询语句放到where条件中去;
标量子查询
描述:子查询的返回结果为单个的值(数字、字符串、日期等):
列子查询
描述:子查询返回的结果是一列(可以是多行);
常用操作符:IN ,NOT IN ,ALL ,SOME ,ANY ;
行子查询
描述:子查询的返回结果是一行(可以是多列);
表子查询
描述:子查询的返回值是多行多列,也就是返回一个表格;
数据库基本操作(基础篇)相关推荐
- MySQL数据库笔记-基础篇
文章目录 MySQL概述 数据库相关概念 小总结 MySQL数据库 版本: 启动与停止 客户端连接 关系型数据库 数据模型 小总结 SQL SQL通用语法 SQL分类 DDL 数据库操作 查询 创建 ...
- SQL Server 数据库基本操作入门篇【2】
本文主要介绍运用SQL语句对模式和基本表的操作,欢迎阅读~ 本文构成比较简单 一.用SQL语句新建数据库 二.模式(SCHEMA)的定义与删除 1. 定义模式 2. 删除模式 三.基本表的定义.删除与 ...
- Linux环境下的数据库(基础篇上)
数据库 一.Linux环境下数据库的安装 二.数据库的基础操作 三.数据库中表的操作 一.Linux环境下数据库的安装 需要在 root 用户权限下进行数据库的一系列安装操作 安装 mariadb 服 ...
- 数据库(SQL)的下载安装和基本操作—基础篇
本篇基于SQL Server 2019 and SSMS v18.5 如何下载安装数据库? 下载链接:https://www.microsoft.com/zh-cn/sql-server/sql-se ...
- 数据库操作--基础篇
文章目录 一.什么是数据库 基础知识 数据库主键,外键,索引 关系型和非关系型数据库的区别 二.数据库命令 MySQL语法规范 基础查询 常见增删改查语法介绍 三.DQL语言的学习 SQL的执行顺序 ...
- 数据库--【基础篇】
一.数据库的相关概念 1.DB:数据库(Database) 即存储数据的"仓库",其本质是一个文件系统.它保存了一系列有组织的数据. 2.DBMS:数据库管理系统(Database ...
- 《数据库》基础篇-SQL语言
第一节:MySQL安装及启动 启动 法一 在cmd中输入命令service.msc打开windows的系统服务列表,找到MySQL右键直接启动/停止 法二 直接使用命令行:启动net start my ...
- 6 redis 编译失败_Redis(NoSQL数据库)基础篇
一.Redis简介 1.1 Redis是什么 Redis是一个开源的,使用ANSI C 编写,高性能的Key-Value的NoSQL数据库. 2.2 Redis特点 (1)基于内存 (2)可持久化数据 ...
- 达梦:如何登录数据库(基础篇)
登录达梦数据库有两种方式,包括使用disql命令行工具登录和DM管理工具登录. 1.disql命令行工具登录 dIsql 是 DM 数据库自带的工具,只要安装了 DM 数据库,就可以在 ...
最新文章
- box-shadow属性
- Java常量字符串String理解
- 最强 AWS 的十条军规,首席技术官总结过去十年的经验
- Win10桌面右键响应非常慢怎么办?
- JDE Client开发端 左侧边栏设置
- idea怎么更改推到github的路径_IDEA 拉取、上传、更新 项目到 Gitee+GitHub_超详细超简单版...
- SVN历史版本比较中文乱码
- SQL Server Express无法建立ODBC问题(错误代码67 和17)
- 关于keil c51与keil mdk同时安装、合并解决办法
- UVA11324 强连通+dp记忆化搜索
- 浅谈移动前端的最佳实践
- 扇贝有道180927每日一句
- flutter 进度条_OkHttp 在 Flutter中的运用场景,Flutter语言连接网络的方法介绍
- 软件使用,Microsoft Visual C++运行库合集包
- i18n 支持参数的写法
- webscraper 爬取二级网页_web scraper 入门到精通之路
- HP工作站如何在BIOS下开启、关闭安全芯片
- 赛程表 (递归调用, 非递归调用)
- [Linux]搭建Anki同步服务器(针对Anki2.0)
- python 显示文件的十六进制字符,提取mp3文件的专辑封面
热门文章
- 拉卡拉智能POS新功能预览
- (Ryan的Redis系列博客)7.Redis键的生命周期
- 移动数组中的所有零到数组的末尾
- Lucene 查询中的距离查询(proximity query)
- SCOM2019导入管理包
- nodejs+vue+elementui学生作业管理系统thinkphp
- 最火的几个全网络预训练模型梳理整合(BERT、ALBERT、XLNet详解)
- 用matlab画kdj指标,【每日一策】Matlab量化交易策略之 KDJ择时
- springboot毕设项目校园二手商品交易平台4kncl(java+VUE+Mybatis+Maven+Mysql)
- 由于找不到vcruntime140_1.dll,无法继续执行代码重新安装程序可能会解决此问题