SQL语句总结
SQL语言
-
DML(Data Manipulation Language)数据操纵语言 如SELECT、UPDATE、INSERT、DELETE
-
DDL(Data Definition Language)数据库定义语言 如CREATE、ALTER、DROP
-
DQL(Data Manipulation Language)数据查询语言 如SELECT子句,FROM子句,WHERE
-
DCL(Data Control Language)数据库控制语言 如rant,deny,revoke
一般实际操作不经常用DCL
一、创建
-
创建数据库
create database etcchina;
use etcchina; -
创建表
例如:
create table etc1 (id int primary key,name varchar(20) not null,sex varchar(2) not null,age int not null,address varchar(20) not null,phone int); -
查看表的定义
desc 表名字;
desc 库名.表名; -
查看更详细的信息
show create table 库名.表名\G;
二、修改
-
修改字段名称
alter table 表名 change 老字段名称 新字段名称 字段类型(约束条件);
例如:alter table etc1 change phone phone_number int;
注意:modify和change都能改变字段的类型,但是change能改变字段的名称,modify不能。 -
在表中插入字段
alter table 表名 add column 新增的字段名称 字段类型(约束条件);
column可以省略不写,这样插入默认是在最后一行的。
例如:alter table etc1 add time datetime not null; -
按照字段排列顺序增加
alter table 表名 add 新增字段 字段类型 after 字段(排在谁的后边写谁)
注意:这种方式添加不能同时添加约束条件 -
对于已有的字段进行排序,
alter table 表名 modify 已有字段 字段类型 位置
例子:
alter table etc1 modify name varchar(20) first; 把name字段放到首行
alter table etc1 modify time datetime after age; 把datetime字段放到age字段后面 -
在表中删除字段
alter table 表名 drop column 字段名称;
colunm可以省略 -
修改表名
alter table 表名 rename 新表名;
例子:alter table etc1 rename etc_1;
三、插入
-
三种方法
insert into 表名(字段1,字段2,字段3,…字段n) values(‘内容1’,‘内容2’…);
insert into 表名 values(‘内容1’,‘内容2’…);
insert into 表名 values (‘内容1’,‘内容2’…),(‘内容1’,‘内容2’…);
例子:insert into etc_1 values (‘张冰晗’,001,‘女’,15,‘2014-02-24’,‘河南’,23456478);
注意:如果按后两种方法插入,values后边的顺序必须与字段的顺序一样,否则报错 -
更新记录(更改内容)
update 表名 set 字段=修改的内容 where 字段=‘修改谁的’;
例子:update etc_1 set age=18 where name=‘张冰晗’; -
删除记录
delete form 表名 where 字段=‘删除的内容’
例子:delete from etc_1 where age=18;
四、查询
-
查询
select * from etc_1 limit 3; 查看数据表的前3行
select * from etc_1 limit 1,10; 从第1行到第10行
select * from etc_1 order by age; 按正顺序排序
select * from etc_1 order by age desc; 倒叙查看
select count(*) from etc_1; 查看有多少行
select count(name) from abc; -
子查询:
select * from etc_1 where age=(select max(age) from etc_1); 最大 (min最小 sun求和 avg平均)
select max(age) from etc_1;
select name,age from etc_1; 多项定义查询
select * from etc_1 where sex=‘女’ and age =15; 精确查询 (and可以换成&&) &&
select * from etc_1 where age between 18 and 20; 查询一个范围的
select distinct age from etc_1; 去掉重复的
按条件查找,可匹配正则 % 代表任意一个字符 _代表一个字符*
select * from etc_1 where name like ‘%冰%’; 按条件查询
五、备份还原
-
备份
mysqldumpmysqldump -uroot -p etcchina etc_1 > etc_1_backup.sql
备份表etc_1到etc_1_backup.sql
mysqldump -uroot -p --databases etcchina > etcchina_backup.sql
备份数据库etcchina到etcchina_backup.sql
mysqldump -uroot -p --all-databases > database_backup.sql
备份所有数据库到database_backup.sql -
还原
-
mysql> create database etcchina; 需要重新创建数据库database
mysql -uroot -p etcchina < etcchina_backup.sql
恢复数据库etcchina
六、授权
-
授权
grant all on etcchina.* to mysql@‘192.168.17.%’ identified by ‘Dacheng@2019’;
flush privileges;
grant 要给的权限 on 要授权的数据库 to 用户@‘localhost’ identified by ‘密码’; -
查看授权
show grants; 查看当前用户权限
show grants for mysql@‘192.168.17.%’; 查看其它用户权限 -
撤销已经给予的权限
revoke all on etcchina.* from mysql@‘192.168.17.%’;
-
删除授权的用户
drop user mysql@‘192.168.17.%’;
[root@localhost ~]# id myslq
id: myslq: no such user
未完待续…