MySql数据库学习(一)

MySql数据库学习(一)

mySQL (关系型数据库管理系统)

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。

MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。

  • MYSQL的SQL语句
    SQL:Structure Query Language结构化查询语言
    DDL:数据定义定义语言:定义与数据库/表结构:create(创建)drop(删除) alter(修改)
    DML:数据操纵语言:主要是用来操作表数据 insert(插入) update(修改) delete(删除)
    DCL:数据控制语言:定义访问权限,取消访问权限,安全设置 grant
    DQL:数据查询语言:select(查询) from子句 where子句

1. 数据库的CRUD的操作

  • 首先要登录数据库服务器:mysql -uroot -proot

创建数据库

create database 数据库名字
create database day01;

--创建数据库的时候,指定字符集
create database 数据库的名字 character set 字符集;
create database day01_1 character set utf-8;

create database 数据库的名字 character set 字符集 collate 校对规则;
create database day01_2 character set utf-8 collate utf8_bin;

查看数据库

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

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

informartion_schema
performance_schema
mysql

修改数据库的操作

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

删除数据库

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

drop database test;

其他数据库操作命令

--切换数据库(选中数据库)
use 数据库的名字
use day01;
--查看一下当前正在使用的数据库
select database();

2. 表的CRUD操作

创建表

create database 数据库的名字;

create table 表名(
	列名 列的类型(长度) 约束,
	列名2 列的类型(长度) 约束,
);



列的类型:
java          sql       
int           int
char/string   char/varchar
			  char : 固定长度
			  varchar : 可变长度
			  char3)    一    一空格空格
			  varchar3) 一    一
			  长度代表的是字符的个数
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(31),
	sex int,
	age int
);
 			 		  

查看表

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

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

添加列(addalter table 表名 add 列名 列的类型 列的约束
alter table student add chengji int not null;

修改列(modifyalter table student modify sex varchar(2);
修改列名(change)
alter table student change sex gender varchar(2);
删除列(dorp)
alter table student drop chengji;

修改表名(renamerename table student to studenttable;
修改表的字符集
alter table studenttable character set gbk;

删除表

drop table studenttable;

Sql完全对表中的数据的CRUD的操作:
插入数据

insert into 表名(列名1,列名2,列名3values(值1,2,3; 

--简单写法:如果插入式全列名的数据,表名后面的列名可以省略
insert into 表名 values(1,2,3);
insert into student values(2,'zhangsan',1,23);

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

--插入批量数据:
insert into student(sid,sname,sex,age) values
(1,'zhangsan',1,23),
(2,'zhangsan',1,23),
(3,'zhangsan',1,23),
(4,'zhangsan',1,23),
(5,'zhangsan',1,23),
(6,'zhangsan',1,23);

--单条插入和批量插入的效率
  看插入的数据多少,多的话就是批量插入的效率高

--查看表的数据
select * from student;

命令行下插入中文问题:insert into student values(10,‘李四’,1,23);

  • 临时解决方案:set names gbk;相当于是高速mysql服务器软件,我们当前在命令行下输入的内容是GBK编码,当命令行窗口关闭之后,他在输入中文就会存在问题。
  • 永久解决办法:修改my.ini配置(在mysql软件安装路径里)
    1.暂停mysql的服务
    2.在mysql安装路径中找到my.ini配置文件;C:\Program Files\MySql Server 5.5
    3.将57行的编码改成gbk
    4.保存文件退出
    5.启动mysq服务

删除表记录

delete from 表名 [ where 条件 ]

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

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

更新表记录

update 表名 set 列名=列的值,列名=列的值2 [ where 条件]
  --将sid为5的名字改成李四
  --如果参数是字符串,日期要加上单引号
  update student set sname = ‘李四’ where sid = 5;


  update 表名 set 列名=列名值,列名2=列的值2 [ where 条件]
  
  update student set sname ='王五',sex='1';
  update student set sname ='赵六',sex='0' where sid=6;

查询记录

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,'手机数码','kk电子产品,kk生产');
insert into category values(null,'鞋子书包','kk皮鞋厂,kk生产');
insert into category values(null,'香烟酒水','kk酒水,kk生产');
insert into category values(null,'零食饼干','kk哇哈哈哈,kk生产');
insert into category values(null,'零食辣条','kk威龙,kk生产');

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

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

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

insert into product values(null,'小米9',998,null,1);
insert into product values(null,'1+',2888,null,1);
insert into product values(null,'阿迪达斯',99,null,2);
insert into product values(null,'老村长',88,null,3);
insert into product values(null,'劲酒',35,null,3);
insert into product values(null,'小熊饼干',1,null,4);
insert into product values(null,'威龙辣条',1,null,5);
insert into product values(null,'小辣条',1,null,5);

--简单查询:
---查询所有的商品:
	select * from product;
---查询商品名称和商品价格:
	select pname,price from product;
	
---别名查询 as 的关键字, as 关键字是可以省略的
	--表别名: select p.pname ,p.price from product p;(主要是用在多表查询);
	select p.pname,p.price from product as p;
	--列别名: select pname as 商品名称 ,price as 商品价格 from product;
	select pname as 商品名称,price as 商品价格 from product;
	省略as关键字
	select pname 商品名称,price 商品价格 from product;

---去掉重复的值
	--查询商品所有的价格
	select price from product;
	select distinct price from product;

--select 运算查询 : 仅仅在查询结果上做了运算 + - * /
 select *,price*1.5 from product;
 select *,price*1.5 as el折后价 from product;

 select *,price*0.9 from product;

--调价查询 [ where 关键字]
	指定条件,确定要操作的记录

--查询商品价格>60元的所有商品信息
select * from product where price > 60 ;

--where 后的条件写法:
	--关系运算符: >  >=  <   <=   =  !=  <>
	<> : 不等于  :标准SQL语法
	!= : 不等于  : 非标准SQL语法
	--查询商品价格不等于88的所有商品:
	select * from product where price <> 88;
	select * from product where price != 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
	
	--查询出商品价格 小于100 或者商品价格 大于900
    select * from product where price <35 or price >900;

	--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 price
	
	--1.查询所有的商品,按价格进行降序排序(asc -升序  desc-降序);
	select * from product order by price desc;

	--2.查询名称有 小 的商品,按价格降序排序
		1.查询名称有 小 的商品
		select * from product where pname like '%小%';
		2.进行排序得出结果
		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(price) from product;
	
	select * from product where price > (select avg(price) from product);


--分组 :group by
	
	--1.根据cno 字段分组,分组后统计商品的个数
	select cno ,count(*) from product group by cno;

	--2.根据cno 分组,分组统计每组商品的平均价格 并且商品平均价格 > 60
	select cno,avg(price)
	from product group by cno
	having avg(price) > 60;
	
	--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
	

  • 20
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
机器学习是一种人工智能(AI)的子领域,致力于研究如何利用数据和算法让计算机系统具备学习能力,从而能够自动地完成特定任务或者改进自身性能。机器学习的核心思想是让计算机系统通过学习数据中的模式和规律来实现目标,而不需要显式地编程。 机器学习应用非常广泛,包括但不限于以下领域: 图像识别和计算机视觉: 机器学习在图像识别、目标检测、人脸识别、图像分割等方面有着广泛的应用。例如,通过深度学习技术,可以训练神经网络来识别图像中的对象、人脸或者场景,用于智能监控、自动驾驶、医学影像分析等领域。 自然语言处理: 机器学习在自然语言处理领域有着重要的应用,包括文本分类、情感分析、机器翻译、语音识别等。例如,通过深度学习模型,可以训练神经网络来理解和生成自然语言,用于智能客服、智能助手、机器翻译等场景。 推荐系统: 推荐系统利用机器学习算法分析用户的行为和偏好,为用户推荐个性化的产品或服务。例如,电商网站可以利用机器学习算法分析用户的购买历史和浏览行为,向用户推荐感兴趣的商品。 预测和预测分析: 机器学习可以用于预测未来事件的发生概率或者趋势。例如,金融领域可以利用机器学习算法进行股票价格预测、信用评分、欺诈检测等。 医疗诊断和生物信息学: 机器学习在医疗诊断、药物研发、基因组学等领域有着重要的应用。例如,可以利用机器学习算法分析医学影像数据进行疾病诊断,或者利用机器学习算法分析基因数据进行疾病风险预测。 智能交通和物联网: 机器学习可以应用于智能交通系统、智能城市管理和物联网等领域。例如,可以利用机器学习算法分析交通数据优化交通流量,或者利用机器学习算法分析传感器数据监测设备状态。 以上仅是机器学习应用的一部分,随着机器学习技术的不断发展和应用场景的不断拓展,机器学习在各个领域都有着重要的应用价值,并且正在改变我们的生活和工作方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值