您的位置:首页 > 数据库 > MySQL

MySQL 第一篇:数据类型和操作数据库结构

2017-10-25 21:16 519 查看
本篇内容由猿道教育的课程内容整理而来。

我把MySQL的内容整理成9篇博客,学完这9篇博客虽不能说能成为大神,但是应付一般中小企业的开发已经足够了,有疑问或建议的欢迎留言讨论。

一、数据类型

1、数值类型



2、字符串类型



3、日期和时间类型



4、复合类型

ENUM

格式:ENUM(value1, value2, …)

存储大小:1-255个成员:1字节;256-65535个成员:2字节。

描述:存储预先定义好的字符串列表,插入和更新必须使用列表中的值,如果插入值不在列表中,则插入空串。可以通过索引引用列表中的值,索引由0开始。ENUM最大成员数为65535。

SET

SET(value1, value2, …)

存储大小:1-8个成员:1字节;9-16个成员:2字节;17-24个成员:3字节;25-32个成员:4字节;33-64个成员:8字节。

描述:存储预先定义好的字符串列表,字段值可为集合中任意成员值。SET不按索引存储,而是以位图方式存储。SET存储的最大值为64。

二、操作数据库

1.创建库

命名规范:数据库

语法:create database 数据库名;

例如:

/*创建数据库 如果需要指定编码的 default character set utf8 collate utf8_general_ci;*/
create database school;


2.删除库

语法:drop database 数据库名;

例如:
drop database students;


3.使用库

语法: use 数据库名;

例如:
use school;


三、用户的创建与授权

1.创建用户

/* 创建用户:CREATE USER 'username'@'host' IDENTIFIED BY 'password';
host如果是%代表可以远程登录的用户
*/
create user 'jame'@'%' IDENTIFIED by '123456'


2. 授权用户

十四个权限:select,insert,update,delete,create,drop,index,alter,grant,references,

reload,shutdown,process,file;

/*grant 权限1,权限2,...权限n on 数据库名称.表名称 to 用户名@用户地址 identified by '连接口令';
REVOKE 权限1,权限2...权限n ON databasename.tablename FROM 'username'@'host';
给所有权限就是使用 all privileges*/
GRANT SELECT,insert,update  ON mysql.`user` TO jame@localhost IDENTIFIED BY '123456';
/*
把Grant换成Revoke移除权限
*/
REVOKE SELECT,insert,update ON mysql.USER FROM jame@localhost;


IDENTIFIED BY ‘123456’的作用:

3.删除用户

Drop USER 用户名;

注意:加上“@localhost”表示删除的是本地的用户,不指定主机的情况下,默认就是%,删除的是远程连接用户。

drop user jame@localhost;


四、操作数据表

1.创建表

方式一:

a.先进入库 use database 库名

b.创建表 create table 表名(字段名1 数据类型 [not null],字段名2 数据类型 [not null]);

create table student(
s_no varchar(10) not null,
s_name varchar(10) not null,
age int(3),
sex varchar(3),
height int
);


方式二:将查询结果建成新的一张表。

CREATE TABLE students_bak AS SELECT
*
FROM
students;


2.修改表

a.修改表名 alter table 原表名 rename to 新表名,表的结构与数据都不会受影响;

alter table student rename to students


b.修改列 alter table 表名 change 原列名 新列名 新列名的数据类型,修改的数据类型不能跟该列已有数据起冲突;

alter table students change age s_age int(4);


c.增加列 alter table 表名 add 新列 数据类型;

alter table students add s_remark varchar(50);


d.删除列 alter table 表名 drop column 列名;

alter table students drop s_remark;


补充:修改表的字符集编码

alter table students convert to CHARACTER set utf8;
alter table students DEFAULT CHARACTER set utf8 collate utf8_general_ci;
select * from students;


3.删除表

drop table 表名;

补充:

drop database 数据库名

drop user 用户名

drop table 表名

注意事项:

1.字段,每个表都可以分更小的项,这些项称为字段(列)

2.记录, 数据记录,一行数据。表里面的行

3.列表里的垂直项,包含表里特定字段的所有信息

补充:TIMESTAMP的变体

在添加数据的时候对updatetime 的操作

1、 在创建新纪录和修改现有记录的时候都会对这个列的事件进行刷新。

ALTER TABLE students
ADD updatetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;


2、在创建新记录的时候吧这个字段设置为当前时间,但是以后的更新不会执行。

ALTER TABLE students
ADD updatetime TIMESTAMP DEFAULT CURRENT_TIMESTAMP;


3 创建新纪录时不给值,以后修改时自动刷新。

ALTER TABLE students
ADD updatetime TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: