基本的增删改查
数据库的命名规则:
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 enginesG #查看所有支持的存储引擎
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';