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 驱动程序需要实现的接口。 由数据库厂商来实现