mysql基础

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

你可能感兴趣的:(mysql基础)