MySQL-Day01回顾
1、MySQL特点
1、关系型数据库
** 表和表之间的逻辑关联叫关系
** 关系型数据库的核心内容是 关系 即 二维表
2、跨平台
3、支持多种编程语言
2、启动和连接
1、启动
sudo /etc/init.d/mysql start stop restart status
2、连接
mysql -u用户名 -p密码
3、SQL命令的使用规则
** SQL命令不区分字母大小写
4、库的管理
1、查看库 :show databases;
2、创建库 :create database 库名;
3、切换库 :use 库名;
4、查看表 :show tables;
5、删除库 :drop database 库名;
6、查看所在库 :select database();
7、库的命名规则
** 库名区分字母大小写
5、表的管理
1、创建表 :create table 表名(字段名 数据类型);
2、查看表结构 :desc 表名;
3、插入记录 :insert into 表名 values(值1),(值2);
4、查询记录 :select * from 表名;
5、删除表 :drop table 表名;
6、客户端把数据存储到数据库服务器上的过程
1、连上数据库
2、选择库
3、创建表|修改表
4、断开连接 exit | quit | \q
7、名词
DB DBMS DBS
** ER模型:实体关系模型
ER模型图 --> 学生选课:学生信息 课程 教师
8、数据类型
1、数值类型
1、整型
1、int(生产中常用的)
2、tinyint
有符号(默认)
无符号:unsigned
2、浮点型
1、float(m,n)
2、doubule(m,n)
3、decimal(M,D)
2、字符类型
1、char (性能高,浪费存储空间,生产中常用)
2、varchar (性能低,节省存储空间)
3、数值类型宽度和char宽度的区别
1、数值类型:显示宽度 zerofill,和存储无关
2、char:实际占用存储空间的字节数
3、枚举类型
1、单选 :enum('','','')
2、多选 :set('','','','') "值1,值2,..."
4、日期时间类型
1、year : YYYY
2、date : YYYYMMDD
3、time : HHMMSS
4、datetime : YYYYMMDDHHMMSS
9、设置字符编码
1、查看表的字符编码 :show create table 表名;
2、给表指定字符编码 :
create table 表名(字段名 类型)default charset=utf8;
3、给库指定字符编码
create database 库名 default charset = utf8;
10、表字段操作
语法:alter table 表名
1、删除字段 :alter table 表名 drop 字段名;
2、增加字段 :
alter table 表名 add 字段名 数据类型 first | after 字段名;
3、修改字段的数据类型
alter table 表名 modify 字段名 数据类型;
4、修改表名
alter table 表名 rename 新表名;
5、修改字段名
alter table 表名 change 旧字段名 新字段名 类型;
示例:
alter table t1 change name new_name char(20);
MySQL-Day02笔记
1、where 条件子句
1、定义
条件子句,一般配合查询、修改、删除操作
2、语法
selet * from 表名 where 条件;
1、环境准备:
1、创建一个库db2
2、创建一张表sanguo
create table sanguo(
id int(2) zerofill,
name char(20),
sex enum("F","M"),
country varchar(10)
)default charset=utf8;
3、插入数据
insert into sanguo values
(1,"曹操","M","魏国"),(2,"小乔","F","吴国"),
(3,"诸葛亮","M","蜀国"),(4,"貂蝉","F","东汉"),
(5,"赵子龙","M","蜀国"),(6,"魏延","M","蜀国");
2、示例
1、查找所有蜀国人的信息
select * from sanguo where country="蜀国";
2、查找一下女人的信息,只显示她的姓名和性别
select name,sex from sanguo where sex="F";
2、update 修改操作
1、语法
update 表名 set
字段名1=值1,字段名2=值2 where 条件子句;
2、示例
1、把曹操的国籍改为蜀国
update sanguo set country="蜀国" where name="曹操";
2、把魏延的性别改为"F",把他的国籍改为 泰国
select * from sanguo where name="魏延";
3、把id号为2的记录的名字改为 司马懿 ,性别改为 M ,国家改为 魏国
update sanguo set
name="司马懿",sex="M",country="魏国" where id=2;
注意:
update语句后面如果不加where子句会把所有的记录都更改
示例:
update sanguo set name="赵云";
# 所有的名字都改为了赵云
3、delete 删除操作
1、语法
delete from 表名 where 条件子句;
2、示例
1、删除所有泰国的人
delete from sanguo where country="泰国";
2、删除id为4的人
delete from sanguo where id = 4;
注意:
1、delete语句后不加where子句会把所有的记录全部删除
delete from sanguo; # 表中记录全部被删除
4、运算符操作(配合查询、修改、删除)
1、数值比较
1、运算符:=、!=、>、>=、<、<=
2、语法
查:
select * from 表名 where 字段名 运算符 数字;
改:
update 表名 set 字段名=值 where ... ...;
删:
delete from 表名 where 字段名 运算符 数字;
3、示例
1、查找攻击力大于等于150的英雄的名字和攻击力
select name,gongji from sanguo where gongji >= 150;
2、把id为2的英雄的攻击力改为888
update sanguo set gongji=888 where id = 2;
3、把防御力大于100的英雄的信息删掉
delete from sanguo where fangyu > 100;
2、字符比较
1、运算符:= 、!=
2、语法:同数值比较
3、示例
1、查找蜀国的英雄的信息
select * from sanguo where country="蜀国";
2、把貂蝉的名字改为 小乔
update sanguo set name="小乔" where name="貂蝉";
练习:
1、查找攻击力为200的英雄的记录
select * from sanguo where gongji=200;
2、将赵云的攻击力改为 666 ,防御改为88
update sanguo set gongji=666,fangyu=88 where name = "赵云";
3、在表中插入一条记录,魏延
insert into sanguo values(10,"魏延",101,1,"蜀国");
4、删除表中名字为 魏延 的记录
delete from sanguo where name = "魏延";
3、逻辑比较
1、运算符:and or
2、示例
1、查找攻击力大于200的蜀国英雄的 姓名,国家 和攻击力
select name,country,gongji from sanguo where gongji > 200 and country="蜀国";
2、将 国家为吴国 并且攻击力为110的英雄的
攻击力设置为100,防御力设置为60
update sanguo set gongji=100,fangyu=60 where country="吴国" and gongji=110;
3、查找名字是 小乔 或者 魏国人
select * from sanguo where name="小乔" or country="魏国";
4、范围内比较
1、运算符:between and 、in 、not in
2、语法
字段名 between 值1 and 值2
字段名 in (值1,值2,... ...)
字段名 not in (值1,值2,... ...)
3、示例
1、找到攻击力在100-200之间的英雄的记录
select * from sanguo where gongji between 100 and 200;
2、找到id在1,3,5,7中的英雄的id和姓名
select id,name from sanguo where id in (1,3,5,7);
3、找到国家不是蜀国,也不是魏国的英雄的记录
select * from sanguo where country not in ("蜀国","吴国");
5、匹配空 非空
1、空 :is null
2、非空 :is not null
3、示例
1、查找名字为 空值 的英雄的名字和国家
select name,country from sanguo where name is null;
注意:
1、null 和 ""不同
null是空值,必须用is 或者 is not去操作
""是空字符串,用= 或者 != 去操作
练习:
1、查找id在3,5,7中,并且攻击力大于150的 蜀国的英雄的记录
select * from sanguo where id in (3,5,7) and gongji > 150;
2、查找国家不是蜀国和吴国,或者防御力大于60的英雄的名字 防御力 和 国家
select name,fangyu,country from sanguo where country not in("蜀国","吴国") or fangyu>60;
3、将国家为吴国,并且攻击力在1-100之间的防御力改为88
update sanguo set fangyu=88 where country="吴国" and gongji between 1 and 100;
4、在表中插入一条记录,id为99,名字为黄月英,其他信息自己定
insert into sanguo values(99,"黄月英",200,90,"蜀国");
5、删除表中id为99,并且名字为黄月英的记录
delete from sanguo where id = 99;
6、模糊比较
1、语法
字段名 like 表达式
2、表达式
1、_ : 匹配单个字符
2、% : 匹配0到多个字符
示例:
1、select id,name from sanguo where name like "_%_"; # 名字至少有两个字符的
2、select id,name from sanguo where name like "%"; # 匹配所有的记录
3、select id,name from sanguo where name like "___"; # 匹配名字为三个字的记录
4、select id,name from sanguo where name like "赵%"; # 匹配所有姓赵的记录
5、SQL高级操作
1、order by
1、作用:给查询的结果进行排序
2、排序方式
1、ASC(默认) :升序
2、DESC :降序
示例:
1、按照英雄的攻击力降序排列
select * from sanguo order by gongji desc;
2、按照英雄的防御力升序排列
select * from sanguo order by fangyu asc;
注意:
默认order by为升序
2、limit
1、作用
限制显示查询记录的记录个数
2、用法
1、limit n -->显示几条记录
2、limit m,n
m表示从第几条记录开始显示,n表示显示几条
注意:
m的值是从0开始计算的,3则表示第四条记录
示例:
1、查找攻击力前三名的蜀国的英雄的姓名和攻击力
select name,gongji from sanguo where country="蜀国" order by gongji de