MySQL数据库/表/表中内容的增删改查(通过命令行)

数据库概述:

  • 什么是数据库

    • 数据库就是一个文件系统,只不过我们需要通过命令(SQL)来进行操作

    • 数据库,简而言之可视为电子化文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。

      所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合

  • 数据库的作用

    • 储存数据,数据的仓库,带有访问权限限制不同人可以有不同的操作
  • 为什么要学习数据库

    • 网站前台交互所需的数据的存储、读取、修改、查询;用户注册、登录、账户(订单、余额等)

    • 操作的都是后台数据,取到后台数据进行封装,然后交给前端去实现

常见的数据库:

​ mysql: 开源免费的适用于中小型企业的免费数据库,sun收购了mysql,sun公司被oracle收购,oracle收购后开始收费了

​ mariadb: 由mysql创始人搞出来的,直接是mysql开源版本的一个分析,基本上所有的命令都是一样的

​ oracle: 甲骨文公司,商业软件,收费软件,使用与大型电商网站,收购了sun,拥有了java,安卓用java开发但修改了虚拟机(java虽开源但不允许修改虚拟机,google修改优化了虚拟机,使其可以跑在手机上)

​ db2: IBM公司,thinkpad,解决方案:软件和硬件,服务器架构,银行系统大多采用是db2

​ sqlserver: windows里面,政府网站,asp.net,并且大学通常都是SQLserver. 图形化工具做的不错

​ sybase: 被淘汰的,

​ NOSQL非关系型数据库:key: value

​ mongodb:

​ redis: 最简单的,set get就可以设置获取数据,一般作为缓存,将数据直接存在内存中,可以去做持久 化,也可以不做持久化,运行效率高,但对机器的内存要求也比较高

常见的关系型数据库和非关系型数据及其区别

关系型数据库:

​ 主要是用来描述实体与实体之间关系

​ 实实在在存在的事物:男生和女生 学生和班级 员工和部分

​ E-R关系图:要求必须得会画

​ 实体:方框

​ 属性:椭圆

​ 关系:菱形

MYSQL数据库服务器

​ MYSQL数据库:数据库管理软件

​ 服务器:就是一台电脑,安装了相关的服务器软件,这些软件会监听不同的端口号,根据用户访问的端口号提供不同的服务

MYSQL的安装和卸载

  • 卸载:

    打开控制面板,删除软件

    删除安装目录下的所有文件:C:\Program Files\MySQL
    
    删除mysql数据存放文件:隐藏文件夹 ProgramData
    
  • 安装:

    • 运行安装程序:再启动配置教程之前,一路下一步,没有下一步的话就直接finish
    • 死一次finish之后启动服务器配置教程Wizard
    • include myql bin directory to windows path
    • 端口号不要修改,字符集要选择UTF8,密码不要忘记了
    • 附录文档:重置Root密码.txt、MySQL安装图解.doc

MYSQL的 SQL语句

​ SQL: Structure Query Language 结构化查询语言

DDL:数据定义语言:定义数据库、数据表的结构;指令:create(创建) drop(删除) alter(修改) 

DML:数据操纵语言:主要是用来操作数据 insert(插入) update(修改) delete(删除)

​ DCL:数据控制语言:定义访问权限,取消访问权限,安全设置 grant

DQL:数据查询语言:select(查询) from字句 where字句

数据库的CRUD的操作

CRUD是指在做计算处理时的增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete)几个单词的首字母简写。主要被用在描述软件系统中DataBase或者持久层的基本操作功能。

CRUD说的就是增查改删
C:Create 增加对应CREATE TBL …; ADD TBL IN (…) VALUES (…)
R:Retrieve查询SELECT * from TBL
U:Update修改UPDATE TBL …SET …
D:Delete删除 DELETE FROM TBL WHERE …

  • 首先要登录数据库服务器:mysql -uroot -p你的密码

创建数据库

create database 数据库的名字
create database day06;

create database 数据库的名字 character set 字符集;
create database day06_1 character set utf8;

create database 数据库的名字 character set 字符集 collate 校对规则;
create database day06_2 character set utf8 collate utf8_bin;

查看数据库

-- 查看数据库定义的语句
show create database 数据库的名字
show create database day06;
show create database day06_2;

-- 查看所有数据库
show databases;

注意不要删除一下项:
information_schema
performance_schema
mysql

在这里插入图片描述
在这里插入图片描述

修改数据库的操作

-- 修改数据的字符集
alter database 数据库的名字 character set 字符集;
alter database day06_1 character set gbk;

删除数据库

drop database 数据库的名字;
drop database day06_2;

其他数据库操作命令

-- 切换数据库(选中数据库)
use 数据库名字
use day06;

-- 查看一下当前正在使用的数据库(实际上是调用的函数)
select database();

表的CRUD操作

创建表

create database 数据库的名字
create table 表名(
	列名 列的类型 约束,
    列名2 列的类型 约束
);
-- 列的类型:
java  	sql
int  	int
char 	char
string	varchar
	    char:固定长度
	    varchar:可变长度
	    char(3)1空格空格
	    varchar(3): 1
	    长度代表字符的个数,不代表字节大小。比如char(3)可以存3个utf8字符,占9个字节
double   double
float	 float
boolean	 boolean
date	 date: YYYY-MM-DD
		 time: hh:mm:ss
		 datetime : YYYY-MM-DD hh:mm:ss 默认值是null
		 timestamp: YYYY-MM-DD hh:mm:ss 默认使用当前时间
		 text: 主要存放文本
		 blob : 存放的是二进制
		 
-- 列的约束:
	主键约束:primary key
	唯一约束:unique
	非空约束:not null
	
-- 创建表:
	1. 分析实体:学生
	2. 学生ID
	3. 姓名
	4. 性别
	5. 年龄
create table student(
	sid int primary key,
	sname varchar(10),
	sex int,
	age int
);

查看表

-- 查看表
	show tables;
-- 查看表的定义
	show create table student; 
-- 查看表的结构
	desc student;

修改表

添加列(add),修改列(modify),修改列名(change),删除列(drop),修改表名(rename),修改表的字符集

-- 添加列(add)
alter table 表名 	  add 	列名     列的类型    列的约束;
alter table student add   chengji  int        not null;
-- 修改列(modify)
alter table 表名	  modify 列名 列的类型;
alter table student modify sex varchar(2);

-- 修改列名(change)
alter table 表名	  change 原列名 新列名 列的类型;
alter table student change sex gender varchar(2);

-- 删除列(drop)
alter table 表名	  drop 列名;
alter table student drop chengji;

-- 修改表名(rename),一般不要改动,不然用到表名的其他代码也要修改
alter table 原表名	to 新表名;
rename table student to heima;

-- 修改表的字符集,一般不要改动
alter table 原表名	character set 字符集;
alter table heima character set gbk;

删除表

drop table heima;

Sql完成对表中数据的CRUD的操作

插入数据(DML语言)

insert into 表名(列名1,列名2,列名3) values(1,2,3);
insert into heima(sid,sname,gender,age,chengji) values(1,'zhangsan','b',23,100);
-- 简单写法,如果插入的是全列名的数据,表名后面的列名可以省略
insert into 表名  values(1,2,3);
insert into heima values(1,'zhangsan','b',23,100); --由于sid为主键约束,所以不sid不能有重复的
insert into heima values(2,'zhangsan','b',23,100);

-- 如果插入的部分列的话,列名不能省略
insert into heima(sid,sname,chengji) values(3,'lisi',99);
insert into values(3,'lisi',99);-- 这种写法是错误的

-- 批量插入
insert into heima values
	(4,'wangwu','b',23,100),
	(5,'zhaoliu','b',23,100),
	(6,'sunqi','b',23,100),
	(7,'guoba','b',23,100);
	
-- 单条插入和批量插入的效率


-- 查看表中的数据
select * from heima;

在这里插入图片描述

删除数据

delete from 表名 [where 条件]

delete from student where sid=10;
delete from student; 如果没有指定条件 会将表中数据一条一条全部删除掉

-- 面试问题:请说一下 delete删除数据和 truncate删除数据有什么差别
delete: DML 一条一条删除表中的数据
truncate: DDL先删除表再重建表
关于哪条执行效率较高:具体要查看表中的数据量
	如果数据比较少,delete比较高效
	如果数据比较多,truncate比较高效
	

更新表记录

update 表名 set 列名=列的值,列名2=列的值2 [where 条件]
-- 将sid为5的名字改成李四
-- 如果参数是字符串,要加上单引号
update heima set sname='lisi' where sid=5;
-- 如果where的条件判断为sid=0,则会将表中所有数据更新
update heima set sname='lisi' where sid=0;

查询记录

创建要使用的表

select [distinct][*][列名,列名2] from 表名 [where 条件]
distinct:去除重复的数据

-- 商品分类:手机数码,鞋靴箱包
1.分类的ID
2.分类名称
3.分类描述
create table category(
	cid int primary key auto_increment,
    cname varchar(10),
    cdesc varchar(31)
);

insert into category values(null, '手机数码', '电子产品');
insert into category values(null, '鞋靴箱包', '江南皮革厂,倾情打造');
insert into category values(null, '香烟酒水', '哈哈哈');
insert into category values(null, '酸奶饼干', '哈哈哈');
insert into category values(null, '馋嘴零食', '哈哈哈');

select * from category;
select cname,cdesc from category;

-- 所有商品
1.商品ID
2.商品名称
3.商品价格
4.生产日期
5.有效期
6.商品分类ID

商品和商品分类:所属关系
create table product(
	pid int primary key auto_increment,
    pname varchar(10),
    pprice double,
    pdate timestamp,
    pdate_end timestamp,
    cno int
); 

insert into product values(null,'小米mix4',998,null,null,1);
insert into product values(null,'锤子',2888,null,null,1);
insert into product values(null,'阿迪王',99,null,null,2);
insert into product values(null,'茅台',998,null,null,3);
insert into product values(null,'奥利奥',8,null,null,4);
insert into product values(null,'辣条',3,null,null,5);



 	
 	

简单查询

-- 简单查询:
-- -查询所有商品:
	select * from product;
-- -查询商品名称和商品价格:
	select pname,pprice from product;
	
-- -别名查询. as 的关键字, as 关键字可以省略
	--表别名:select p.pname,p.pprice from product as p;(主要用在多表查询);
	--列别名:select pname as 商品名称,pprice as 商品价格 from product;
	省略as关键字
	select pname 商品名称,pprice 商品价格 from product;
-- -去掉重复的值
	-- 查询商品所有的价格
	select pname from product;
	select distinct pname from product;
	
-- select运算查询,并没有修改数据库,仅仅在查询结果上做了运算
	select *,pprice*1.5 from product; 多了一列price*1.5
	select *,pprice*1.5 as 折后价 from product; 给列price*1.5一个别名
	select *,pprice*0.8 as8折后价 from product;

条件查询

-- 条件查询 [where关键字]
	指定条件,确定要操作的记录
	
-- 查询商品的价格>60的所有商品信息
	select * from product where pprice > 60;

-- -where 后的条件写法
	-- 关系运算符 > >= < <= = != <>
	<> : 不等于:标准SQL语法
	!= :不等于:非标准SQL语法
	-- 查询商品价格不等于88的所有商品
	select * from product where pprice <> 88;
	-- 查询商品价格在10到100之间
	select * from product where price > 10 and price < 100;
	between...and...
	select * from product where price between 10 and 100;
	-- 逻辑运算:and,or, not
	-- like:模糊查询
		_ :代表的是一个字符
		% :代表的是多个字符
		-- 查询出名字中带有饼的所有商品 '%饼%'
		select * from product where pname like '%饼%'
		-- 查询第二名字是熊的所有商品 '_熊%'
    	select * from product where pname like '_熊%'
    -- in 在某个范围内获得值
    	-- 查询出商品分类ID在1,4,5里面的所有商品
    	select * from product where cno in (1,4,5)

排序查询

 -- 排序查询:order by 关键字
 	asc:ascend 升序(默认的排序方式)
 	desc:descend 降序
 	-- 0.查询所有商品,按照价格进行排序
 	select * from product order by pprice;
 	-- 1.查询所有的商品,按价格进行降序排序(asc-升序 desc-降序)
 	select * from product order by pprice desc;
 	-- 2.查询名称有 小 的商品,按价格降序排序
 		1.查询名称有小的商品
 		select * from product where pname like '%小%';
 		select * from product where pname like '%小%' order by price asc;

聚合函数

 -- 聚合函数:
 	sum() : 求和
 	avg():求平均值
 	count():统计数量
 	max():最大值
 	min():最小值
 	-- 1.获得所有商品价格的总和
 	select sum(price) from product;
 	-- 2.获取所有商品的平均价格:
 	select avg(price) from product;
 	-- 3.获取所有商品的个数:
 	select count(*) from product;
 	-- 注意:where后面不能接聚合函数
 	select * from product where price > avg(price);
 	
 	-- 查出商品价格大于平均价格的所有商品
 	查出所有商品
 	select * from product;
 	大于
 	平均价格
 	select avg(pprice) from product;
 	-- 字查询
 	select * from product where pprice > (select avg(pprice) from product);
 	

分组 group by

 -- 分组:group by
 	-- 1. 根据cno字段分组,分组后统计商品的个数
 	select cno,count(*) from product group by cno;
 	
 	-- 2.根据cno分组,分组后统计每组商品的平均价格 并且商品平均价格 > 60
 	select cno,avg(pprice)
 	from product group by cno
 	having avg(pprice)>80;
 	
 	-- having关键字 可以接聚合函数 出现在分组之后!!!
 	-- where关键字 不可以接觉和函数,出现在分组之前!!!
 	

关键字的编写顺序、执行顺序

 -- 编写顺序
 -- S..F..W..G..H..O
 	select .. from .. where .. group by .. having .. order by
 	
 -- 执行顺序
 	F..W..G..H..S..O
 	from .. where .. group by .. having .. select .. order by
 	-- from 只有得到表,才能进行后续工作
 	-- where 进行条件判断,之后还是一张表
 	-- group by 对其进行分组
 	-- having 条件筛选
 	-- select 控制显示
 	-- order by显示的结果进行一下排序
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以提供一个简单的实现数据库增删改查的项目示例。 首先,我们需要选择一个数据库管理系统(DBMS),例如 MySQL、PostgreSQL 或者 MongoDB。在本示例中,我们将使用 MySQL。 接下来,我们需要创建一个数据库和一个数据。我们可以使用 MySQL 命令行或者 GUI 工具,例如 MySQL Workbench 来创建。 创建数据库: ```sql CREATE DATABASE mydatabase; ``` 创建数据: ```sql CREATE TABLE users ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30) NOT NULL, email VARCHAR(50) NOT NULL ); ``` 现在我们已经创建好了数据库数据,接下来我们需要编写一个连接数据库的脚本。在本示例中,我们将使用 Node.js 和 `mysql2` 模块来连接和操作 MySQL 数据库。 ```javascript const mysql = require('mysql2'); // 创建连接 const connection = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'mydatabase' }); // 连接数据库 connection.connect((err) => { if (err) throw err; console.log('Connected to MySQL database!'); }); // 查询数据 connection.query('SELECT * FROM users', (err, results, fields) => { if (err) throw err; console.log(results); }); // 关闭连接 connection.end((err) => { if (err) throw err; console.log('Disconnected from MySQL database!'); }); ``` 接下来,我们可以编写一个函数来实现增删改查操作: ```javascript // 插入数据 function createUser(name, email) { const sql = `INSERT INTO users (name, email) VALUES ('${name}', '${email}')`; connection.query(sql, (err, result) => { if (err) throw err; console.log(`User ${name} has been created!`); }); } // 更新数据 function updateUser(id, name, email) { const sql = `UPDATE users SET name='${name}', email='${email}' WHERE id=${id}`; connection.query(sql, (err, result) => { if (err) throw err; console.log(`User ${name} has been updated!`); }); } // 删除数据 function deleteUser(id) { const sql = `DELETE FROM users WHERE id=${id}`; connection.query(sql, (err, result) => { if (err) throw err; console.log(`User with ID ${id} has been deleted!`); }); } // 查询数据 function getUsers() { const sql = 'SELECT * FROM users'; connection.query(sql, (err, results, fields) => { if (err) throw err; console.log(results); }); } ``` 现在,我们可以在脚本中调用这些函数来实现增删改查操作: ```javascript // 创建用户 createUser('John Doe', '[email protected]'); // 更新用户 updateUser(1, 'Jane Doe', '[email protected]'); // 删除用户 deleteUser(1); // 查询用户 getUsers(); ``` 这就是一个简单的实现数据库增删改查的项目示例。当然,实际的项目中需要考虑更多的安全性和性能问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值