sql数据库_语句基础入门

文章目录

一、数据库的分类

1.1、文件数据库,如SQLite

1.2、关系型数据库,如Oracle,MySQL,SQLserver、DB2、MariaDB

1.3、非关系型数据库,如Redis,MongoDB,HBase

HBase是一个分布式的、面向列的开源数据库
HBase和MongoDB的区别
1、HBase依赖于HDFS;MongoDB直接存储在本地磁盘中
MySQL支持千万级数据量(如果是学校管理系统,每个学生就是一条数据),Orace会支持更多,支持多操作系统Linux/Windows。他的客户端界面工具有sqlyog或者Navicat。另外如果在一个局域网内Client可以通过ip来访问Server

二、MySQL的数据库

在这里插入图片描述

在这里插入图片描述

2、注意事项:

2.1、在MySQL服务器里,可以创建多个数据库
2.2、数据库的命名规则:
----用有意义的名字
----多个单词用下划线连接,如公司名称_项目名
----全部用小写
2.3、不要操作MySQL自带的三个系统库

点击以下链接继续学习
https://study.163.com/course/courseLearn.htm?courseId=1005133010#/learn/video?lessonId=1051682821&courseId=1005133010

三、笛卡尔积(数学中的笛卡尔积,SQL中的笛卡尔积,IO流中的笛卡尔积)

mysql数据库中的笛卡尔积,是通过join … on 来消除的。原理是先通过from将多表加载进内存,再用on来判断是否满足条件,满足后才进行join。主要目的是在每张表内的数据比较庞大时,提高加载效率。不然的话,通过from和where,会先把大量的数据加载进内存,然后才进行判断。造成大量的内存消耗。
总结:消除的笛卡尔积是生成查询结果过程的一个阶段,目的是为了当表的数据量比较大时,免于造成大量的内存消耗,达到提高加载效率。

四、SQL语句

3.1、删除表结构和删除表中的数据

3.1.1、删除表数据
DELETE FROM t2;
3.1.2、删除表结构
DROP TABLE t2;
如果表中有数据,直接执行删除表结构,表结构删除了,但是再次创建该表结构时,同时表数据还是存在的。

3.2、分页语句----limit 可以查出当前排序后,前3位的人。

3.3、添加语句

insert into 表名 (字段1,字段2...) values (1,值2...)

3.4、排序语句

order by 字段 DESC 或者ASC

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

参考资料

3.5、SQL中的like用法

Like的运用场合主要在模糊查询的时候,一般以查询字符串居多,这里据一些例子来说他的一般用法:

例1,查询name字段中包含有“明”字的。

select * from table1 where name like%%

这里不要使用*来代替,一般在使用0个或者任意个字符构成的字符串的时候最好使用%
不过在首或尾使用可以相互替换,如果在头尾同时使用的话,就必须要使用%

例2,查询name字段中以“李”字开头。

select * from table1 where name like ‘李*

或者

select * from table1 where name like ‘李%

例3,查询name字段中含有数字的。

select * from table1 where name like%[0-9]%

例4,查询name字段中含有小写字母的。

select * from table1 where name like%[a-z]%

例5,查询name字段中不含有数字的。

select * from table1 where name like%[!0-9]%

3.6、删除操作的说明如下:

删除从表数据:可以随时任意删除。
删除主表数据:

------有从表数据
1、在默认情况下,它会把外键字段置为null,然后删除主表数据。如果在数据库的表 结构上,外键字段有非空约束,默认情况就会报错了。
2、如果配置了放弃维护关联关系的权利,则不能删除(与外键字段是否允许为null, 没有关系)因为在删除时,它根本不会去更新从表的外键字段了。
3、如果还想删除,使用级联删除引用

------没有从表数据引用:随便删

在实际开发中,级联删除请慎用!(在一对多的情况下)

3.7、SQL语句中的 UNIX_TIMESTAMP()

3.8、MySQL DATE_SUB() 函数

3.9、SQL 中case when …then…else …end用法

五、sql和MySQL的语句执行顺序

  1. From
  2. ON
  3. JOIN
  4. WHERE
  5. GROUP BY
  6. SELECT
  7. HAVING
  8. ORDER BY
  9. LIMIT

六、SQL的关联查询

参考资料:
1、sql的关联查询(内连接、外连接和自连接查询)
2、SQL的自连接解决了哪些问题?
3、Mysql自连接查询

4.1、内连接(在每个表中,找出符合条件的共同记录。)

4.1.1、第一种方式(where)select 字段 from 表一 , 表二 where 条件
4.1.2、第二种方式(join … on)select 字段 from 表一 join 表二 on 条件
4.1.3、第三种方式(inner join … on)select 字段 from 表一inner join 表二 on 条件

注意:如果有多表连接,其中join … on 还有 left join … on 和right join … on是成对出现的。

4.2、外连接

4.2.1、左外连接 select 字段 from 表一 left join 表二 on 条件
根据左表的记录,在被连接的右表中找出符合条件的记录与之匹配,如果找不到与左表匹配的,用null表示。
4.2.2、右外连接 select 字段 from 表一 right join 表二 on 条件
根据右表的记录,在被连接的左表中找出符合条件的记录与之匹配,如果找不到匹配的,用null填充
4.2.3、全连接 select 字段 from 表一 full join 表二 on 条件
返回符合条件的所有表的记录,没有与之匹配的,用null表示(结果是左连接和右连接的并集)

4.3、自连接(连接的两个表是同一张表,同样可以由内连接,外连接各种组合方式,按实际应用去组合。)

4.3.1、格式:select 字段 from 表一 , 表二 where 条件
4.3.2、应用场景:例如商城的分类层级比较深,数码----->手机、电脑---->华为手机、苹果手机等等。可以将这些分类放在一张表内,建一列id,建一列父id。然后进行自连接查询。

七、随手记录

1、查询的时候,字段类型是int类型的话,在sql语句中可以加单引号,也可以不加。
2、起别名时,可以加as也可以不加
3、order by 后面可以加升序(ASC),降序(DESC)。如果俩个同时用,以第一个优先,第二个是在第一个排序的字段相同的时候,再进行排序。
4、sql语句的where 字段名 in ()表示根据条件的范围来查询。还可以 not in 结果相反。in和or作用差不多,但是执行效率,在数据量大时,in的执行效率会更高点。

空值查询

5、char和varchar都是在MySQL数据库中表示字符类型,char是固定长度类型,varchar是可变长度类型。
6、having 常常跟在group by 后面,having后面加聚合函数条件。因为where 后面不能有聚合函数
7、join on 和where 的执行顺序。在外连接的情况下,on在where前执行。具体例子点击链接查看
8、varchar类型的字段,如果内容是数字并且想要排序(order by),可以在字段前加 “ - ”;
9、在mysql中找日期大于或小于当前数据库日期的SQL,如下:
SELECT * FROM Student WHERE Sage > '2020-02-02';
10、distinct可以放在聚合函数内,如下:
SELECT COUNT(DISTINCT Sid) FROM SC; 

八、SQL语句在mybatis中的xml文件中,最后是不带分号的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值