我把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;