一.库级别的操作
1.查看当前数据库中的所有库
show databases;
//这个sql语句会帮你查到当前数据库中的所有库,
//注意不是database而是打他databases
2.创建数据库
create database [if not exists]db_name [character set utf8mb4];
其中[ ]中的为可选项 但是不加character set时 添加数据为汉字时会出现乱码 所以建议每次创建库的时候加上
utf8mb4为指定数据库所使用的字符集
MySQL在5.5.3版本之后增加了一个utf8mb4的编码,mb4就是most bytes 4的意思,用来兼容四字节的unicode。其实,utf8mb4是utf8的超集,理论上原来使用“utf8”,然后将字符集修改为“utf8mb4”,也并不会对已有的utf8编码读取产生任何问题
![在这里插入图片描述](https://img-blog.csdnimg.cn/20201231193737605.png
3.进入到某个库中
刚才我们已经创建好了test库那我们该怎么进入到该库中呢?
使用sql语句use tsst;
我们就进入了test库了,接下来就可以进行相关的操作了
4.删除库(危险操作谨慎使用)
drop database + 库名;
数据库已经创建好了我们再来看看表的相关操作吧
二.表的相关操作
先从表的创建说起吧!已经学会了库的创建,那么表的创建也是so easy.
要创建表 我们就不得不说一说数据库中的相关数据类型了
和java等语言相同 mysql 也有 整形,浮点型,字符串等 接下来我们一个一个来看(会与java中的数据类型进行对比)
1.数据类型
a. 整形和浮点型(常用)
数据类型 | 大小 | 说明 | 对y应java中的类型 |
---|---|---|---|
Bit[(M)] | M指定位数,大小默认为1 | 二进制数,M范围从1到64 存储数值范围从0到2^M-1 | 常用Boolean对应bit,此时默认是1位, 即只能存0和1 |
Tinyint | 一个字节 | Byte | |
SMALLINT | 2个字节 | Short | |
int | 4个字节 | Integer | |
Bigint | 8个字节 | Long | |
Float(M,D) | 4个字节 | 单精度,M指定长度,D指定 小数位数。会发生精度丢失 | Float |
Double(M,D) | 8个字节 | Double |
在我们的日常使用中,其实不需要过多考虑内存的占用,因为我们不会存放过多的数据,那么int就可以帮我们做好多的事了。当int不够用时,再考虑使用Bigint
接下来我们把Float(M,D)拿出来看一看
例如:定义了了一个float(3,1),那么该数最大为99.9,最小为0.0了
我们再来看一看字符串类型。
b.字符串类型
数据类型 | 大小 | 说明 | 对y应java中的类型 |
---|---|---|---|
varchar(size) | 0-65,535字节 | 可变字符串,size确定能存放的具体长度 | String |
text | 0-65,535字节 | 长文本数据 | String |
mediumtext | 0-16 777 215字节 | 中等长度文本数据 | String |
BLOB | 0-65,535字节 | 二进制形式的长文本数据 | byte[] |
c.日期类型
数据类型 | 大小 | 说明 | 对y应java中的类型 |
---|---|---|---|
datetime | 8个字节 | 范围从1000到9999年,不会进行时区的 检索及转换。 | java.util.Date、 java.sql.Timestamp |
timestamp | 4个字节 | 范围从1970到2038年,自动检索当前时 区并进行转换。 | java.util.Date、 java.sql.Timestamp |
其中timestamp使用的更多一些
2.创建表
说完这些数据类型后,我们就开始建表
create table user(
userId int,
userName varchar(5),
birthday timestamp,
location varchar(50),
introduction text
);
与编程语言不一样的是SQL语句中"变量名"在前,类型在后
这样我们就将user表建好了,我们可以通过desc user
来查看我们新建表user的表的结构
其中Field代表字段名,Type是字段类型,NULL指字段是否允许为空,key表示字段对应索引的类型,Default指字段的默认值,Extra 为扩展
在创建表的时候我们还来可以用comment来增加字段说明,在别人看我们的SQL语句时候就能清楚的知道我们所定义的字段指的是什么
create table user(
userId int comment '用户Id',
userName varchar(5) comment '用户名',
birthday timestamp comment '用户生日',
location varchar(50) comment '用户地址',
introduction text comment '用户简介'
);
表创建好了,那么我们就来看看怎么往表中插入数据吧!
插入数据有两种操作方法
a.插入数据
1.单行数据 + 全列插入
insert into user values(1,"Yukl","1999-09-09","西安市","无");
2.多行数据 + 指定列插入
insert into user (userId, userName) values
(2,"xiaoming"),
(3,"xiaohong");
在执行该SQL语句时我们会发现,我们的Mysql报错了
是因为我们在建表时将userName字段的长度设置为5,所以出现了错误,
insert into user (userId, userName) values
(2,"小明"),
(3,"小红");
数据插入成功后,该又该怎样查看插入的数据呢?
那就得看看查询语句了;
b.查找数据
select * from user;
其中*代表的是查询该表中的所有字段
我们也可以将 * 替换为表中的任一字段,可以是一个也可以是多个,字段与字段之间使用逗号隔开
我们可以发现,在插入数据时候,没有插入birthday字段的值,系统会默认的将该字段的值设置为当前时间,其他没有插入的字段值为NULL
演示一下只查找用户名和生日
select userName,birthday from user;
一些其他的操作
1.别名:我们可以为我们查询的字段起别名
例如:select userName As ‘用户名’ from user;
这样我们的useName就显示为用户名了,
注意:SQL语句中字符串类型可以使用单引号,也可使用双引号
2.去重:distinct(查询的结果中有重复数据时使用distinct会去掉重复数据)
select distinct userId from user;
我们的user表中的userId没有 重复的数据,所以你要重新建张表来试一试
3.排序:order by ,
可以对结果集中的数据根据某个字段来进行排序
select * from user order by userId;
4.order by 默认从小到大排序,如果要结果集从大到小进行排序可以使用desc关键字
select * from user order by userId desc;
这样我们发现userId值大的出现在前面了
5.条件查询:where
现在有个要求,要我们查找居住在西安的用户信息
我们就可以这样写SQL语句select * from user where location='西安市';
6.分页查询:limit
当业务要求只需几条数据时就需要使用了
limit 使用有三种语法
limit n ,从 0 开始,筛选 n 条结果
limit s n ,从 s 开始,筛选 n 条结果
limit n offset s,从 s 开始,筛选 n 条结果
c.修改数据
业务要求为:把小明的地址改为西安市
update user set location="西安市" where userName="小明";
再来看看表中的数据,我们发现小明的地址变为西安市了
d.删除数据
业务要求:删除userName=‘小红’ 的数据;
delete from user where userName='小红';
再来看看数据库,删除成功了。
总结语法
1.新增
-- 单行插入
insert into 表(字段1, ..., 字段N) values (value1, ..., value N);
-- 多行插入
insert into 表(字段1, ..., 字段N) values
(value1, ...),
(value2, ...),
(value3, ...);
2.查询
-- 全列查询
select * from 表
-- 指定列查询
select 字段1,字段2... from 表
-- 查询表达式字段
select 字段1+100,字段2+字段3 from 表
-- 别名
select 字段1 别名1, 字段2 别名2 from 表
-- 去重DISTINCT
select distinct 字段 from 表
-- 排序ORDER BY
select * from 表 order by 排序字段
-- 条件查询WHERE:
-- (1)比较运算符 (2)BETWEEN ... AND ... (3)IN (4)IS NULL (5)LIKE (6)AND (7)OR
(8)NOT
select * from 表 where 条件
3.修改
update 表 set 字段1=value1, 字段2=value2... where 条件
4.删除
delete from 表 where 条件