1、连接Mysql
mysql -u用户名 -p
键入命令mysql -u root -p, 回车后提示输入对应密码,然后回车即可进入到mysql中了。注意,如果是连接到另外的机器上,则需要加入一个参数-h主机IP2、授予权限,若所输入用户不存在,则创建该用户。(Mysql里面命令以分号;结束)
grant on命令格式:grant 权限 on 库名.表名 to 用户名@来源地址 [identified by ‘密码’];
如增加一个 cxl 用户,密码为123,让其可以在本机登录,并对所有数据库有查询、插入、修改、删除的权限。
grant语句:用来设置数据库用户的访问权限,当指定的用户不存在时,GRANT语句将会创建新的用户。使用GRANT语句授权的用户记录,会保存到mysql库的user、db、host、tables_priv等表中,无需刷新便立即生效。
权限列表:用于列出授权使用的各种数据库操作,一逗号分隔,如“select,insert,update,delete”使用“all”表示所有权限
库名.表名:用于指定授权数据库的库名和表名,其中可以使用通配符”*“。如”name.*“ 表示授权操作的对象是name库下的所有表
用户名@来源地址: 用于指定授权的用户名称和允许访问的客户机地址,即谁能连接,从哪里连接。来源地址可以是域名、ip,还可以使用通配符”%“,表示某个区域内或网段内所有地址,如”%.ys.com“,”192.168.1.%“。
identified by:用于设置用户连接数据库时所使用的密码,若在新建用户时省略了此项,则密码为空。
grant select,insert,update,delete on *.* to cxl@localhost identified by ‘123’;
如果希望该用户能够在任何机器上登陆Mysql,则将localhost改为"%"。如果你不想cxl有密码,可以再打一个命令将密码去掉。
grant select,insert,update,delete on *.* to cxl@localhost identified by ‘’;
我们还可用通过:
show grants [for 用户名@来源地址]; 查看指定用户的权限,中括号缺省时显示当前用户权限
revoke 权限列表 on 数据库名.表名 from 用户名@来源地址; 撤销指定用户的指定权限
显示数据库列表 show databases;
选择某个数据库 use <表名>;
显示库中数据表 show tables;
显示数据表的结构 describe <表名>; 或者 show columns from <表名>;
创建库 create database <库名>;
删除库 drop database <库名>;
创建表 create table <表名> (字段列表);
删除表 drop table <表名>;
4、操作数据表
1)插入数据:
insert into 表名[(字段1,字段2,···)] values(字段1的值,字段2的值,···)[,(字段1的值,字段2的值,···)];
注意:insert into每次只能向表中插入一条记录,所以用到多个()来多次插入。
2)查询数据:
select from命令用来查询表中的数据。
select <字段1, 字段2, ...> from < 表名 > where < 表达式 >;
查询所有数据 select * from <表名>;
查询前2行数据 select * from <表名> order by id limit 0,2;
select一般配合where使用,以查询更精确更复杂的数据。
3)删除数据
delete from <表名> where <表达式>;
- 如果没有指定 WHERE 子句,MySQL表中的所有记录将被删除。
- 你可以在 WHERE 子句中指定任何条件
- 您可以在单个表中一次性删除记录。
当你想删除数据表中指定的记录时 WHERE 子句是非常有用的。
4)修改数据
update 表名 set 字段名1=字段值1[,字段名2=字段值2] where 条件表达式;
- 你可以同时更新一个或多个字段。
- 你可以在 WHERE 子句中指定任何条件。
- 你可以在一个单独表中同时更新数据。
当你需要更新数据表中指定行的数据时 WHERE 子句是非常有用的。UPDATE语法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。如果没有WHERE子句,则更新所有的行。
5)增加字段
alter table 表名 add 字段 类型;
如:
mysql> ALTER TABLE table_name ADD field_name field_type;
当然也可以删除或修改字段:
修改原字段及其类型
mysql> ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
删除字段
mysql> ALTER TABLE table_name DROP field_name;
6)修改表名
rename table 原表名 to 新表名;
当你执行 RENAME 时,你不能有任何锁定的表或活动的事务。你同样也必须有对原初表的 ALTER 和 DROP 权限,以及对新表的 CREATE 和 INSERT 权限。
如果在多表更名中,MySQL 遭遇到任何错误,它将对所有被更名的表进行倒退更名,将每件事物退回到最初状态。
5、一些常用子句
where 子句
如果我们想在MySQL数据表中读取指定的数据,WHERE 子句是非常有用的。使用主键来作为 WHERE 子句的条件查询是非常快速的。如果给定的条件在表中没有任何匹配的记录,那么查询不会返回任何数据。
- 你可以在WHERE子句中指定任何条件。
- 你可以使用AND或者OR指定一个或多个条件。
- WHERE子句可以运用于SQL的 SELECT,DELETE 或者 UPDATE 命令。
- WHERE 子句类似于程序语言中的if条件,根据 MySQL 表中的字段值来读取指定的数据。
LIKE 子句
WHERE 子句中可以使用等号 (=) 来设定获取数据的条件,如 "runoob_author = 'Sanjay'"。但是有时候我们需要获取 runoob_author 字段含有 "jay" 字符的所有记录,这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。- 你可以使用LIKE子句代替等号(=),如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。
- LIKE 常与 '%' 或 '_' 一同使用。
- 你可以使用AND或者OR指定一个或多个条件。
- 你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。
搜索以"jay"为结尾的的所有记录:
mysql> SELECT * from runoob_tbl WHERE runoob_author LIKE '%jay';
搜索具有四位字母的记录,且以"jay"结尾:
mysql> SELECT * from runoob_tbl WHERE runoob_author LIKE '_jay';
- 你可以使用任何字段来作为排序的条件,从而返回排序后的查询结果。
- 你可以设定多个字段来排序。
- 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
- 你可以添加 WHERE...LIKE 子句来设置条件。
mysql> select * from lab.member order by age ASC
将 lab.member 表中的数据按照 age 的升序顺序输出查询结果。
1、导出数据和表结构:
mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql
敲回车后会提示输入密码
2、只导出表结构
mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p -d abc > abc.sql
1、首先建空数据库
mysql>create database abc;
2、导入数据库
方法一:
(1)选择数据库
mysql>use abc;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;
方法二:
mysql -u用户名 -p密码 数据库名 < 数据库名.sql
#mysql -uabc_f -p abc < abc.sql
7、Mysql 连接的使用
前面我们已经学会了如果在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。
这里我们要学习如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。
可以在SELECT, UPDATE 和 DELETE 语句中使用 Mysql 的 JOIN 来联合多表查询。
JOIN 按照功能大致分为如下三类:
- INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
- LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
- RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。