数据库基础命令—增删改查

数据库概念

什么是数据库???
    数据库是数据管理的有效技术,是由一批数据构成的有序集合,这些数据被存放在结构化的数据表里。数据表之间相互关联,反映客观事物间的本质联系。数据库能有效地帮助一个组织或企业科学地管理各类信息资源。
    
数据库发展历程:
    1.层次数据库和网状数据库技术阶段,使用指针来表示数据间的联系
    2.关系型数据库技术阶段,经典的里程碑阶段。代表DBMS:Oracle、DB2、SQL server、MySQL等
    3.非关系型数据库技术阶段,MySQL:结构化数据库技术/非关系型数据库
    
注意:(1)关系型数据库和非关系型数据库两者各有优缺点,所以是互补关系,而不是谁取代谁
(2)非关系型数据库出现的原因:为弥补关系型数据库存在的:数据模型、性能、拓展伸缩性的缺点

SQL的定义和规则

SQL:结构化查询语言,是关系型数据库的标准语言
#特点:简单、灵活、功能强大
书写规则:1.SQL数据库中,不严格区分大小写
         2.为了提高可读性,一般关键字大写,其他小写
         3.SQL语句克单行或多行书写
         4.SQL语句中,关键字不能跨多行或缩写
         5.正确使用空格和缩进,可以增加可读性

创建表

CREATE TABLE 表名 (
​
        列名1      列的类型     [约束],
​
        列名1      列的类型     [约束],
​
        ......
​
);  #最后一行没有逗号,Ctrl+Q进入编辑器

表的约束

1.非空约束:NOT NULL,不允许某列的内容为空。
2.设置列的默认值:DEFAULT。
3.唯一约束:UNIQUE,在该表中,该列的内容必须唯一。
4.主键约束:PRIMARY KEY, 非空且唯一。
5.主键自增长:AUTO_INCREMENT,从1开始,步长为1。(MySQL特有)
6.外键约束:FOREIGN KEY,A表中的外键列的值必须参照于B表中的某一列(B表主键)。

简单的SQL语句

保存/增加/插入操作

增:INSERT插入语句:一次插入操作只插入一行.其含义是把哪些值插入到哪个表的哪些列中
   INSERT INTO 表名 (column1,column2,column3...) VALUES (value1,value2,value3...)
   
改:UPDATE更新操作:更新哪张表设置哪些列等于哪些值,条件为...
    UPDATE 表名 SET column1=value1,column2=value2,...WHERE 条件
    #注意:如果省略WHERE子句,则全表的数据都会被修改.
    
删:DELETE删除操作:从哪个表中删除数据
    DELETE FROM 表名 WHERE 条件
    #注意:如果省略了WHERE字句,则全表的数据都会被删除
    
查:(1)查明确的列: SELECT 查询的表中的列1,列2,... FROM 表名 WHERE 条件
    (2)查所有: SELECT * FROM 表名

加入运算

运算符优先级(遵循数学运算符优先级):
(1)乘法和除法的优先级高于加法和减法
(2)同级运算的顺序是从左到右
(3)表达式中使用"括号"的地方会优先进行运算

拼接列值

CONCAT:可以把多个值以字符串的形式拼在一起
SELECT CONCAT(str1,str2,...),列1,列2,... FROM 表名 WHERE 条件
注意:
    (1)返回结果为连接参数产生的字符串。
    (2)如有任何一个参数为NULL ,则返回值为 NULL

设置列名的别名

AS:可以省略,写上可读性更好
作用:
    1.改变表的名字
    2.用于表示计算结果的含义
    3.作为列的别名
    
练习:查询所有货品的id,名称,各进50个且每个运费1元的成本(使用别名)
    SELECT id,productName,(costPrice+1) * 50 AS '成本价为' FROM product

过滤查询

比较运算符:
    =           等于
    >           大于
    >=          大于等于
    <           小于
    <=          小于等于
    !=(<>)      不等于

区分大小写

要让MySQL查询区分大小写,可以使用BINARY属性

(1)不使用BINARY属性,不区分大小写,结果会出现两条数据,即'AA'和'aa'.

(2)使用BINARY属性,区分大小写,结果只会出现一条数据'aa'.

逻辑运算符

AND(&&)     和   组合条件都是一样的且同级
OR(||)      或   组合条件是或者
NOT(!)           如果拼接的条件是FALSE,返回TRUE

运算符优先级

1 所有比较运算符(= < >)
2 NOT
3 AND
4 OR
注意:括号将跨越所有优先级规则,括号优先级最高

范围查询

between运算符:显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用,且是闭区间。
格式:
    SELECT * FROM 表名 WHERE 列名 BETWEEN minValue AND maxValue

集合查询

in运算符,判断列的值是否在指定的集合中
where 列名 in(value1,value2,...);

空值查询

IS NULL:判断列的值是否为空。
空值是特指没有值的列
WHERE 列名 IS NULL;
is not null不为空

模糊查询

like运算符:执行通配查询,查询条件可包含文字字符或数字
通配符是用来实现匹配部分值的特殊字符
%       可表示任意个数字符
_       只可表示一个任意字符

结果排序

order by:实现排序功能
ASC:升序,一般没有指定排序方式都默认升序,可省略
DESC:降序
order by 子句出现在select语句的最后
SELECT * FROM 表名 WHERE 条件 ORDER BY 列1 [ASC/DESC], 列2 [ASC/DESC]...
#执行顺序:先执行FROM--->接着执行WHERE--->再执行SELECT--->最后执行ORDER BY

聚合函数

聚合函数:称为分组函数/统计函数/聚集函数,是用来作用于一组数据,并对这组数据返回一条记录
count       统计结果记录数
MAX         统计计算最大值
MIN         统计计算最小值
SUM         统计计算求和
AVG         统计计算平均值

多表查询

一对多关系:从表使用主表的主建作为外键
1.主表中有的数据,从表中可以没有
2.主表必须有数据,才能向从表中添加数据
3.删除主表的数据,要先删除从表后,才能删除主表

交叉链接查询

select * from 表1,表2

内链接查询

在交叉连接的基础上,使用外键约束作为查询条件.

(1)隐式内连接

SELECT * FROM 表1 ,表2 WHERE 表1(从表).外键 = 表2(主表).主键;

(2)显示内连接(join...on)

SELECT * FROM 表1 JOIN 表2 ON 表1(从表).外键 = 表2(主表).主键;

注意:on后面可以继续使用where条件查询.

外连接查询

1.左外链接
    select * from 表1 left join 表2 on 条件
    #以表左边为主,若左边有数据,右边没有使用null代替,左边没有数据,右边也不能出现
2.右外链接
    select * from 表1 right join 表2 on 条件

子查询

一条select语句结果作为另一条select语句的(查询条件,查询结果等)
查询条件:SELECT * FROM 表1 WHERE 列 = (SELECT 列 FROM 表1 [WHERE 条件])
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小趴菜❥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值