MySQL系列-----初始
基本的增删改查
数据库的命名规则: 1.可以由数字、字母、下划线、@、#、$ 2.区分大小写(里面的sql语句可以) 3.唯一性 4.不能使用关键字如 create select 5.不能单独使用数字 6.最长128位 设置默认:character_set_server=utf8 数据库增删查改 增:也就是创建 create database db1 操作文件夹(库) 增 create database db1 charset utf8; 改 alter database db1 charset gbk; 查 show databases; show create database db1; 删 drop database db1; 操作文件(表) >>use db1切换到文件夹下 增 create table t1(id int,name char(10))engine=innodb; 删 drop table t1; 改 alter table t1 add age int,sex male; 增加字段 alter table t1 modify name char(12); 修改长度 查 show tables; show create table t1; describe t1 查看表结构 操作文件的一行行内容(记录) 增 insert into t1 values(1,'egon'),(2,'egon2'),(3,'egon3');#默认的按位置一个一个传 insert into t1(name) values('egon'),('egon2'),('egon3'); t1(name)只传名字 删 delete from t1 全部删除 delete from t1 where id=4; #删除id为4的那一行 truncate t1; 全部删除了,当数据量比较大时用这种删除速度快 改 update t1 set name='sb' where id=4; 查 select * from t1;查看所有 select name from t1; select name,id from t1; default charset utf8;t 自增id create table t1(id int primary key,name char(10)); #主键,不为空且唯一 create table t3(id int not null unique,name char(10)); create table t5(id int primary key auto_increment,name char(10));就可以只传名字然后id自加了 insert into t5(name) values ('egon1'), ('egon2'), ('egon3'), ('egon4'), ('egon5'), ('egon6'), ('egon7'), ('egon8'), ('egon9'), ('egon10'), 查看:select * from t5 查看大于10的 select * from t5 id>5; 查看大于4小于9的 select * from t5 where id>4 and id<9; id 唯一且不为空 select * from t5 where name='egon5'; delete 删除完以后再想添加就是从之前的序号往后 truncate 全部删除,直接清空了,再添加就从头开始了 拷贝表 create table t6 select * from t5; 只拷贝了数据 create table t7 select * from t5 where 3=2; 只拷贝表结构 改表用 alter alter table t7 modify id int primary key auto_increment; insert into t7(name) values ('egon1'), ('egon2'), ('egon3'), ('egon4'), ('egon5'), ('egon6'), ('egon7'), ('egon8'), ('egon9'), ('egon10'), ('egon11'), ('egon12'), ('egon13'); 想要用delete删除1后面的egon是做不到的,因为他删的是一条记录 改表内容用update update改的是字段 想要改掉所有的名字 update t7 set name=''; 权限管理 用户对库、表、表里字段的管理权限 级别1:针对所有的库 级别2:
存储引擎
mysql中建立的库===>文件夹 库中建立的表===>文件 现实生活中我们用来存储数据的文件应该有不同的类型:比如存文本用txt类型,存表格用excel,存图片用png等 数据库中的表也应该有不同的类型,表的类型不同,会对应mysql不同的存取机制,表类型又称为存储引擎。 存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法 因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和 操作此表的类型) 二 mysql支持的存储引擎 MariaDB [(none)]> show engines\G #查看所有支持的存储引擎 MariaDB [(none)]> show variables like 'storage_engine%'; #查看正在使用的存储引擎 三 使用存储引擎 方法1:建表时指定 MariaDB [db1]> create table innodb_t1(id int,name char)engine=innodb; MariaDB [db1]> create table innodb_t2(id int)engine=innodb; MariaDB [db1]> show create table innodb_t1; MariaDB [db1]> show create table innodb_t2; 方法2:在配置文件中指定默认的存储引擎 /etc/my.cnf [mysqld] default-storage-engine=INNODB innodb_file_per_table=1 [root@egon db1]# cd /var/lib/mysql/db1/ [root@egon db1]# ls db.opt innodb_t1.frm innodb_t1.ibd innodb_t2.frm innodb_t2.ibd 练习 创建四个表,分别使用innodb,myisam,memory,blackhole存储引擎,进行插入数据测试 复制代码 MariaDB [db1]> create table t1(id int)engine=innodb; MariaDB [db1]> create table t2(id int)engine=myisam; MariaDB [db1]> create table t3(id int)engine=memory; MariaDB [db1]> create table t4(id int)engine=blackhole; MariaDB [db1]> quit [root@egon db1]# ls /var/lib/mysql/db1/ #发现后两种存储引擎只有表结构,无数据 db.opt t1.frm t1.ibd t2.MYD t2.MYI t2.frm t3.frm t4.frm #memory,在重启mysql或者重启机器后,表内数据清空 #blackhole,往表内插入任何数据,都相当于丢入黑洞,表内永远不存记录
权限问题
#创建用户 create user 'lin'@'localhost' identified by '123'; #insert,delele,update,select #级别1:对所有库,下的所有表,下的所有字段 grant select on *.* to 'lin1'@'localhost' identified by '123'; #级别2:对db1库,下的所有表,下的所有字段 grant select on db1.* to 'lin2'@'localhost' identified by '123'; #级别3:对表db1.t1,下的所有字段 grant select on db1.t1 to 'lin3'@'localhost' identified by '123'; #级别4:对表db1.t1,下的id,name字段 grant select (id,name) on db1.t1 to 'lin4'@'localhost' identified by '123'; grant select (id,name),update (name) on db1.t1 to 'lin5'@'localhost' identified by '123'; #修改完权限后,要记得刷新权限 flush privileges; 回收权限 revoke select on *.* from 'lin1'@'localhost';