MYSQL

Mysql有哪些

Oracle是最挣钱的数据库,出自甲骨文公司,市场占有率非常高,功能非常强大,被一些大型企业,电信,银行,证券公司所使用

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。MySQL目前最流行的开源数据库,被甲骨文公司所占用,威胁着老大Oracle的地位,开源,免费,支持多平台,易用

SQLServer,微软开发的数据库,仅支持Windows操作系统,号称是windows上最好用的数据库。数据库的天下不仅仅是MySQL和Oracle的,SQLServer也正在慢慢崛起,微软网罗了不少数据库的专家,推出了不少重磅功能。

MongoDB,最好用的文档型数据库,是NOSQL类型数据库的领导者之一,也是当前最成功的NoSQL类型数据库,数据存储格式采用JSON形式,非常灵活。

Redis,最好的内存级数据库,查询效率极高,并且在Redis 3.0之后,支持多种数据类型,String,Set,List,Hash等类型,开始支持集群,弥补了自身短板。是目前做缓存最流行的数据库

Neo4J,最好的图形化数据库,流行话较低,但是图形化数据库的绝对领导者。

SQLite,最流行的嵌入式数据库,占领手机行业的绝对领导者地位,Android和IOS两大手机系统,都内嵌了SQLite数据库,SQLite是一个完整的关系型数据库,支持标准SQL,支持事务操作,程序包非常小,是嵌入式设备的最佳选择。

SQL语言
数据查询语言:DQL
数据操纵语言:DML
数据定义语言:DDL
数据控制语言:DCL

编写数据的软件是—Navicat
在这里插入图片描述

基本数据库操作

单表查询
----------创建数据库
CREATE DATABASE 库名
----------删除数据库
DROP DATABASE 库名
----------修改编码
alter database 库名 CHARSET=utf8
----------查询所有数据库
SHOW DATABASES
----------使用数据库
USE 库名

----------创建表

create table 表名(
studentNo int PRIMARY key auto_increment,
sname VARCHAR(20),
sex VARCHAR(2),
age int
)
------------查看当前的表

SHOW TABLES
-------------查看当前表字段

DESC 表名字
-------------查看目前的表以及当前表字段
SHOW CREATE TABLE student

----------删除当前表所有数据
DELETE FROM 表名

------------添加一条数据
INSERT INTO 表名(字段名,字段名) VALUES(数据,“数据”)
INSERT INTO 表名 VALUES(数据,“数据”)

------------添加多条数据
INSERT INTO 表名 VALUES(数据,“数据”),(数据,“数据”),(数据,“数据”),(数据,“数据”)

------------删除一条数据
DELETE FROM 表名 WHERE 要删除的字段数据

-------------插入一个字段
ALTER TABLE表名 ADD 要添加的字段以及字段类型

-------------删除一个字段
ALTER TABLE 表名 drop 字段名

-------------查看当前表数据
SELECT * FROM 表名

----------2,6 取第三个以及以后的六条记录
SELECT * FROM 表名 LIMIT 2,6

----------从小到大排序(两种方法都可以查出来)
SELECT * FROM 表名 ORDER BY 字段
SELECT * FROM 表名 ORDER BY 字段 ASC

----------从大到小排序
SELECT * FROM stu ORDER BY id DESC

-*----------给字段加上名字
SELECT 字段 as “姓名”, 字段 as “序号” FROM 表名

------------分组查询(语句和函数一起使用 聚合函数包括 count(求个数) min(最小值) max(最大值) sum(求和))
SELECT * FROM stu GROUP BY name

单表查询实际案例
在这里插入图片描述

以上表为例

-----------查询姓名是李白的学生信息

select * from student where sname=“李白”;
在这里插入图片描述
-----------查询1班是上海的学生

select * from student where class=“1班” and hometown=“上海”;
在这里插入图片描述

----------查询家乡是北京或者上海的学生

select * from student where hometown=“北京” or hometown=“上海”;
在这里插入图片描述

-----------查询小乔的年龄

select age as “年龄”,sname as “姓名” from student where sname=“小乔”;
在这里插入图片描述

-----------查询家乡不在北京的学生

select * from student where hometown!=“北京”;
在这里插入图片描述

-----------查询年龄小于20的女同学

select * from student where age<“20” and sex=“女”;
在这里插入图片描述

-----------查询年龄为18至20的学生

select * from student where age BETWEEN 18 and 20;
在这里插入图片描述

-----------查询北京学生的年龄总和

select sum(age),hometown from student where hometown=“北京”;
在这里插入图片描述

-----------查询女生的平均年龄

select avg(age) from student where sex=“女”;
在这里插入图片描述

-----------查询姓名包含白的学生

// 查询名字包含白的同学

SELECT * from student where sname like ‘%白%’
在这里插入图片描述

// 查询名字最后一位是白的同学

SELECT * from student where sname like ‘%白’
在这里插入图片描述

//查询名字姓白的同学

SELECT * from student where sname like ‘白%’
在这里插入图片描述

//查询名字是两位且姓白的同学

SELECT * from student where sname like ‘白_’
在这里插入图片描述

-----------查询所有学生信息,按年龄从大到小排序,年龄相同时,再按学号从小到大排序

SELECT * from student ORDER BY age desc,studentNo asc;
在这里插入图片描述

-----------查询女生的最大年龄

select max(age) from student where sex=“女”;

在这里插入图片描述

多表查询

交叉查询
交叉查询,又叫笛卡尔积查询,会将左表和右表的信息,做一个乘积将所有信息查询出来,会产生临时表,比较占用内存,生成的记录数=表1 X表2
SELECT * FROM 表1 , 表2
SELECT * FROM 表1 CROSS JOIN 表2

内连接查询
内连接,inner join on 查询两张表,设定条件,将两张表中对应的数据查询出来不会产生笛卡尔积,不会产生临时表,性能高
SELECT * FROM 表1 别名 INNER JOIN 表2 别名 ON 表1别名. 表1字段名 = 表2别名. 表2字段名
SELECT * FROM 表1 , 表2 WHERE 表1.表1字段名 = 表2.表2字段名
SELECT * FROM 表1.别名 , 表2.别名 WHERE 表1.表1字段名 = 表2.表2字段名

左外连接
左外连接 left join on 设定条件,将两张表对应的数据查询出来,同时将左表自己没有关联的数据也查询出来
注意:join前面是左,后面是右
SELECT * FROM 表1 别名 LEFT JOIN 表2 别名 ON 表1别名. 表1字段名 = 表2别名. 表2字段名

右外连接
右外连接 right join on 设定条件,将两张表对应的数据查询出来,同时将右表自己没有关联的所有数据查询出来

SELECT * FROM 表1 别名 LEFT JOIN 表2 别名 ON 表1别名. 表1字段名 = 表2别名. 表2字段名

实际案例

在这里插入图片描述

在这里插入图片描述
查询王老师带的学生的姓名和对应学科
select student.name,student.score,teacher.class from student inner join teacher on student.id=teacher.student_id where teacher.name=“王老师”;
在这里插入图片描述
查询王老师带的学生,成绩及格的学生姓名
select student.name from student inner join teacher on teacher.student_id=student.id where score>70 and teacher.name=“王老师”

在这里插入图片描述

查询赵六学生的老师姓名和对应的学科名称
select teacher.name,teacher.class from student inner join teacher on teacher.student_id = student.id where student.name=“赵六”;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值