MySQL基础
说到MySQL,大多数人都能顺口说出MySQL是个关系型数据库。的确是,那么关系型数据库的特点是里面的数据是以行和列的形式存储的,而表里面的行叫做记录,列叫做字段,表与表之间的逻辑关系叫做关系,所以说MySQL是个关系型数据库
MySQL有着开源、跨平台等的特点,在Web时代迎来了快速的发展,MySQL的一大核心便是存储引擎,比较常见的有InnoDB、MyISAM
InnoDB特点:支持事务、外键、行级锁,共享表空间
MyISAM特点:支持表级锁,独享表空间
根据其特点选择合适的引擎:要是执行查询操作多的表用MyISAM,执行写操作多的表使用InnoDB
MySQL有三大范式
第一范式:列不可拆分(每个字段都是原子性的,不可再分解)
第二范式:唯一标识(有主键,非主键字段依赖主键字段)
第三范式:引用主键(非主键之间不能相互依赖)
设计关系数据库时,需要遵从不同的规范要求,设计出合理的关系型数据库,这些不同规范的要求就被称为不同的范式
连接数据库
mysql-h主机地址-u用户名-p密码
#主机地址是要连接的目标地址
#用户名是要连接电脑的名称
#密码是连接,在后面可直接写也可不写
#mysql-hlocalhost-uroot-p
创建数据库
createdatabase数据库名charactersetutf8
#createdatabaseuserinfocharactersetutf8
#指定字符集
创建数据表
createtable数据表名(字段名数据类型)charactersetutf8
#createtableuser(idint,namevarchar,agetinyint,addressvarchar)charactersetutf8
数据类型分为:
数值、字符、枚举、日期时间
数值分为整数和浮点数
1、整型
*int大整型(4个字节)
*tinyint微笑整型(1个字节)
*smallint小整型(2个字节)
*bigint大整型(8个字节)
2、浮点数
*float(4个字节,最多显示7个有效位)
*double(m,n)(最多显示15个有效位)
float(m,n)#m表示总位数,n表示小数位位数#float(5,2):.99
字符类型
1、定长(char)取值范围:1~
2、变长(varchar)取值范围:1~
3、text/longtext
枚举类型
1、单选(enum)字段名enum(值1,值2,……)
2、多选(set)字段名set(值1,值2,……)
日期时间
1、dateYYYY-MM-DD
2、timeHH:MM:SS
3、datetimeYYYY-MM-DDHH:MM:SS
4、timestampYYYY-MM-DDHH:MM:SS
注:datetime和timestamp都表示的年月日时间,但不同之处是datetime不给值时返回NULL,而timestamp不给默认值时返回当前时间
增删改查
insert
insertinto表名values(值)insertinto表名(字段1,字段2)values(值1,值2)
#insertintouser(name,age)values(zhangsan,18)
delete
deletefrom表名where条件
#deletefromuserwhereid=1
#表示要删除id为1的记录
deletefromuser
#删除表中所有记录
update
update表名set字段名=值where条件
#updateusersetname=zhangsanwhereid=2
#表示更改id为2的字段名的值为zhangsan
注:后面如果不加where条件的话,表示更改所有的记录
select
select字段名from表名select*from表名
#select*fromuser
#字段名可以是一个,也可以是多个
#*代表要查看所有的字段
删除整张表
droptableuser
删除整个数据库
dropdatabaseuserinfo
表字段操作
添加字段
altertable表名add字段名数据类型first/after字段名
altertableuseraddschoolvarcharafterage
修改字段
altertable表名modify字段名新数据类型
altertableusermodifyschoolchar
删除字段
altertable表名drop字段名
altertableuserdropschool
字段修改
altertable表名change字段名新字段名数据类型
altertableuserchangeschoolschchar
表重命名
altertable表名rename新表名
altertableuserrenameusers