mysql

mysql基础语句

admin · 7月2日 · 2020年

1.创建用户

创建只能本地登陆的用户USER,允许在[数据库名]上进行select,insert,update,delete操作,密码[PASSWD:]

mysql> grant select,insert,update,delete on [数据库名].* to USER@localhost Identified by "[PASSWD]";

创建允许远程登陆的用户USER,允许在[数据库名]上进行select,insert,update,delete操作,密码[PASSWD]:

mysql> grant select,insert,update,delete on 数据库名.* to 'USER'@'%' Identified by "[PASSWD]";

创建后需要刷新mysql权限

mysql> flush privileges;

2.增查删改

1.对数据库操作:

create database 数据库名;
show databases;
drop database 数据库名;
use 数据库名;

2.对表的操作:

create table 表名(字段 数据类型,字段 数据类型。。。);
show tables;
drop tables; 
describe 表名;
rename table 旧表名 to 新表名; 

3.对列的操作

alter table 表名 add 列名 数据类型;
alter table 表名 change 旧列名 新列名 数据类型;
alter table 表名 drop 列名;

4.对数据的操作:

insert into 表名 values (数据1,数据2,数据3);        //向表内插入数据
select * from 表名 where 条件;                      //查找表中的指定数据
delete from 表名 where 条件;                       //删除表中的指定数据
update 表名 set 字段=新值... where 条件;            //修改表中的指定数据

a. 用in限定范围:select * from students where native in ('湖南', '四川')   
  
b. between...and:select * from students where age between 20 and 30  
  
c. 比较测试符:(包括=,<>,<,<=,>,>=)select * from students where name = '李山'   
  
d. select * from students where name  like  '李%' (注意查询条件中有“%”,则说明是部分匹配,而且还有先后信息在里面,即查找以“李”开头的匹配项。所以若查询有“李”的所有对象,应该命令:'% 李%';若是第二个字为李,则应为'_李%'或'_李'或'_李_'。)   
  
e. []匹配检查符:select * from courses where cno like '[AC]%' (表示或的关系,与"in(...)"类似,而且"[]"可以表示范围,如:select * from courses where cno like '[A-C]%')注:关于这个字符我在mysql里用的时候mysql把它当两个普通自符处理的。   
[^]stockname like '[^F-M]%' --------- (^排除指定范围)   
  
f. count()求总数,如:select count(*)  from students (求学生总人数)   
  
g. avg(列)求平均,如:select avg(mark)  from grades where cno=’B2’   
  
h. max(列)和min(列),求最大与最小

5.赋予用户权限

#grant 赋予用户,查询、插入、更新、删除 数据库中所有表数据的权限
grant all privileges on *.* to user@'%'
grant select on *.* to user@'%';
grant insert on *.* to user@'%';
grant update on *.* to user@'%';
grant delete on *.* to user@'%';
或
grant select, insert, update, delete on *.* to user@'%'

#grant 赋予用户,创建表、索引、视图、存储过程、函数的权限
grant create on *.* to user@'%';
grant alter  on *.* to user@'%';
grant drop   on *.* to user@'%';

改密码
set password for 'root'@'localhost' = password('12345678');

3.数据导出导入

1.数据导出

导出所有数据库
mysqldump -u [数据库用户名] -p -A>[备份文件的保存路径]

导出数据和数据结构
mysqldump -u [数据库用户名] -p [要备份的数据库名称]>[备份文件的保存路径]

只导出数据不导出数据结构
mysqldump -u [数据库w用户名] -p -t [要备份的数据库名称]>[备份文件的保存路径]

4)导出数据库中的Events
mysqldump -u [数据库用户名] -p -E [数据库用户名]>[备份文件的保存路径]

5)导出数据库中的存储过程和函数
mysqldump -u [数据库用户名] -p -R [数据库用户名]>[备份文件的保存路径]

2.数据导入

使用“source”命令
mysql>source [备份文件的保存路径]

使用“<”符号
mysql -u root –p < [备份文件的保存路径]

4.备份数据库

导出整个数据库
mysqldump -u用户名 -p数据库名 > 导出的文件名
mysqldump -uroot -p123456 database_name > outfile_name.sql

导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u user_name -p database_name table_name > outfile_name.sql

导出一个数据库结构
mysqldump -u user_name -p -d –add-drop-table database_name > outfile_name.sql
-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table

带语言参数导出
mysqldump -uroot -p –default-character-set=latin1 –set-charset=gbk –skip-opt database_name > outfile_name.sql