MySQL 概述
数据库?
存储数据的仓库
作用?
动态网站数据都存储在数据库中
SQL 结构化查询语言
DDL 数据定义语言 CREATE DROP ALTER...
DML 数据操作语言 INSERT UPDATE DELETE...
DQL 数据查询语言 SELECT
DCL 数据控制语言 GRANT ROLLBACK REVOKE..
创建表
Create table tb_name(
字段名称 字段类型 字段属性,
字段名称 字段类型 字段属性
)表类型 表字符集;
注意事项
一条命令可以分多行写
每个字段之间使用逗号隔开
最后一个字段 后 不加逗号
字符集 utf8
查看创建表语句
Show create table tb_name;
删除表
Drop table tb_name;
表里存储数据
Insert into tb_name(字段名称,字段名称..) values(1,’a’);
查询数据 DQL
Select * from tb_name; *代表所有字段
Select 字段名称,字段名称... From tb_name;
修改
Update tb_name set 字段名=新值,字段名=新值... Where id = 4;
删除
Delete from 表名tb_name where id = 3;
清空表数据 auto_increment = 1
Truncate tb_name
My.ini
三行配置 改服务器端 客户端 连接字符集 utf8
[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
重启mysql服务
一.数据表的概念:
数据表是数据库中的基本对象元素,以行和列组成,或者记录和字段组成的二维结构用于俱数据,数据表由表结构和表内容两部分组成,先建立表结构,然后才能输入数据,数据表结构设计主要包含字段名称、字段类型和字段属性的设置
通常情况下,同一个数据库中可以有多个数据表,但表名必须是唯一的,表中每一条记录描述了一个相关信息的集合,每一个字段必须为唯一的,每个字段都需要指定数据类型
数据表的数据列的类型
表中列的数据类型:4种
1.数值类型 存储范围不同
tinyint 1
smallint 2
mediumint 3
int 常用 4
bigint 8
unsigned 属性 无符号
int(数字) 默认数字没有任何意义
只有配合 0填充属性才有意义 (zerofill)
超过数字 1234 只有给的数值 小于这个数字时 才会用0填充 至数字长度
float
double
float(3,1) 共3位 小数点后1位 23.4
如果不加括号 默认不能用于条件查询
如果加小括号 给精度 可以用于查询条件
2.字串类型
char(n) 0--255 字节
varchar(n) 0--65535 字节 < 21845
char(n)
固定长度
超过n 会截取
< n 会使用空格补至n
varchar(n)
可变长度
超过n 会截取
< n 会缩至实际长度
char和varchar的区别?
char比varchar效率高
创建表时 (n) 是不可以省略的
text 文本
mediumtext 中长文本
longtext 长文本
enum('nan','nv','baomi') radio 选择其中一个值
set('a','b','c','d') checkbox 选择其中一个多什值
insert into user(love) values('a,b');
3.日期和时间类型
使用int来存储 返回的都是时间戳
4.NULL
NULL意味着“没有值”或“未知值”
可以测试某个值是否为NULL
不能对NULL值进行算术计算
对NULL值进行算术运算,其结果还是NULL
0或NULL都意味着假,其余值都意味着真
三.数据表的数据列的属性
unsigned 无符号 增大存储范围
zerofill 0填充 配合int(3)
auto_increment 自动增长 必须依附于主键索 primary key引或唯一索引unique
null空和not null不为空
default默认值
not null default 'a'
表类型(表引擎) engine=myisam
myisam
innodb
myisam 效率 高于innodb
myisam 更稳定
myisam 不支持事务
innodb 支持事务
myisam 表引擎 或 表类型 生成三个文件 .frm表结构 .MYD表数据 .MYI 表索引
innodb 生成二个 表结构 .frm .ibd
my.ini配置文件 三行 utf8
\s utf8
数据库字符集 utf8
表默认字符集
defalut charset=utf8
表字段字符集
会继承表的字符集
编辑器 utf-8 无BOM
浏览器编码
header('Content-type:text/html;charset=utf-8');
四.修改表结构
Alter table tab_name 操作
1.修改字段
Alter table tab_name change 旧字段名称 新字段名称 新字段类型 属性
Alter table tab_name modify 旧字段名称 新字段类型和属性
modify和change的区别 change能修改字段名称 modify不能
2.添加字段
Alter table tb_name add 字段名称 字段类型和属性
3.删除字段
Alter table tb_name drop 字段名称
4.更改表名称
rename table 旧表名 to 新表名;
Alter table 表的旧名称 rename as 表的新名称;
五.数据表索引设置
主键索引 primary key
一个表里可以没有主键索引
一个表里只能有一个主键索引
添加主键索引
create table tb_name(
id int unsigned not null auto_increment primary key
)engine=myisam default charset=utf8;
create table tb _name(
id int unsigned not null auto_increment,
primary key(id)
);
alter table tb_name add primary key(字段名称);
删除主键索引
alter table tb_name drop primary key;
如果字段有自动增长属性 则必须先去除 再删除主键索引
alter table tb_name modify id int unsigned not null;
alter table tb_name drop primary key;
唯一索引 unique
这个字段 这一列的值不允许重复
一个表中可以有多个唯一索引
添加唯一索引
create table tb_name(
id int,
username varchar(20) unique
);
create table tb_name(
id int,
username varchar(20),
age tinyint unsigned,
unique(username)
);
删除唯一索引
alter table tb_name drop index 索引名称
如果创建时没有指定索引名称那么索引名称为字段名称
常规(普通)索引 index 只能在表字段设计后添加
加快查询速度
缺点:
占空间
效率会降低 select 查询速度 insert update delete
create table tb_name(
id int,
username varchar(20),
age tinyint unsigned,
index [索引名称](username)
);
删除普通索引
alter table tb_name drop index 索引名称
查看表中的索引
show indexes from tb_name;
六.MySQL用户授权(了解)
格式:
grant 允许操作 on 库名.表名 to 账号@来源 identified by '密码';
grant all on *.* to [email protected] identified by '123456';
grant SELECT on *.* to zhu@'%' identified by '123456';
刷新权限:
flush privileges;
查看指定用户的权限信息
show grants for 账号@来源;
移除一些权限
-- revoke:只删除了用户权限,但没有删除这个用户
mysql> revoke insert,delete on *.* from [email protected] identified by'123';
revoke all on *.* from zhu@localhost;
删除了整个用户及其权限
drop user zhu@localhost;
运维QQ交流群:171586999