mysql简单知识了
Mysql的特点
1.关系型数据库
1.1关系型数据库的特点
@1数据是以行和列的形式去存储的。
@2这一系列的行和列称为表
@3表中的没一行叫记录
@4表中的每一列叫字段
@5表和表之间的逻辑关联叫关系
1.2跨平台
可以在Unix、Linux、Windwos上运行数据库服务
1.3支持多种编程语言
python、java、php…
2.Mysql的安装
2.1Ubuntu安装Mysql服务
@1安装服务端
sudo apt-get install mysql-server
@2安装客户端
sudo apt-get install mysql-client
3.启动和连接mysql服务
1.服务端启动
@1查看mysql服务状态
sudo /etc/init.d/mysql stop/start/restart
sudo /etc/init.d/mysql status
2.停止/启动/重启mysql服务
sudo /etc/init.d/mysql stop/start/restart
2.客户端连接
1.命令格式
mysql -h 主机地址 -P端口 -u用户名 -p密码
mysql库的管理
一、库的基本操作
1.查看已有的库
show databases;
2.创建库
create database 库名 default charset=UTF8;
3.查看创建库的语句
show create databae 库名;
4.查看当前所在库
select database();
5.切换库
use 库名;
6.查看库中已有库
show tables;
7.删除库
drop database 库名;
二、库名的命名规则
@1可以使用数字、字母、_,但不能使用纯数字。
@2库名区分字母大小写
@3库名具有唯一性
@4不能使用特殊字符和mysql关键字
三、表的管理
1.表的基本操作
@1创建表(指定字符集)
create table 表名(字段名 数据类型, 字段名 数据类型, ...);
@2查看创建表的语句(字符集)
show create table 表名;
@3查看表结构
desc 表名;
@4删除表
drop table 表名;
四、注意
1.所有的数据都是以文件的形式存放在数据库目录下
2.数据库目录默认:/var/lib/mysql
五、更改库、表的默认字符集
1.方法
通过更改mysql服务的配置文件来实现
2.步骤
@1获取root权限
sudo -i
@2切换到配置文件所在路径下
cd /etc/mysql/mysql.conf.d
@3备份
cp mysql.cnf mysqld.cnf.bak
@4用vi打开mysqld.cnf在[mysqld]下添加character-set-server=utf8保存退出
@5重启mysql服务
/etc/init.d/mysql restart|reload
六、表记录管理
1.在表中插入记录
insert into 表名 values(值1,值2,....值N);
或者
insert into 表名 表名(字段名列表) values(值1,值2,....值N);
2.查询表记录
select * from 表名;
或者
select 字段1,字段2,....,字段n from 表名;
七、数据类型
1.数值类型(有符号signed和无符号unsigned)
@1整型:int 大整型(4个字节)取值范围:0~2**32-1
tinyint 微小整型(1个字节)取值范围(1.有符号(默认):-128-127 2.无符号:0-255)
@2浮点型:
float(4个字节,最多显示7个有效位)
用法:字段名float(m,n)m:表示有效位数 n:小数位位数
salary float(5,2)取值范围:-999.99~999.99
注意:1.浮点型插入整数时会自动补全小数位位数
2.小数位如果多余指定的位数,会对指定位的下一位进行四舍五入。
float(5,2) ->23.128->23.13
double(8个字节,最多显示15个有效位数)
用法:字段名double(m,n)
decimal(M+2个字节,最多显示28个有效位)
用法:decimal(28,5)
2.字符类型
@char(定长):取值范围1-255,不给定宽度默认为1
@varchar(变长):取值范围1-65535,注意varchar没有默认宽度,必须给定一个宽度值。
3.枚举类型
@定义:字段值只能在列举的范围内选择
@enum(…)单选(最多有65535个不同的值)
字段enum(值1,值2…值n)
@set(…)多选(最多有64个不同的值)
字段名 set(值1,值2…值n)
4.日期时间类型
@year:年YYYY
@date:日期YYYYMMDD
@time:日期HHMMSS
@datetime:日期时间YYYYMMDD HHMMSS
@timestamp:日期时间YYYYMMDDHHMMSS
注意:1.插入记录时datatime字段不给值默认返回null
2.插入记录时timestamp字段不给默认返回系统当前时间。
八、表字段的操作
1.语法:alter table 表名 执行动作;
@添加字段
alter table 表名 add 字段名 数据类型 first|after 字段名;
@删除字段
alter table 表名 drop 字段名;
@修改字段数据类型
alter table 表名 modify 字段名 新数据类型;
@修改字段名
alter table 表名 modify 字段名 新数据类型;
@修改表名
alter table 表名 rename 新表名;
2.where条件子句(配合查询、修改、删除操作)
@语法形式
select * from where 条件;
3.表记录管理
@删除表记录
delete from 表名 where 条件;
注意:delete from 语句后如果不加where条件子句,会将表中所有记录全部删除
@更新表记录
update 表名 set 字段名1=值1,字段名2=值2.... where 条件
注意:update 语句后如果不加where 条件子句会将表中所有记录全部更改。
4.运算符操作
@数值比较&字符比较
*数值比较运算符:=、!=、>、>=、<、<=
*字符比较运算符:=、!=
@逻辑比较
*运算符:
and(两个或者多个条件同时满足)
or(两个或者多个条件有一个满足就可以)
@范围内比较
*运算符
between… and … 、in 、not in
*语法
between 值1 and 值2
in (值1,值2,…,值N)
@匹配空、非空
*空:is null
*非空:is not null
注意:1.null:空值必须用is或者is not 去匹配
2."":空字符串,用=或者!=匹配
@模糊比较
*where 字段名 like 表达式;
*表达式(_:匹配单个字符,%:匹配0到多个字符)
@正则匹配查询regexp
*where 字段名 regexp “正则表达式”;
*正则表达式符号(^:以…开头, $:以…结尾,.:匹配任意一个字符,[]:包含…内容。[0-9]:匹配带数字的,[a-z]:匹配带小写字母的,[A-Z]:匹配带大写字母的)
*:星号前面的字符出现0个或多次
九、sql查询
1.limit (可选放在SQL语句的最后写)
@作用:限制显示查询记录的个数
@用法:limit m :显示M条记录 limit m,n:从第m+1到n条记录
2.group by 注意:
@group by之后的字段名必须要为select之后的字段名
@如果select之后的字段没有在group by语句之后,则必须要对该字段进行聚合处理(聚合函数)
3.having注意:
@having语句通常与group by语句联合使用,用来过渡由group by语句返回的记录集。
@having语句的存在弥补了where条件子句不能与聚合函数联合使用的不足,where操作的是表中实际存在的字段,having操作的是聚合函数生成的显示列。
十、约束
1.作用:为保证数据的完整性、一致性、有效性,可以限制无效的数据插入的数据表中。
2约束分类
@默认约束(default)
作用:在插入记录时,如果不给该字段赋值,则使用默认值。
格式:字段名 数据类型 default 默认值
@非空约束
作用:不允许该字段的值有空值null记录
格式:字段 数据类型 not null
十一、索引
1.定义:对数据库中的一列或者多列的值进行排序的一种数据结构(mysql中索引用Btree方式)
2.索引的优点
可以加快检索的速度
3.索引的缺点
@当对表中的数据进行增加、修改、删除的时候,索引需要动态维护,减低了数据的维护速度。
@索引需要占用物理存储空间(数据库目录/var/lib/mysql)
tips:
#查看数据库变量
show variables;
#开启性能分析/关闭为0
set profiling =1;
#查看性能分析结果
show profiles;
4.普通索引(index)
@使用规则:1.一个表中可以有多个index字段
2.字段的值可以有重复,也可以为null值
3.经常把查询条件的字段设置为index字段
4.index字段的key标志为:MUL
@创建方式:1.创建表时创建index
create table t1(... ..., ... ..., index(id), index(name));
2.在已有表中添加索引字段:*语法格式:create index 索引名 on 表名(字段)
create index 索引名 on 表名(字段名);
@查看索引:
desc 表名; ->查看KEY标志位MUL
show index from 表名;
@删除索引
drop index 索引名 on 表名;
注意:删除普通索引只能一个一个的删除。