1、查看数据库(三种方法)
1.1、登录数据库直接查看
[root@localhost ~]# mysql -uroot -p123456 mysql> show databases;数据库解释:
1:information_schema这个数据库保存了MySQL服务器所有数据库的信息。如数据库名,数据库的表,表栏的数据类型,访问权限等。 [ˈskimə] 元数据(描述数据的数据)
2:performance_schema 这是MySQL5.5新增的一个性能优化的引擎:命名PERFORMANCE_SCHEMA,主要用于收集数据库服务器性能参数。MySQL用户是不能创建存储引擎为PERFORMANCE_SCHEMA的表
3:mysql库是系统库,里面保存有账户信息,权限信息等。
4:mysql5.7增加了sys 系统数据库,通过这个库可以快速的了解系统的元数据信息,元数据是关于数据信息的数据,如数据库名或表名,列的数据类型,或访问权限等。
1.2、以行的方式显示数据库,添加\G 参数;
mysql> show databases\G;1.3、在shell环境下查看数据库
使用 mysql -e 命令,后面再跟上SQL语句
[root@localhost ~]# mysql -e "show databases" -uroot -p123456#这种方式使用的是非交互式模式登录mysql查看数据库
2、创建数据库
语法:create database 数据库名;
2.1、创建数据库注意事项:
1)、创建数据库时,数据库是以目录的存储方式表示数据库。所以在创建数据库时,不能有一些特殊字符。如果非要加上特殊字符的话,需要在数据库名前后加上反撇符号 " ` ` "
2)、数据库名不能超过64个字符
3)、数据库不能重名,必须是唯一的
2.2、创建一个数据库
mysql> create database db1; #正常创建的数据库 mysql> create database `db-2`; #创建带有特殊字符的数据库 mysql> create database db2 default character set[=]utf8; #创建数据库时,添加默认的字符集(创建数据库时,建议这么创建)2.3、选择要操作的数据库
mysql> use db1;2.4、查看处于哪个数据库下
mysql> select database();2.5、在命令行选择默认要进入的数据库
[root@localhost ~]# mysql -uroot -p123456 db1 mysql> select now(),user(),database(); #now显示当前时间,user显示当前登录mysql的用户,database显示当前数据库;2.6、删除数据库
mysql> drop database `db-2`;
2.7、移动数据库目录
#删除数据库有些时候不太安全,如果想要恢复的话会非常麻烦,但可以通过移动数据库目录的方式把数据库移动到别的目录,这样以后想要恢复的话,可以直接从目录下恢复回来。
[root@localhost ~]# mv /data/mysql/data/db1/ /tmp/ #把db1数据库移动到tmp目录
2.8、使用 if exists(如果存在) 子句避免删除和创建数据库时出现的MySQL错误信息
例如:mysql> drop database if exists `db-2`; //如果db-2数据库存在则删除,不存在则不删除
以上是删除数据库,还有创建数据库的时候使用的是 if not exists(如果不存在)
例如:mysql> create database if not exists db1; //如果db1数据库不存在,则创建,否则不创建
3、关于表的操作
3.1、创建表 create
语法:create table 数据库名.表名 (字段名(类型),字段名(类型)....);
例如:mysql> create table db1.t1 (id int,name varchar(10),age int,sex char(1)); //在db1数据库下创建一个 t1 表。
3.2、查看表信息
mysql> use db1; #进入数据库 mysql> show tables; #查看表信息
3.3、查看表结构
mysql> desc db1.t1; #查看db1数据库的 t1表结构;
还可以用其他命令查看表结构
mysql> explain mysql.user; mysql> show columns from mysql.user; mysql> show fields from mysql.user;以上三种方法基本相似;
mysql> show columns from mysql.user like '%user';#这种方式查看表结构,是以一种过滤的方式查看,以user结尾的行。
3.4、查看创建表时,执行了哪些命令
例如:
mysql> show create table db1.t1\G; #查看创建表t1时,执行了哪些命令,以行的的方式查看;
3.5、创建表时指定默认的存储引擎和默认的字符集
mysql> create table db1.t2(id int(20),name char(10),age int) engine=innodb default charset=utf8;
3.6、删除表
mysql> drop table db1.t2; #删除db1数据库下的 t2表
3.7、禁止预读信息
#在数据库内进行一些操作时,一般会弹出一些提示信息,如果不想要这些提示信息,可以在登录数据库时添加 -A参数禁止。
例如:
[root@cong11 ~]# mysql -uroot -p123456 -A
3.8、修改表名称
语法:alter table 表名 rename 新表名
例如:
mysql> alter table db1.t1 rename tt1; #修改db1数据库下的t1表改为tt2; mysql> show tables from db1; #修改完后查看
3.9、修改表中的字段类型
语法:alter table 表名 modify 要修改的字段名 要修改的类型;
例如:先查看表结构
mysql> alter table db1.tt1 modify name varchar(15); #修改name字段的类型 为varchar(15)
3.8、修改表中的字段类型和字段名称
语法:alter table 表名 change 原字段名 新字段名 新字段类型;
例如:
mysql> alter table db1.tt1 change name stname varchar(20); #修改db1数据库下 tt1 表的name字段修改为 stname 字段类型修改为 varchar(20);
注意:change 和 modify 的区别
change 对列进行重命名和更改列的类型。modify 可以改变列的类型,但不可以改变列的名称。
3.9、在表中添加字段
语法:alter table 表名 add 字段名 字段类型;
例如:
mysql> alter table db1.tt1 add year date; #添加一个 year字段 类型为data,到db1数据库的tt1表下
3.10、在表中指定位置添加字段
#在第一列添加一个字段 first参数;
mysql> alter table db1.tt1 add aaa int first; #在第一列添加一个aaa字段,类型为int;
3.11、在age后面添加一个字段 使用after参数
mysql> alter table db1.tt1 add address varchar(40) after age; #在age后面添加一个address字段,类型为varchar;
3.12、删除表中字段
语法:alter table 表名 drop 字段名;
例如:
mysql> alter table db1.tt1 drop year; #删除表中year字段;
4、关于表记录的操作(对表中数据进行操作)
4.1、插入字段<记录> insert
语法: insert into 数据库名.表名(字段1,字段2,字段3) values(字段值1,字段值2,字段3);
插入记录时要对应字段类型
例如:
mysql> insert into db1.tt1(id,stname,age,sex) values(1,'zhangsan',18,'m');
4.2、同时插入多条数据
例如:
mysql> insert into db1.tt1(id,stname,age,sex) values(2,'lisi',19,'m'),(3,'wangwu',20,'w');
4.3、给不同列分开插入数据
例如:
mysql> insert into db1.tt1(id,stname) values(4,'zhaoliu');
4.4、查看表中记录 select
语法:select 列名(*) from 表名称; # *号表示查询表中所有列(字段)的值;
mysql> select * from db1.tt1; #查询表中所有记录
当表记录比较多时,可以使用\G查看;
mysql> select * from db1.tt1\G;
4.5、只查询表中某个字段的内容
mysql> select stname from db1.tt1; #查询name字段的内容
4.6、查看别的数据库的表或者不在本数据库上进行查看
语法:select 字段 from 数据库名.表名;
4.7、删除表中的记录 delete参数
例如:
mysql> delete from db1.tt1 where age is null; #删除age为空的行
发现少了zhaoliu 这一行;
4.71、删除整个表记录
mysql> delete from db1.tt2; #删除db1数据库下tt2表的所有记录(数据)
4.8、更新记录 update参数
mysql> update db1.tt1 set age=25 where id=2; #把id=2 的age字段 更新为25;
4.8.1、更新多条记录,使用,隔开
mysql> update db1.tt1 set id=6,stname='liuliuliu' where age=18; #把 age=18的 id和stname的值更新
4.9、去重复查询 distinct参数
语法:select distinct 列名 from 数据库.表名;
4.10、使用and和or 进行多条件查询
mysql> select * from db1.tt1 where id>1 and age>19; #查询表中 id>1 和 age>19 的记录;mysql> select * from db1.tt1 where id=2 or stname='zhangsan'; #查询表中 id=2 或 stname='zhangsan' 的记录;
4.11、MySQL区分大小写查询 binary(二进制)
mysql默认查询是不区分大小写的
binary 是类型转换运算符,它用来强制它后面的字符串为一个二进制字符串,可以理解为在字符串比较的时候区分大小写
插入两条数据
mysql> insert db1.tt1(id,stname,age,sex) values(7,'KILL',32,'m'),(8,'kill',33,'w');查询数据
mysql> select * from db1.tt1 where stname='kill';
这时候是不区分大小写的;
mysql> select * from db1.tt1 where binary stname='kill'; #再次查看,加入binary参数 mysql> select * from db1.tt1 where binary stname='KILL'; #查看大写
4.12、MySQL查询排序 order by 参数
语法:select [distinct] 字段1,字段2 from 数据库名.表名 order by 字段名 升序(asc)/降序(desc);
例如:
mysql> select * from db1.tt1 order by age; #查看age字段的排序(默认为升序,从小到大)mysql> select * from db1.tt1 order by age desc; #降序操作
4.13、关于MySQL命令帮助
help 会告诉我们很多使用方法和信息
使用方法:
mysql> help show; mysql> help select;