目录
一、数据库基本操作
二、数据库的列类型
三、数据库类型
四、表的操作
五、CRUD
一、数据库基本操作
1、查看所有数据库
show databases;
2、进入数据库
use 数据库名;
3、删除数据库
drop database [IF EXISTS(不存在不报错,警告)] 数据库名;
4、查看表(前提:进入数据库)
describe [IF NOT EXISTS(不存在不报错,警告)]表名;
5、创建数据库
create database [if not exists] 数据库名;
二、数据库的列类型
1、数值
-
int 存储标准数据 4个字节
-
bigint 存储较大的数据 8个字节
-
decimal 字符串形式的浮点数(金融计算等、对数据敏感的行业)
-
tinyint 十分小的数据 1个字节
-
smallint 较小的数据 2个字节
-
mediumint 中等大小的数据 3个字节
-
float 浮点数 4个字节
-
double 浮点数 8个字节
2、字符串
- varchar 可变字符串 0~65535 String(Java)
- text 文本串 2^16-1 保存大文件
- char 字符串固定大小 0~255
- tinytext 微型文本 2^8-1
3、时间日期
- datetime YYY-MM-DD HH:mm:ss 最常用的时间格式
- timestamp 时间戳 1970.1.1到现在的毫秒数
- data YYY-MM-DD,日期格式
- time HH:mm:ss ,时间格式
- year 年份
4、null
- 没有什么意义,一般不勾非空,一般默认为null
三、数据库类型
1、MYISAM和INNODB
MYISAM | INNODB | |
---|---|---|
事务 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间的大小 | 较小 | 约为MYISAM的2倍 |
区别 | 节约空间,速度较快 | 安全性高,支持事务处理、多表多用户操作 |
四、表的操作
1、修改表名
alter table 旧表名 rename as 新表名
2、增加表的字段
alter table 表名 add 字段名 列属性[]
3、修改约束
alter table 表名 modify 字段名 列属性[]
4、字段重命名
alter table 表名 change 旧字段名 新字段名 列属性[]
5、修改约束与字段重命名
修改约束 | 字段重命名 |
---|---|
根据字段名修改字段的列属性,如将int改为varchar,修改表的约束(只能修改约束) | 修改字段的名字,必须带列属性,也可以修改约束(可以修改名字和约束) |
6、删除表的字段
alter table 表名 drop 字段名
7、删除表
drop table [if exists] 表名
8、外键(凉凉)
现在一般在应用层用代码去写
alter table
表名
add constraintfk_外键字段
foreign key(外键字段
) references外链表
(外键字段
)
必须先删除外链表能链接的表
五、CRUD
1、增加数据(字段与值必须一一对应)(DML语言)
单行增加: 给单行增加数据
语法:insert into 表名(字段1,字段2,字段3,…) values(‘值1’,‘值2’,‘值3’,…);
例:insert into people(id,name,gender) values(‘1’,‘张三’,‘男1’);
多行增加: 给两行甚至多行增加数据(第一行和第二行用 , 隔开,其他的以此类推)
语法:insert into 表名(字段1,字段2,字段3,…) values(‘值1’,‘值2’,‘值3’),(‘值1’,‘值2’,‘值3’);
例:insert into people(id,name,gender) values(‘1’,‘张三’,‘1’),(‘2’,‘李四’,'1);
2、修改数据(修改多个数据用 , 隔开)(DML语言)
格式:update 表名 set 列名称=新的值[ , 列名称=新的值] where 列名称=值 [and 列名称=值];
- set后面为需要修改的列的数据(修改多个数据用逗号隔开)。
- where后面是条件(多个条件都满足用and,只需要满足一个用or),用于锁定需要修改的那一行(条件判断可以使用运算符)。
操作运算符:
操作符 | 含义 | 示例 | 结果 |
---|---|---|---|
= | 等于 | 1=2 | false |
<> 或 != | 不等于 | 1!=2 | true |
> | 大于 | 1>2 | false |
< | 小于 | 1<2 | true |
<= | 小于或等于 | 1<=2 | true |
>= | 大于或等于 | 1>=2 | false |
between … and … | 在某个范围之内 | id between 1 and 2; | id在[1,2]之内的都满足 |
and | && 与 必须两个都满足 | id=1 &&username=‘张三’ | 两个都满足返回true |
or | || 或 只需要满足一个 | id=2 || username=‘李四’ | 只要用一个满足返回true |
★ 一定要加上条件,否则那一列的所有数据全部更改,如果有一百万条,一百万条都会更改。
例:update student_user set age = 18 where id = 3;
例:update student_user set age = 18 where id = 3 and username = '‘小琦’;
错误的示范:
3、删除数据(DML语言)
1.delete
语法:delete from 表名 where 条件; (可以不加条件,但会把所有数据清空,加了条件会删除指定的列)
例:delete from student_user where id = 1;
2.truncate (专用于清空数据库,表结构和索引约束不会变)
语法:truncate 表名;
3.delete和truncate的区别
delete | truncate | |
---|---|---|
相同点 | 可以删除数据,不会删除表的结构 | 可以删除数据,不会删除表的结构 |
不同点 | 自增数据计算器,不会清零 | 可以使自增数据计数器清零,重新从1开始 |
会影响事务 | 不会影响事务 |
4.delete删除,重启数据库
- INNODB引擎:自增重新从1开始(存储在内存之中,断电及失);
- MYISAM引擎:不会从1开始,继续从上一个自增量开始(存储在文件中,不会因为断电丢失);
4、查询数据(DQL,重点)
DQL(Data Query language):数据查询语言;
- 所有的查询都是用select
- 简单和复杂的查询全都可以做
- 数据库最重要的语言
- 项目中90%的时间都在使用查询
单表查询语句:select * ( * 表示查询所有的列,也可以查询指定的列) from 表名 where [条件];
例:select username,passwrod form student_user where id = 3;
可以给列数据起一个别名(用 as 关键字):
多表查询语句:select * ( * 表示查询所有的列,也可以查询指定的列) from 表1,表2 where [条件];
例:select username,passwrod form student_user,people where id = 3;
可以给列数据和表名起一个别名(用 as 关键字):
MySQL select查询:https://blog.csdn.net/sabstarb/article/details/105080290