多条数据组成一张表,多张表组成一个数据库,多个数据库储存在服务器上
链接数据库:
mysql -uroot -p 或 mysql -uroot -pmysql
查看数据库:
show databases;
如果没有表则展示空
sql语句:
查询语句:DQL用于对数据的查询,select
操作语句:DML修改插入更新删除
控制语句:DCL访问权限
定义语句:DDL创建删除|创建、修改、重命名、删除|创建、删除索引
CRUD:增删改查
数据库不区分大小写
创建数据数据库:
create database 库名 charset=utf8;
如果数据库存在则创建失败
删除数据库:
drop database 库名;
使用指定数据库:
use 库名;
查看当前选择的数据库:
select database;
创建数据库表:
create table 表名(字段以及约束类型,字段写第一位用,隔开);
数据库的数据类型:
整数:int bit
小数:decimal
字符串:char(固定长度),varchar(可变长度)
text(大文本存储)>4000
枚举类型:enum
日期:date time datetime
数据库约束:
主键:物理上存储的顺序(primary key)
非空字段设置:在当前字段不允许出现空值(not null)
唯一:当前字段不允许重复(unique)
默认值:在当前字段存在默认值,如果不写,就用默认值,如果写,就用写的数据(default)
自增:自动增加(auto_increment)
查看表内容:
desc 表名;
追加字段:
alter table 表名 add 列名 类型;
删除字段:
alter table 表名 drop 列名;
修改字段1:alter table 表名 change 原来的名字 现在的名字 类型以及约束;
修改字段2:alter table 表名 modify 字段名 类型及约束;
数据的CRUD:
查询语句:
查询表里所有的数据:select *from 表名;
如果没有数据,展示空集(Empty set)
插入语句:
根据数据表的字段,挨个插入数据(全列插入)
insert into 表名 values()
()里填写相应的数据 一一对应
小结:
id设置的是自增需要占位用0,null,default
如果使用枚举,则必须使用枚举内的参数,选择其他的则报错
部分字段插入:
insert into 表名(指定插入的字段) value()
删除具体数据的指令:
delete from 表名 where 具体的条件判断
可删除多行或者单行数据,可通过条件判断来进行筛选
修改数据:
update 表名 set 字段=值 where 条件判断
quit 退出
备份数据:
mysqldump -uroot -p 库名 >aaa.sql(备份的文件名)
恢复
1.创建一个新的数据库
2.mysql -uroot -p 库名 <aaa.sql(备份的文件名)
恢复数据必须在关闭数据库的基础上操作
三范式:
1.强调字段的原子性,一个字段不可以再切分字段
2.一、一个表必须有一个主键;二、没有包含在主键中的字段,必须完全依赖于主键
3.不能传递依赖解决冗余问题
distinct:去重复数据(不影响数据库的内容)只是在展示过程中做去重
查询多个指定字段:
selet 列名,列名 from 表名