MySQL知识点总结2

本文详细介绍MySQL数据库管理系统的基本操作,包括数据库的创建、修改、删除,数据表的建立、查询、更新及删除,以及数据类型的使用和数据库约束的设定。同时,文章还介绍了SQL语言的应用,如数据插入、更新、删除和查询,以及聚合函数和分组查询的使用。

MySQL

关系型数据库:主要是通过关系表的形式

 

非关系型数据库No SQL(Not only SQL):存储方式灵活,

 

 

DBMS:数据库管理系统

数据库系统:由数据库管理系统和...

 

MySQL:是一个DBMS(数据库管理系统)

关系模型:二维表模型

网络型的关系型模型:

Oracle 、DB2 、Sybase 、MySQL、MS SQL Server

 

 

对数据库层面进行操作:

cmd MySQL -uroot -p enter

自带的数据库

information_schema:保存着其他数据库的信息

mysql

test:(可以随意修改)

 

查看 SHOW DATABASES [LIKE %或者_];

新建 CREATE DATABASE [IF NOT EXISTS] 数据库名;

CREATE DATABASE IF NOT EXISTS test1902;-- 创建数据库

 

USE test1902;-- 使用指定的数据库

 

根据数据类型分配内存空间

所占字节不同:所占内存不同,所表示范围不同

字符型:CHAR 定长字符串

VARCHAR 变长字符串

 

例如: CHAR(30)最多分配30,不满30也是30

VARCHAR(30)最多分配30,不满30,就按实际大小分配内存

 

 

CREATE TABLE student(

student_name VARCHAR(30),

student_age INT(4)

 

);

 

SHOW TABLES;-- 查看表

DROP TABLE 表名;--删除表

 

DESC student;--展示表

 

 

修改表中的字段

ALTER TABLE student ADD COLUMN student_id INT(10);//新增列名

 

ALTER TABLE student MODIFY COLUMN student_id CHAR(30);//修改列的类型

 

ALTER TABLE student DROP COLUMN student_id ;//删除列名

 

ALTER TABLE student CHANGE COLUMN student_age age INT(4);//修改列名

 

ALTER TABLE student CHANGE COLUMN age age VARCHAR(4);//修改age字段的类型(另一种方式)

 

数据库约束

NOT NULL非空

AUTO_INCREMENT 自增

PRIMARY KEY主键约束:不能重复,不能为空

UNIQUE 唯一约束:不能重复

 

------------------------------------------------------------------------------------------------------------------------------------

关系型数据库:主要是通过关系表的形式

 

非关系型数据库No SQL(Not only SQL):存储方式灵活,

 

 

DBMS:数据库管理系统

数据库系统:由数据库管理系统和...

 

MySQL:是一个DBMS(数据库管理系统)

关系模型:二维表模型

网络型的关系型模型:

Oracle 、DB2 、Sybase 、MySQL、MS SQL Server

 

 

对数据库层面进行操作:

cmd MySQL -uroot -p enter

自带的数据库

information_schema:保存着其他数据库的信息

mysql

test:(可以随意修改)

 

SQL结构化查询语言

 

查看 SHOW DATABASES [LIKE %或者_];

新建 CREATE DATABASE [IF NOT EXISTS] 数据库名;

CREATE DATABASE IF NOT EXISTS test1902;-- 创建数据库

 

USE test1902;-- 使用指定的数据库

 

根据数据类型分配内存空间

所占字节不同:所占内存不同,所表示范围不同

字符型:CHAR 定长字符串

VARCHAR 变长字符串

 

例如: CHAR(30)最多分配30,不满30也是30

VARCHAR(30)最多分配30,不满30,就按实际大小分配内存

 

 

CREATE TABLE student(

student_name VARCHAR(30),

student_age INT(4)

 

);

 

SHOW TABLES;-- 查看表

DROP TABLE 表名;--删除表

 

DESC student;--展示表

 

 

修改表中的字段

ALTER TABLE student ADD COLUMN student_id INT(10);//新增列名

 

ALTER TABLE student MODIFY COLUMN student_id CHAR(30);//修改列的类型

 

ALTER TABLE student DROP COLUMN student_id ;//删除列名

 

ALTER TABLE student CHANGE COLUMN student_age age INT(4);//修改列名

 

ALTER TABLE student CHANGE COLUMN age age VARCHAR(4);//修改age字段的类型(另一种方式)

 

数据库约束

NOT NULL非空

AUTO_INCREMENT 自增

PRIMARY KEY主键约束:不能重复,不能为空

UNIQUE 唯一约束:不能重复

FOREIGN KEY:外键

 

 

 

对数据库中的数据进行操作

单表操作

 

CREATE TABLE student(

s_id INT(4) PRIMARY KEY ,

s_name VARCHAR (10) NOT NULL,

s_math INT(4) NOT NULL,

s_english INT(4) NOT NULL

 

);

 

SELECT * FROM student;-- 查询表中所有字段数据

 

-- 添加一条语句

-- INSERT INTO 表名 (字段名1,字段名2...) VALUES (值1,值2...);

-- 添加多条语句

INSERT INTO student VALUES (1,'aa',98,86);

INSERT INTO student VALUES (2 ,'bb',98,86),(3,'cc',98,86),(4,'dd',98,86);

-- INSERT INTO 表名 (字段名1,字段名2...) VALUES (值1,值2...),(值1,值2...),(值1,值2...)...;

-- 删除数据

-- DELETE FROM student WHERE s_id=2;

-- DELETE FROM student; 删除整个表的所有数据,自动增长将在原来的值的基础上进行增长

DELETE FROM student WHERE s_id=2;

 

 

-- TRUNCATE TABLE student ; 清空指定表,清空后自动增长将不保留原来的值,从1开始

 

-- 修改(更新)

-- UPDATE student SET s_name='李强' ,s_math=98,s_english=86 WHERE s_id=2; 更新指定数据

 

SELECT *FROM student WHERE s_id=1;

 

SELECT s_id,s_name FROM student; -- 查询指定列的数据

 

SELECT s_id student_id,s_name student_name FROM student; -- 查询指定列,并为指定列去别名,翻译

 

SELECT *FROM student WHERE s_name='AA';-- 字符串,日期用单引号,对于大小写都可以查出来,原因:MySQL里面默认不区分大小写,要区分大小写要加约束

-- ALTER TABLE student CHANGE COLUMN s_name s_name VARCHAR (10) INERY;

ALTER TABLE student ADD COLUMN s_birthday DATE;

INSERT INTO student VALUES (5,'ee',99,100,'19990816'); -- 日期如果不转成特定格式,MySQL会自动转成连接符连接格式

 

SELECT * FROM student WHERE s_math<99; -- 查询数学成绩小于99的数据

 

SELECT * FROM student WHEREs_math BETWEEN 85 AND 90; -- 注意 [85,90] ,包含边界,查询数学成绩在85到90之间的

 

SELECT * FROM student WHERE s_id IN (1,3,5,7);

 

-- LIKE 模糊查询

-- SELECT*FROM student WHERE s_name LIKE '李%'; -- % 占多个(多个字符) , _ 占一个(一个字符)

-- SELECT*FROM student WHERE s_name LIKE '_强_'; -- 名字中间那个字为 强

 

-- 排序

SELECT * FROM student ORDER BY s_math DESC; -- ORDER BY 排序(默认升序ASC(ascond)), 指定降序用 DESC(descond)

 

 

 

-- 多表查询

-- 交叉连接 返回2个表的笛卡尔积

-- SELECT*FROM student,teacher;

-- 内连接 INNER JOIN ON(条件) 在交叉的结果中去寻找ON后面符合条件的行

-- SELECT *FROM student INNER JOIN teacher ON student.t_id =teacher.t_id;

-- 外连接 --左外连接 LEFT JOIN ON ---以左边的表为基准

-- SELECT *FROM teacher LEFT JOIN student ON teacher.t_id=student.t_id;

 

-- 右外连接 RIGHT JOIN ON --- 以右边的表为基准、

-- SELECT *FROM teacher RIGHT JOIN student ON teacher.t_id=student.t_id;

 

-- 子查询: 后一个查询的结果是前一个查询的条件

-- SELECT*FROM student LEFT JOIN teacher ON teacher.t_name LIKE '%王%' AND teacher.t_id=student.t_id;

-- SELECT s_name,t_name FROM student WHERE t_id IN (SELECT t_id FROM teacher WHERE t_name LIKE '%王%');

 

-- 聚和函数

-- SELECT MAX(s_math) max_math FROM student;

-- SELECT *FROM student WHERE s_math IN (SELECT MAX(s_math) max_math FROM student);//利用子查询,将数学成绩最高的学生信息查询出来

/*

AVG() 取平均值

MAX() 求最大值

MIN() 求最小值

COUNT() 有几行

SUM()返回某个列之和

*/

 

/* 分组查询

SELECT AVG(s_math) FROM student GROUP BY t_id HAVING t_id=1; -- GROUP BY ... HAVING 条件

SELECT GROUP_CONCAT (s_name) FROM student GROUP BY t_id HAVING t_id=1; -- 注意:后面接条件时,是用HAVING,而不是用WHERE

 

GROUP BY 有统计的作用

 

*/

 

 

JDBC

一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口

 

数据持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。

 

DriverManager驱动管理的类:把驱动加载到程序中来

Connection:连接

 

 

 

Driver接口:Java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。 由数据库厂商来实现

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值