Mysql常用命令
在windows命令提示行下改密码Mysqldamin -u root -proot password 新密码,新密码
mysql -uroot -proot 登陆
在mysql里面 修改密码alter user user() identified by ‘123‘; 把root密码改成123
Mysql -h 127.0.0.1 -u root -p root 指定ip登陆
Select database(); 查看当前数据库
Select version(); 查看当前数据库版本
Select now(); 查看当前时间
Select user(); 查看当前用户
Show databases; 查看所有数据库
数据定义语言 ddl 创建库, 修改库(只能修改编码属性), 删除库
创建数据库 create database
Create database test; 创建数据库
Create database if not exists test1 创建数据库,如果不存在的话创建
Create database if not exists test2 character set utf8 给数据库指定字符集为utf8
修改数据库 alter database
Alter database test1 character set latin1; 修改test1字符集为拉丁语
Use test1 使用test1数据库
show variables like ‘character%‘; 查看test1数据库字符集,已经为拉丁语 默认是utf8
删除数据库 drop database test1 删除数据库test1
数据库 控制语言dml 创建表 , 修改表, 更新表,删除表
创建表
CREATE TABLE IF NOT EXISTS test(
`t_id` INT UNSIGNED AUTO_INCREMENT,
`t_title` VARCHAR(100) NOT NULL,
`t_author` VARCHAR(40) NOT NULL,
`t_date` DATE,
PRIMARY KEY ( `t_id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;
ENGINE 设置存储引擎,CHARSET 设置编码。
1、查看数据库表
Show tables from reader; 如果查询当前数据库中的表用show tables
2、查看数据表基本结构 desc 表名
Show columns from 表名; 或者用desc 表名;
3、查看表详细结构语句,可以用来显示数据表的创建语句
Show create table 表名;
alter修改列,只能修改列的属性包括字符类型,是否为空,是否唯一和键的约束。
添加列 alter table reader add email varchar(30)
修改列名 alter table reader change email msg varchar(20); 用first 和after指定放哪
修改列属性 alter table reader modify email varchar(30) email varchar(25)
删除列 alter table reader drop email2
修改表名 alter table reader rename to bookinfo;
添加外键 alter table emp add foreign key (主表列名) refreences dept (从表列名)
删除表 drop table t1 drop table if exists table 如果存在就删除,不存在就不报错
表分区,意思就是把一张表分为多个分区,分区块也可以在不同的磁盘,单都属于这张表。
分区表在查询比较大的表时,这样比较快
检查系统是否支持表分区 mysql>show plugins 显示 partition active 表示支持
创建表,指定分区 ,range 代表范围 应用于非常大的表
mysql> create table bookinfo(
-> book_id int,
-> book_name varchar(20)
-> )
-> partition by range (book_id)(
-> partition p1 values less than(20109999),
-> partition p2 values less than(20159999)
-> );
Query OK, 0 rows affected (0.07 sec)
查询时用 select * from bookinfo partition(p1);
Update 更新表 更新表里面的值
Update test1 set name=‘tom’ where id=1;
事务。在做删除操作是先开启事务,
删除表 drop>truncate>delete 删除的效果;
Delete from 表 where 条件 一行一行的删
Delete from 表
Truncate 表名, 直接清空表 不支持回滚
Drop 表名 直接删除整个表
Dml 支持事务
开启事务 begin,或者用start transaction 开启事务
事务必须以commit 或rollback结束;
select * from table 查询表
Distinct 去重 order by 一定要在最后才能用 默认升序asc 降序desc
Where 条件查询 > < >= <= <> in and, or not
例;查询分数为80,90的人呢 select * from 表 where 分数 in(80,90);
聚合函数一定要用() Count sum avg max min
分组函数 group by having 后面还能用聚合函数
Where 后面不能放聚合函数,而having后面能用
约束
主键约束 primary key 唯一约束 unique 非空约束 not null
主键自增长auto_increment 只支持int 和bigint 类型 (先设置主键才能设置自增长)
Alter table 表名 modify id int auto_increment,primary key
外键约束 foreign key (列名)references 主表名(列名)
外键在的表为从表,a为从表,b为主表 constraint 指定个外键名为wj
mysql> alter table a add constraint wj foreign key a(bno) references b(bno);
Query OK, 4 rows affected (0.06 sec)
Records: 4 Duplicates: 0 Warnings: 0
建表方式1对1 1对多, 多对多
在多方添加字段,作为外键,指向1方的主键;
笛卡尔积 select * from 表1, 表2
内连接 select * from emp inner join dept on emp.dno=dept.did;
Select * from emp e, dept d where e.dno=d.did;
外连接:左外连接 select * from emp left outer join dept on emp.dno=dept.did; 常用左外连接
右外连接;select * from emp right outer join dept on emp.dno=dept.did; outer可以省略
内连接和外连接的区别
内连接是查询的是2张表交集的数据,主外键所关联的数据
左外连接查询的是左表中所有数据和2张表主外键关联的数据
右外连接查询的是右表中所有数据和2张表主外键关联的数据
Mysql 备份数据库 主要用输入输出字符,备份> 还原<
在没有进入sql时,用命令行mysqldump -u用户名 -p > 文件路径备份名 然后输入密码
C:\Users\Administrator>mysqldump -uroot -p test > d:/test.sql 输出到d盘根目录
Enter password: ****
备份表
C:\Users\Administrator>mysqldump -uroot -p test emp >d:/emp.sql
Enter password: ****
数据库还原
在还原是必须先创建数据库,然后再还原,可以指定数据库名字
Mysql -uroot -p test < d:/etst.sql
表还原 在指定的库里用 source d:/test.sql
如果显示为乱码,输入命令 set names utf8