赞
踩
目录
MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 应用软件之一。在本篇中,会让大家快速掌握 MySQL 的基本操作,并轻松使用 MySQL 数据库
MySQL数据库的数据文件存放在/usr/local/mysq1/data目录下,每个数据库对应一个子目录,用于存储数据表文件。每个数据表对应为三个文件,扩展名分别为“. frm"、" .MYD"和“.MYI"。
MYD"文件是MyISAM存储引擎专用,存放MyISAM表的数据。每一个MyISAM表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“.frm" 文件在一起。
”.MYI"文件也是专属于MyISAM 存储引擎的,主要存放MyISAM表的索引相关信息。对于MyISAM
存储来说,可以被cache的内容主要就是来源于“.MYI"文件中。每一个MyISAM表对应一个“.MYI"文件,存放于位置和“. frm"以及“.MYD”一样。
MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件( frm, myd,myi)。每 个表都有且仅有这样三个文件做为MyISAM存储类型的表的存储,也就是说不管这个表有多少个索引,都是存放在同一个.MYI文件中。
另外还有“. ibd"和ibdata 文件,这两种文件都是用来存放Innodb数据的,之所以有两种文件来存放Innodb的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储方式使用“. ibd"文件来存放数据,且每个表一个“.ibd"文件,文件存放在和MyISAM数据相同的位置。如果选用共享存储表空间来存放数据,则会使用ibdata文件来存放,所有表共同使用一个(或者多个,可自行配置) ibdata 文件。
注:如果char存入数据的实际长度比指定长度要小,会空格至指定长度,如果存入的数据的实际长度大于指定长度,低版本会被截取,高版本会报错
类型 | 说明 |
DDL(数据定义语言) | 用于创建数据库对象,如库、表、索引等 |
DML(数据操作语言) | 用于对表中的数据进行管理,用来插入、删除和修改数据库中的数据 |
DQL(数据查询语言) | 用于从数据表中查找符合条件的数据记录 |
DCL(数据控制语言) | 用于设置或者更改数据库用户或者角色权限(用于控制不同数据段直接的许可和访问加别的语句,这些语句定义了数据库、表、字段、用户的访问权限和安全级别,如COMMIT、ROLLBACK、GRANT、REVOKE) |
方式一
方式二
mysql> show databases; #查看当前又写什么数据库
- mysql> use mysql; #选择需要使用的数据库mysql
- mysql> show tables; #查看当前库里有什么表
mysql> desc user; #查看user表结构
查看版本
[root@mysql ~]# mysql -V
mysql> select version(); #在mysql内部查看版本
- #创建数据库
- mysql> CREATE DATABASE 库名;
-
- #删除数据库
- mysql> DROP DATABASE 库名;
- #进入school中
- use school;
-
- #主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
- CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
- #删除表
- DROP TABLE 表名;
-
- CREATE TABLE first_group (id int NOT NULL,name char(10) NOT NULL,score decimal(5,2),pa aawd char(48) DEFAULT'',PRIMARY KEY (id));
- #查看表结构
- desc 表名
-
- #查看库中的表内容
- show tables in 库名;
属性 | 说明 |
Field | 字段名称 |
type | 数据类型 |
Null | 是否允许为空 |
key | 主键 |
Default | 默认值 |
Extra | 扩展属性,例如:标志符列(标识了种子,增量/步长)1 2 |
id | 1 3 5 7 |
- #向数据表中插入新的数据记录
- insert into 表名(字段1,字段2,字段3) values(字段1的值,字段2的值,字段3的值);
-
- #示例1
- insert into info(id,name,age,score) values(2,'yxp',18,88)
- select * from info;
-
- #示例2:直接使用表明加入字段
- insert into info values(1,'dhc',20,'77)
-
- #示例3:可以指定字段添加
- insert into info(id,name,score) values(3,'dhc',20)
- SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
-
- 例:select * from first_group;
- select name,score from first_group where id=1;
- UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式];
-
- 例:insert into first_group (id,name,score,passwd) values(3,'lisi',77,123456);
- insert into CLASS (id,name,score,passwd) values(4,'lzz',66,123456);
- select * from first_group;
-
- update CLASS set id=5 where name='zhangsan';
- select * from first_group;
-
- update CLASS set name='lichen',score=100 where id=2;
- select * from first_group;
- DELETE FROM 表名 [WHERE 条件表达式];
-
- 例:delete from first_group where id=3;
- select * from first_group;
- select name from first_group\G #以列表方式竖向显示
- select * from CLASS limit 2; #只显示头2行
- select * from CLASS limit 2,3; #显示第2行后的前3行
- ALTER TABLE 旧表名 RENAME 新表名;
-
- 例:alter table first_group rename first;
- show tables;
- select * from first;
- ALTER TABLE 表名 ADD status varchar(50) default '彼方尚有荣光在';
-
- #default ‘地址不详’:表示此字段设置默认值 地址不详;可与 NOT NULL 配合使用
-
- 例:alter table first add status varchar(50) default '彼方尚有荣光在';
- ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key];
-
- 例:alter table first change name student_name varchar(20) unique key;
- select * from first ;
-
- 例:insert into first (id,name,score,passwd) values(1,'ABC',250,123456);
- select * from first ;
- insert into first (id,name,score,passwd) values(6,'MNQ',250,123456);
- ALTER TABLE 表名 DROP 字段名;
-
- 例:alter table first drop score;
- 例:use SCHOOL;
- create table if not exists test (id int(4) zerofill primary key auto_increment,student_name varchar(20) not null,cardid varchar(18) not null unique key,hobby varchar(50));
-
- #显示表的内容字段
- desc test;
字段 | 说明 |
if not exists | 表示检测要创建的表是否已存在,如果不存在就继续创建 |
int(4) zerofill | 表示若数值不满4位数,则前面用“0”填充,例0001 |
auto_increment | 表示此字段为自增长字段,即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次 |
unique key | 表示此字段唯一键约束,此字段数据不可以重复;一张表中只能有一个主键, 但是一张表中可以有多个唯一键 |
not null | 表示此字段不允许为NULL |
创建如果没有test表则需要创建,id:int整型(4)字段,若字段不满足指定长度,则在前面填充0,主键会从1自动增长;student_name :varchar(20)可变长度字段,指定最多20个字符,其中not null为非空值;cardid :varchar(20)唯一键不能为空值;hobby:carchar(50)
每次插入新的内容时,主键id都会递增,若失败不递增。再次插入新的内容时不需要指定主键值。若不添加主键值时,即使添加失败也会递增
查看原始数据表
- create table 新表名 like 复制的表名;
- 复制格式,能够复制表的格式到新表,但是没有内容
- insert into 新表名 select * from 复制的表名;
- 复制原表内容到新表
- create table 新表名 (select * from 复制的表名)
- 数据结构和数据一起复制过来了,克隆
- delete from CLASS;
- #DELETE清空表后,返回的结果内有删除的记录条目;
- 工作时是一行一行的删除记录数据的;如果表中有自增长字段,使用DELETE FROM
- 删除所有记录后,在此添加的记录会从原来最大的记录id后面继续自增写入数据
- truncate table CLASS1;
- #TRUNCATE清空表后,没有返回被删除的条目:TRUNCATE
- 工作时是将表结构按原样重新建立
- 因此在速度上TRUNCATE会比DELETE清空表快
- 使用TRUNCATE TABLE 清空表内数据后,id会从1开始重新记录
- ##添加临时表CLASS2
- create temporary table CLASS2 (
- id int(4) zerofill primary key auto_increment,
- name varchar(10) not null,
- cardid int(18) not null unique key,
- hobby varchar(50));
-
- ## 查看当前库中所有表
- show tables;
- ##在临时表中添加数据
- insert into test03 values(1,'zhangsan',123456789,'watch a film');
- ##查看当前表中所有数据
- select * from CLASS2;
- ##退出数据库
- quit
-
- ##重新登录后进行查看
- mysql -u root -p
- ##查看之前创建的临时表中所有数据,发现已经被自动销毁
- select * from CLASS2;
- CREATE USER '用户名'@'来源地址' [IDENTIFIED BY [PASSWORD] '密码'];
-
- ‘用户名’:指定将创建的用户名
- ‘来源地址’:指定新创建的用户可在哪些主机上登录,可使用IP地址、网段、主机名的形式,本地用户可用localhost,允许任意主机登录可用通配符%
- ‘密码’:
- 若使用明文密码,直接输入’密码’,插入到数据库时由Mysql自动加密;
- 若使用加密密码,需要先使用SELECT PASSWORD(‘密码’); 获取密文,再在语句中添加 PASSWORD ‘密文’;
- 若省略“IDENTIFIED BY”部分,则用户的密码将为空(不建议使用)
CREATE USER 'lic'@'localhost' IDENTIFIED BY '123456';
- select password('123456');
- create user 'lic'@'localhost' identified by password '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';
-
-
- 查看用户信息
- 创建后的用户保存在mysql 数据库的user表里
- use mysql
- select user,authentication_string,host from user;
- use mysql;
- select User,authentication_string,Host from user;
- rename user 'lichen'@'localhost' to 'zhangbin'@'localhost';
- select user,authentication_string,host from user;
- drop user 'zhangbin'@'localhost';
- select user,authentication_string,host from user;
set password = password('654321');
set password for 'zhangb'@'localhost' = password('123123');
- vim /etc/my.cnf
- #添加此行
- skip-grant-tables
-
- systemctl restart mysqld.service
- mysql
- update mysql.user set authentication_string = password('001122') where user='root';
-
- flush privileges;
GRANT语句:专门用来设置数据库用户的访问权限。当指定的用户名不存在时,GRANT语句将会创建新的用户;当指定的用户名存在时,GRANT 语句用于修改用户信息。
权限 | 说明 |
select | 查询数据 |
insert | 插入数据 |
update | 更新数据 |
delete | 删除数据 |
create | 创建库、表 |
drop | 删除库、表 |
index | 建立索引 |
alter | 更改表属性 |
event | 事件 |
trigger on | 创建触发器 |
show grants for zhangb@localhost; #查看用户权限
grant select on SCHOOL.* to zhangb@localhost; #用户lic只有SCHOOL库下所有表的查询权限
使用Navicat连接Mysql登录查看
登录成功后可以查看表中的内容
revoke select on school.* from zhangb@localhost; #删除zhangb的权限
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。