- MySQL数据库基础
- 一、数据库操作语句
- 1.查询当前服务器端的数据库
- 2.创建数据库
- 3.查看数据库编码格式
- 4.选择数据库
- 5.删除数据库
- 二、数据表的操作语句
- 1.常用数据类型
- 2.查看某个表的具体结构
- 3.创建表
- 4.删除表
- 5.修改表结构
- (1) 创建表后新增一个属性add
- (2) 删除某一列drop
- (3) 修改某一列change
- (4) 修改表名rename
- (5)修改表字符集convert
- MySQL表的增删改查(基础)
- 一、新增(Create)
- 二、查询(Retrieve)
- 1.全列查询*
- 2.查找指定属性
- 3.查询字段为表达式
- 4.给查询结果起别名as
- 5.去重查询distinct
- 6.按照结果集排序order by
- 7.分页查询limit
- 8.条件查询where
- (1) 基本where查询
- (2) 区间查询**between...and...**
- (3) 包含查询**in**
- (4) 模糊查询**like**
- 三、修改(Update)
- 四、删除(Delete)
show databases;2.创建数据库
create database if not exists db_name character set utf8mb4;
if not exists 为检查服务器中是否存在同名数据库,存在不创建。
character set utf8mb4 为将数据库默认编码设置为utf8mb4 。
3.查看数据库编码格式show create database db_name;
查看当前数据库的编码格式
4.选择数据库use db_name;
对数据表进行操作前要先选择数据库。
5.删除数据库drop database db_name;
危险命令!将会删除数据库中的所有数据表。
二、数据表的操作语句 1.常用数据类型| 数据类型 | 大小 | 说明 | 对应java类型 |
|---|---|---|---|
| int | 4字节 | 范围-2^31 <–> 2^31-1 | Integer |
| bigint | 8字节 | 范围2^63 | Long |
| decimal(M,D) | M/D最大值+2 | M表示总共数据长度有几位,D表示小数点后保留几位 | BigDecimal |
| varchar | 64K大小 | 可变长度字符串 | String |
| char(长度) | 64K大小 | 定长字符串 | String |
| datetime | 8字节 | 范围从1000到9999年 | java.util.Date、java.sql.Timestamp |
datetime类型在插入数据时一定要以’yyyy-mm-dd hh:mm:ss’格式插入
在插入时使用MySQL的函数
-- 读取当前系统时间 now();2.查看某个表的具体结构
desc 表名;3.创建表
create table tb_name(
属性名称1 属性类型 ,
属性名称2 属性类型 ,
...
属性名称n 属性类型
);
4.删除表可以使用关键字 comment 增加字段说明
show create table tb_name;查看注释信息
drop table tb_name;
和删除数据库一样,属于危险命令××!
5.修改表结构修改表结构使用alter关键字。
(1) 创建表后新增一个属性addalter table tb_name add 新属性名称 属性类型;(2) 删除某一列drop
alter table tb_name drop 列名称;(3) 修改某一列change
此时这一列已经存在数据了,想要修改这一列的属性名称或者类型就可以
alter table tb_name change 原字段名 新字段名 类型 [约束];(4) 修改表名rename
alter table 旧表名 rename 新表名;(5)修改表字符集convert
alter table tb_name convert to character set 新字符集;MySQL表的增删改查(基础)
表数据的CURD(增加Create 更新Updata 查询Retrieve 删除Delete)
一、新增(Create)insert into tb_name(属性名称...) values(属性值...);
全列插入数据个数必须严格等于列的个数,否则会报错,不会使用null占位
二、查询(Retrieve)select得到的数据相当于一张临时表,不会存储到硬盘中。
1.全列查询*select * from tb_name;
全行全列的查找通常不推荐使用 * 进行查找
2.查找指定属性select 列名称1,列名称2... from tb_name;3.查询字段为表达式
可以对属性进行运算。
4.给查询结果起别名aseg:总成绩
select id,name, chinese+english+math as 总分 from tb_name;5.去重查询distinct
select distinct 列名称 from tb_name;
若要查询多列结果,包含distinct关键字的话,这个去重查询必须放在第一列且后边的属性默认也会进行去重处理。
select distinct 列名称1 ,列名称2 from tb_name;6.按照结果集排序order by
order by可以使用别名排序
-- ASC为升序(小到大),DESC为降序(大到小),不写时默认升序 select 别名,列名称... from tb_name order by 排序的列名称或者别名 ASC|DESC;
① 若结果集中包含null值,这个值null认为是最小值,升序出现在最上边,降序出现在最下边。
② 针对多个列进行排列,按照书写顺序优先级排序。
eg:优先按照语文成绩排序,只有语文成绩相同时才按照数学降序排列
7.分页查询limit查询结果按前n行输出(从0开始,筛选n条结果):
select 属性名称... from tb_name [where...] [order by] limit n;
查询结果按照前n行输出,从第s行开始(从s行开始,筛选n条结果):
select 属性名称.. from tb_name limit n offset s;
8.条件查询wherelimit n > 所有行数,则全部展示
where条件中不支持别名
为啥order by支持别名而where不支持?
order by的执行顺序实在已经把结果查询出来了,只是给查出来的结果排序(select查询出来的结果对于order by已经可见了)
where执行顺序实在查询之前,条件过滤,select要在满足where分支的条件基础上的查询!select的别名此时还未执行
比较运算符:
(1) 基本where查询MySQL的null不包含在< <= 的条件中(null=null也不支持)
null不要使用< <= = 去比较,我们有专门的过滤null的运算符(is nulllis, not null)
null是一个没有意义的值,null+任何数据最后都是null。
where后加条件
eg:查询总分200以下的同学
select neme, chinese + math + english 总分 from tb_name where chinese + math + english < 200;(2) 区间查询between…and…
eg:查询韵文成绩在 [80, 90]的同学及语文成绩
select name, chinese from tb_name where chinese between 80 and 90;(3) 包含查询in
eg:查询数学成绩是 58 或者 59 或者 98 或者 99 分的同学及数学成绩
select name, math from tb_name where math in (58, 59, 98, 99);(4) 模糊查询like
% 匹配任意多个(包括 0 个)字符
select name from tb_name where name like '孙%'; -- 匹配到孙悟空、孙权
_ 匹配严格的一个任意字符
select name from tb_name where name like '孙_'; -- 匹配到孙权三、修改(Update)
update 表名 set 属性名 = (表达式) [WHERe ...] [ORDER BY ...] [LIMIT ...]
若update语句不带条件,则改属性的所有行都受影响。
四、删除(Delete)delete from table_name [WHERe ...] [ORDER BY ...] [LIMIT ...]
若不加条件,则全表删除



