数据库..
数据库登陆和退出
Window键+r再输入cmd打开命令提示符。
登陆:mysql -u root -p回车,提示输入密码
mysql -u root -p密码 回车直接登陆
退出:quit或者exit。
SQL语句
什么是sql
sql(Structured Query Language):结构化查询语言
其实就是定义了操作所有关系型数据库的规则(规范)
sql通用语法
1.可以多行或单行书写,以分号结束。
2.可以使用空格或者制表符来格式化,优化代码结构
3.sql不区分大小写,关键字建议大写
4.注释
1.单行 --注释的内容 #注释的内容
2.多行 /* 注释 */
数据库和表的关系
一个数据库的服务器中有多个数据库
一个数据库中有多张表,每个表有多个字段,字段和Java中类的属性是一一对应的
表中每一条记录对应的是一个Java实例对象。
SQL语言分类
DDL:数据定义语言,可定义数据库对象:库、表、列等。create、drop、alter等。
DML:数据操作语言,定义数据库记录(数据);insert、delete、update等。
DCL:数据控制语言,定义访问权限和安全级别。
DQL:数据查询语言,查询(数据)。select、where等。
数据库概述
数据库(Database)DB,是按照数据结构来管理和存储数据的仓库。
数据库的特点:
持久化
方便管理和存储数据
使用统一的操作方式
数据库的分类
根据数据库中数据的关系来进行分类
相关数据库的基本操作
创建数据库
create database 数据库名
创建数据库并指定编码
create database test2 CHARACTER SET 'gbk'
查看所有数据库
show databaese;
# 查看数据库的创建语句
show create database 数据库名;
# 修改数据库的编码
ALTER DATABASE 数据库名 CHARACTER SET 'GBK'
# 删除数据库
DROP DATABASE test3;
# 切换数据库
use test1;
数据库的数据类型
将数据库中的数据存储到Java对象中
数据库的类型:VARCHAR --> Java中的类型:String
等等...
# 创建表
CREATE TABLE person(id INT,name VARCHAR(20)
);
# 查看表
SHOW TABLES;
# 查看指定的表
SHOW CREATE TABLE person;
# 查看表的详细信息
DESCRIBE newperson;
# 修改表名 newperson
#RENAME TABLE 旧表名 TO 新表名;
RENAME TABLE person TO newperson;
#修改字段名 将name 修改为newname
#ALTER TABLE 要改字段名的表名 CHANGE 旧字段名 新字段名 类型(长度) 约束;
ALTER TABLE newperson CHANGE name newname VARCHAR(30);
# 添加字段
#ALTER TABLE 表名 ADD 字段名 类型(长度) 约束;
ALTER TABLE newperson ADD birtday DATE;
# 删除字段
ALTER TABLE newperson DROP birtday;
#删除表
DROP TABLE newperson;
# 插入数据
#语法1
#INSERT INTO 表名(列名1,列名2) VALUES(值1,值2);
INSERT INTO person(id,newname) VALUES(1,'李四');
#语法2:不指定列名,按照表创建时的排序
INSERT INTO person VALUES(,'王五',3);
# 表的约束:维护数据完整性# 主键约束:给列唯一标识
# 创建表时就设置主键约束
CREATE TABLE student(id INT PRIMARY KEY,name VARCHAR(20)
);
# 主键是唯一的,不能为空
INSERT INTO student VALUES(1,'赵六')# 非空约束:添加了非空的列,该列不能为空
NOT NULL
CREATE TABLE student2(id INT PRIMARY KEY,name VARCHAR(20) NOT NULL
);
INSERT INTO student2 VALUES(1,'老李')# 唯一约束
CREATE TABLE student3(id INT PRIMARY KEY,name VARCHAR(20),idcard INT UNIQUE
);
INSERT INTO student3 VALUES(1,'赵六',123);
INSERT INTO student3 VALUES(2,'王五',321);# 外键约束
# 设置字段自动增长
# AUTO_INCREMENT
CREATE TABLE student4(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20)
);INSERT INTO student4(id,name) VALUES (NULL,'李四');
INSERT INTO student4(id,name) VALUES (NULL,'王五');# 给定起始值
CREATE TABLE student4(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20)
)AUTO_INCREMENT = 100;
测试类数据
# 准备测试数据
CREATE TABLE Student(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20),age INT,code INT,score INT
);
INSERT INTO Student VALUES(1,'李四',25,001,59.5)
INSERT INTO Student VALUES(2,'王五',26,002,75)
INSERT INTO Student VALUES(3,'赵六',27,003,80)
INSERT INTO Student VALUES(4,'田七',25,004,90.5)
INSERT INTO Student VALUES(NULL,'铁铲',25,null,50)
# 查询所有数据
SELECT *FROM student;
# 查询所有数据,打印指定的列
SELECT id FROM student;
更新
# 更新表中if字段值为1的记录,将记录中name字段的值改为"哈哈"
/*
UPDATE 表名
SET
列名1 = 值1,
列名2 = 值2,
WHERE 列名= 条件值
*/
UPDATE student SET name = '哈哈' WHERE id = 1;
# 更新某个表中id字段小于3的记录,将age字段值都更新为100
UPDATE student SET age = 100 WHERE id < 3;
# 更新表中所有的记录,将name字段值都改为"无名"
UPDATE student SET name = '无名';
删除
DELETE FROM 表名 WHERE 条件
#删除id为1的数据
DELETE FROM student WHERE id = 1;
# 删除id>5的数据
DELETE FROM student WHERE id < 5;
# 删除所有数据,方式一,延续使用之前的自动增长
DELETE FROM student;
# 删除所有数据,方式二:相当于删除这个表再重建这个表
TRUNCATE TABLE student;
测试类2
CREATE TABLE teacher(id INT ,name VARCHAR(20),age INT,code INT,score INT
);
INSERT INTO TEACHER VALUES(1,'李四',25,001,59.5)
INSERT INTO TEACHER VALUES(2,'王五',26,002,75)
INSERT INTO TEACHER VALUES(3,'赵六',27,003,80)
INSERT INTO TEACHER VALUES(4,'田七',25,004,90.5)
INSERT INTO TEACHER VALUES(NULL,'铁铲',25,null,50)
INSERT INTO TEACHER VALUES(NULL,'weida',25,null,50)
INSERT INTO TEACHER VALUES(NULL,'weidag',25,null,50)
*是通配符,显示所有列
条件查询
# 查询teacher表中id为4的教师的姓名
SELECT name FROM teacher WHERE id = 4;
#查询名称为赵六的教师信息
SELECT *FROM teacher WHERE name = '赵六';
IN关键字
# SELECT * FROM teacher WHERE id IN(条件1,条件2 ,...);
# 查询id值为1 2 3 的数据
SELECT * FROM teacher WHERE id IN(1,2,3);
#查询姓名是李四 王五的信息
SELECT * FROM teacher WHERE name IN('李四','王五');
# 查询不在指定范围内的记录,去除id为1、2、3 的记录
SELECT * FROM teacher WHERE id NOT IN(1,2,3);
BETWEEN AND 范围查询
# 查询id的值为2~5之间的学生姓名
SELECT * FROM teacher WHERE id BETWEEN 2 AND 5;
# 查询id的值不为2~5之间的学生姓名
SELECT * FROM teacher WHERE id NOT BETWEEN 2 AND 5;
空值查询
# 查询code为空的信息
SELECT * FROM teacher WHERE code IS NULL;
# 查询code不为空的信息
SELECT * FROM teacher WHERE code IS NOT NULL;
去除重复的值
# 查询sge 不重复的值(某列)
SELECT DISTINCT age FROM teacher;
# 查询sge 不重复的值(某行)
SELECT DISTINCT id,name,age,code,score FROM teacher;
Like
# 1.查询teacher表中name字段值以w开头的name值
SELECT * FROM teacher WHERE `name` LIKE 'weida';
# 2.查询teacher表中name字段以we开头,ong结尾,并且两个字符串中间只有两个字符串的记录。
like_ 一个下划线代表一个字符
SELECT * FROM teacher WHERE `name` LIKE 'we__ong';
like带%
%匹配任意长度的字符串
SELECT * FROM teacher WHERE `name` LIKE 'w%';
# 查询teacher表中name字段值以W开头并以g结尾的name值
SELECT * FROM teacher WHERE `name` LIKE 'w%g';
# 查询teacher表中name字段包含i字符的name值
SELECT * FROM teacher WHERE `name` LIKE '%i%';
AND 拼接多个条件,所有的条件必须满足
# 查询teacher表中id字段值小于5,并且age字段值为25的学生教师信息
SELECT * FROM teacher WHERE id < 5 AND age = 25;
OR连接的条件只需满足其中一个
# 查询teacher表中id字段值小于3,或者,age字段值为25的学生教师信息
SELECT * FROM teacher WHERE id < 3 OR age = 25;
聚合查询
#统计数据行数
# COUNT
SELECT COUNT(*) FROM teacher;# SUM 求和
SELECT SUM(code) FROM teacher;# AVG求平均值
SELECT AVG(age) FROM teacher;# max min 最大值 最小值
# 分数最高的人
SELECT MAX(score) FROM teacher;
SELECT MIN(score) FROM teacher;# 统计成绩大于60的教师有多少个?
SELECT COUNT(*) FROM teacher WHERE score > 60;# 统计一个班级年龄、成绩的和
SELECT SUM(age),SUM(score) FROM teacher;# 统计一个班级的平均年龄
SELECT SUM(age)/COUNT(*) FROM teacher;
排序ORDER BY
# asc 升序
# desc 降序
# 按照年龄升序排序
SELECT * FROM teacher ORDER BY age ASC;
# 按照年龄降序排序
SELECT * FROM teacher ORDER BY age DESC;
数据库..
数据库登陆和退出
Window键+r再输入cmd打开命令提示符。
登陆:mysql -u root -p回车,提示输入密码
mysql -u root -p密码 回车直接登陆
退出:quit或者exit。
SQL语句
什么是sql
sql(Structured Query Language):结构化查询语言
其实就是定义了操作所有关系型数据库的规则(规范)
sql通用语法
1.可以多行或单行书写,以分号结束。
2.可以使用空格或者制表符来格式化,优化代码结构
3.sql不区分大小写,关键字建议大写
4.注释
1.单行 --注释的内容 #注释的内容
2.多行 /* 注释 */
数据库和表的关系
一个数据库的服务器中有多个数据库
一个数据库中有多张表,每个表有多个字段,字段和Java中类的属性是一一对应的
表中每一条记录对应的是一个Java实例对象。
SQL语言分类
DDL:数据定义语言,可定义数据库对象:库、表、列等。create、drop、alter等。
DML:数据操作语言,定义数据库记录(数据);insert、delete、update等。
DCL:数据控制语言,定义访问权限和安全级别。
DQL:数据查询语言,查询(数据)。select、where等。
数据库概述
数据库(Database)DB,是按照数据结构来管理和存储数据的仓库。
数据库的特点:
持久化
方便管理和存储数据
使用统一的操作方式
数据库的分类
根据数据库中数据的关系来进行分类
相关数据库的基本操作
创建数据库
create database 数据库名
创建数据库并指定编码
create database test2 CHARACTER SET 'gbk'
查看所有数据库
show databaese;
# 查看数据库的创建语句
show create database 数据库名;
# 修改数据库的编码
ALTER DATABASE 数据库名 CHARACTER SET 'GBK'
# 删除数据库
DROP DATABASE test3;
# 切换数据库
use test1;
数据库的数据类型
将数据库中的数据存储到Java对象中
数据库的类型:VARCHAR --> Java中的类型:String
等等...
# 创建表
CREATE TABLE person(id INT,name VARCHAR(20)
);
# 查看表
SHOW TABLES;
# 查看指定的表
SHOW CREATE TABLE person;
# 查看表的详细信息
DESCRIBE newperson;
# 修改表名 newperson
#RENAME TABLE 旧表名 TO 新表名;
RENAME TABLE person TO newperson;
#修改字段名 将name 修改为newname
#ALTER TABLE 要改字段名的表名 CHANGE 旧字段名 新字段名 类型(长度) 约束;
ALTER TABLE newperson CHANGE name newname VARCHAR(30);
# 添加字段
#ALTER TABLE 表名 ADD 字段名 类型(长度) 约束;
ALTER TABLE newperson ADD birtday DATE;
# 删除字段
ALTER TABLE newperson DROP birtday;
#删除表
DROP TABLE newperson;
# 插入数据
#语法1
#INSERT INTO 表名(列名1,列名2) VALUES(值1,值2);
INSERT INTO person(id,newname) VALUES(1,'李四');
#语法2:不指定列名,按照表创建时的排序
INSERT INTO person VALUES(,'王五',3);
# 表的约束:维护数据完整性# 主键约束:给列唯一标识
# 创建表时就设置主键约束
CREATE TABLE student(id INT PRIMARY KEY,name VARCHAR(20)
);
# 主键是唯一的,不能为空
INSERT INTO student VALUES(1,'赵六')# 非空约束:添加了非空的列,该列不能为空
NOT NULL
CREATE TABLE student2(id INT PRIMARY KEY,name VARCHAR(20) NOT NULL
);
INSERT INTO student2 VALUES(1,'老李')# 唯一约束
CREATE TABLE student3(id INT PRIMARY KEY,name VARCHAR(20),idcard INT UNIQUE
);
INSERT INTO student3 VALUES(1,'赵六',123);
INSERT INTO student3 VALUES(2,'王五',321);# 外键约束
# 设置字段自动增长
# AUTO_INCREMENT
CREATE TABLE student4(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20)
);INSERT INTO student4(id,name) VALUES (NULL,'李四');
INSERT INTO student4(id,name) VALUES (NULL,'王五');# 给定起始值
CREATE TABLE student4(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20)
)AUTO_INCREMENT = 100;
测试类数据
# 准备测试数据
CREATE TABLE Student(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(20),age INT,code INT,score INT
);
INSERT INTO Student VALUES(1,'李四',25,001,59.5)
INSERT INTO Student VALUES(2,'王五',26,002,75)
INSERT INTO Student VALUES(3,'赵六',27,003,80)
INSERT INTO Student VALUES(4,'田七',25,004,90.5)
INSERT INTO Student VALUES(NULL,'铁铲',25,null,50)
# 查询所有数据
SELECT *FROM student;
# 查询所有数据,打印指定的列
SELECT id FROM student;
更新
# 更新表中if字段值为1的记录,将记录中name字段的值改为"哈哈"
/*
UPDATE 表名
SET
列名1 = 值1,
列名2 = 值2,
WHERE 列名= 条件值
*/
UPDATE student SET name = '哈哈' WHERE id = 1;
# 更新某个表中id字段小于3的记录,将age字段值都更新为100
UPDATE student SET age = 100 WHERE id < 3;
# 更新表中所有的记录,将name字段值都改为"无名"
UPDATE student SET name = '无名';
删除
DELETE FROM 表名 WHERE 条件
#删除id为1的数据
DELETE FROM student WHERE id = 1;
# 删除id>5的数据
DELETE FROM student WHERE id < 5;
# 删除所有数据,方式一,延续使用之前的自动增长
DELETE FROM student;
# 删除所有数据,方式二:相当于删除这个表再重建这个表
TRUNCATE TABLE student;
测试类2
CREATE TABLE teacher(id INT ,name VARCHAR(20),age INT,code INT,score INT
);
INSERT INTO TEACHER VALUES(1,'李四',25,001,59.5)
INSERT INTO TEACHER VALUES(2,'王五',26,002,75)
INSERT INTO TEACHER VALUES(3,'赵六',27,003,80)
INSERT INTO TEACHER VALUES(4,'田七',25,004,90.5)
INSERT INTO TEACHER VALUES(NULL,'铁铲',25,null,50)
INSERT INTO TEACHER VALUES(NULL,'weida',25,null,50)
INSERT INTO TEACHER VALUES(NULL,'weidag',25,null,50)
*是通配符,显示所有列
条件查询
# 查询teacher表中id为4的教师的姓名
SELECT name FROM teacher WHERE id = 4;
#查询名称为赵六的教师信息
SELECT *FROM teacher WHERE name = '赵六';
IN关键字
# SELECT * FROM teacher WHERE id IN(条件1,条件2 ,...);
# 查询id值为1 2 3 的数据
SELECT * FROM teacher WHERE id IN(1,2,3);
#查询姓名是李四 王五的信息
SELECT * FROM teacher WHERE name IN('李四','王五');
# 查询不在指定范围内的记录,去除id为1、2、3 的记录
SELECT * FROM teacher WHERE id NOT IN(1,2,3);
BETWEEN AND 范围查询
# 查询id的值为2~5之间的学生姓名
SELECT * FROM teacher WHERE id BETWEEN 2 AND 5;
# 查询id的值不为2~5之间的学生姓名
SELECT * FROM teacher WHERE id NOT BETWEEN 2 AND 5;
空值查询
# 查询code为空的信息
SELECT * FROM teacher WHERE code IS NULL;
# 查询code不为空的信息
SELECT * FROM teacher WHERE code IS NOT NULL;
去除重复的值
# 查询sge 不重复的值(某列)
SELECT DISTINCT age FROM teacher;
# 查询sge 不重复的值(某行)
SELECT DISTINCT id,name,age,code,score FROM teacher;
Like
# 1.查询teacher表中name字段值以w开头的name值
SELECT * FROM teacher WHERE `name` LIKE 'weida';
# 2.查询teacher表中name字段以we开头,ong结尾,并且两个字符串中间只有两个字符串的记录。
like_ 一个下划线代表一个字符
SELECT * FROM teacher WHERE `name` LIKE 'we__ong';
like带%
%匹配任意长度的字符串
SELECT * FROM teacher WHERE `name` LIKE 'w%';
# 查询teacher表中name字段值以W开头并以g结尾的name值
SELECT * FROM teacher WHERE `name` LIKE 'w%g';
# 查询teacher表中name字段包含i字符的name值
SELECT * FROM teacher WHERE `name` LIKE '%i%';
AND 拼接多个条件,所有的条件必须满足
# 查询teacher表中id字段值小于5,并且age字段值为25的学生教师信息
SELECT * FROM teacher WHERE id < 5 AND age = 25;
OR连接的条件只需满足其中一个
# 查询teacher表中id字段值小于3,或者,age字段值为25的学生教师信息
SELECT * FROM teacher WHERE id < 3 OR age = 25;
聚合查询
#统计数据行数
# COUNT
SELECT COUNT(*) FROM teacher;# SUM 求和
SELECT SUM(code) FROM teacher;# AVG求平均值
SELECT AVG(age) FROM teacher;# max min 最大值 最小值
# 分数最高的人
SELECT MAX(score) FROM teacher;
SELECT MIN(score) FROM teacher;# 统计成绩大于60的教师有多少个?
SELECT COUNT(*) FROM teacher WHERE score > 60;# 统计一个班级年龄、成绩的和
SELECT SUM(age),SUM(score) FROM teacher;# 统计一个班级的平均年龄
SELECT SUM(age)/COUNT(*) FROM teacher;
排序ORDER BY
# asc 升序
# desc 降序
# 按照年龄升序排序
SELECT * FROM teacher ORDER BY age ASC;
# 按照年龄降序排序
SELECT * FROM teacher ORDER BY age DESC;