最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

数据库..

互联网 admin 30浏览 0评论

数据库..

数据库登陆和退出

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;

发布评论

评论列表 (0)

  1. 暂无评论