一、数据库基础使用
数据库遵循基础范式三条:
1、原子性
2、主键唯一依赖性
3、主键直接相关,不能传递依赖
1、net start mysql
开启数据库
2、mysql -h 地址 -u 用户名 -p密码
本地数据库不用-h 没有密码的数据库不用-p
3、show databases;
显示所有数据库
4、create database 数据库名
新建数据库
5、drop database 数据库名
删除数据库
6、use 数据库名
使用相应数据库
7、数据库备份
mysqldump -u 用户名 -p 密码 >文件名.sql
8、恢复数据库
先创建一个新的数据库
mysql -u 用户名 -p 密码 <文件名.sql
二、数据表使用
1、show tables;
显示所有数据表
2、create table 表名 (‘列名’ 数据类型 约束条件,第二列同样操作,之后同上;)
创建数据表
mysql常用数据类型
整数:int bit
小数:decimal
字符串:char(固定长度),char(4)‘as’会自动补齐为‘as ’
可变长度字符串:varchar(4)
text(大文本存储)字符>4000
枚举类型 enum
日期:data time datatime
数据约束
primary key
auto_increment(一般用于主键自增长)
主键:物理储存地址
非空字段设置:not null
当前字段不允许出现空值
唯一unique:
当前字段不允许重复
默认值:default
在当前字段存在默认值,如果不写,就用默认值,如果写,就用写的数据
3、drop table 表名;
删除数据库中数据表
4、insert into 表名 (列名,后续列名) values (对应数据,后续数据)
插入数据
5、select 列名 from 表名
查询数据
where语句
指定条件,使用=,<,>,<>,!=
selsct * from 表名 where 条件(字段判断条件)
like: 模糊查询 %表示多个字符 _表示一个字符
select * from 表名 where 条件(字段 like ‘%明(小条件)’)
连续范围查找条件: in (元组); between a and b;
排序: order(不需要where) by 字段名 排序方式(asc升序 desc降序 如果不写则升序)
6、聚合函数
count():select count() from student;查找有多少条数据
max():select max(height) from student;字段中查找身高最大的值
group by 多个字段名用逗号隔开:select gender(聚合条件) from students group by gender;分组展示
group_concat():select gender,group_concat(name,height) from student group by gender;除分组以外的额外字段展示
group_concat(‘字段名’,’_’,‘字段名’):分组之后进行展示凭借的过程中,可以加入指定的链接符号
avg(height):平均身高
having:by后面的判断条件,用于分组的筛选
limit: 分页select * from student limit 3(),3();
7、数据表查询操作顺序
select distinct * from 表名 where 条件 group by … having … order by … limit start,count
执行顺序:
from 表名
where
group by
select distinct *
having最后筛选
order by排序
limit start,count展示
8、update 表名 set 列名1=数据1,列名2=数据2,后续同上 where 列名=需要更新的数据
数据表更新修改
9、delete from 表名 where 条件
删除数据条
10、select 展示列名*n from 表名 where 列名 like ‘%end’
like表示模糊查询,通常与%一起使用,%表示任意字符,与正则表达式的*相当,如果没有%则like相当于=,该语句找出end结尾的数据
11、union[ALL | DISTINCT] 连接两个完整的select语句
可以表示中括号中如果是all则合并返回所有找到的数据,如果中括号中的是distinct则合并返回不重复的数据
12、order by 列名 asc|desc
跟在完整的select语句后面,用于排序显示选出的数据,asc表示升序,desc表示降序,默认情况下是升序
13、select 列名,聚合函数(逗号隔开) from 表名 group by 列名;
按照该列名进行分组显示
14、select 表名.列名1,表名.列名2— from 表名1 inner join 表名2 on 表名1.列名=表名2.列名
按照两张表中每张表的某列对应关系查询两表的数据
left join 表示显示左边表格的所有数据,右表没有对应数据时用NULL显示
right join 表示显示右边表格的所有数据,左表没有对应数据时用NULL显示
数据库三表联查
select goods.name as ‘商品名字’,cate.name as ‘种类’, brande.name as ‘品牌’ from (goods inner join cate on goods.cate_id=cate.id inner join brande on goods.brande_id=brande.id)
15、NULL值
查找表中列的数据是否为NULL值时必须用 is NULL或者is not NULL
16、alter指令
用于已存在数据的增删改操作
alter table 表名 drop 字段名
删除指定字段
alter table 表名 add 字段名 数据类型 约束条件
在表尾添加新的自定义字段(可以在末尾加上 after 字段名 将新字段加入到指定位置,在末尾加first则表示在第一位加入该字段)
alter table 表名 modify 字段名 数据类型 约束条件
修改字段的数据类型和约束条件
alter table 表名 alter 字段名 set default 默认值
修改字段默认值
alter table 表名 alter 字段名 drop default
删除字段默认值
alter table 表名 rename to 新表名
修改数据表名
alter table 表名 enging=类型
修改表类型