MySQL快速掌握之基础篇

--  mysql的复习与进阶
--  创建一个结构完整的表
create table tab1(
id int(5) not null auto_increment primary key comment "这是ID",
name varchar(20) not null default "ran",
age int(2) not null
);
--  在id不能加default




--  复制表
create  table tab2 select * from tab1;


--  只复制结构,不复制内荣 
create  table tab2 like tab1; 


--  增加字段
alter table tab1 add sex varchar(2) not null;


--  删除字段
alter table tab1 drop sex;


--  修改字段
alter table tab1 change name myname varchar(20) not null;


--  增加主键
alter table tab1 add primary key (id);


--  修改表明
alter table tab1 rename to tab11;


--  插入数据
insert into tab1 values(null,"zhangran","23");


--  查询数据
--  limit 
select * from tab1 limit 1;


--  从第一个开始显示,显示一个
select * from tab1 limit 1,1;


--  排序
--order by asc|desc
select * from tab1 order by name asc;


--  更新数据
update tab1 set name="zhangranran",age="111" where name="zhangran" [order by][limit]


--  删除数据
delete from tab1 where name="zhangran";
--  此处要注意一点,truncated也可以当delete使用,而且比delete要快,是一种数据定义语言,但是不能摆正数据的安全性
--  truncated之后的自增长是重新开始的。


--  连接
--  交叉连接
select * from tab1,tab2;
--  所有的都能查出来,冗余的部分特别多


--  内连接
select tab1.name,tab2.myname from tab1 join tab2 on tab1.id=tab2.id;
--  加一个别名select * from tab1 a join tab2 b where tab1.id=tab2.id;




--  左连接跟右连接此处略了啊


--  自连接
--  需要加一个别名
select a.name,b.name from tab1 a,tab1 b where a.id=b.id;


--  子查询
select * from tab1 where name=(select name from tab2 where name="zhangran");


--  子查询做派生表
select * e.name from (select name from tab2) as e;


--  查询中的IN应用
select * from tab1 where name in(select name from tab2);


--  exists的使用,此时子查询作为条件,如果有返回值说明是真,无返回值是假
select * from tab1 where exists (select name from tab1 where id=1);


--  事务处理
--  把几条语句作为一个整体
--  每一个都执行成功了才算是事务的成功处理
--  否则返回最初状态
start transaction 
insert into tab1 values(null,"zhangdayi",22);
update tab1 set age=11 where name="zhangdayi";
commit




--  想要撤销这个事务
rollback




--  MySQL管理
--  数据备份
--  用户权限
--  访问控制
--  性能优化




--  数据备份
--  备份某个数据库的一个表
mysqldump -u root -p111111 wangluo tab1 >D:/mysql.sql


--  备份某个数据库里面的所有的表
mysqldump -u root -p111111 wangluo >D:/mysql.sql


--  一次性备份多个数据库
mysqldump -u root -p111111 --database db1 db2 >D:/mysql1.sql
--  需要特别注意的是database是单数而且它的前面是双横杠


--  将数据库中的所有的表备份

mysqldump -u root -p111111 --all --database >D:/mysql2.sql


-- 将SQL文件导入到数据库

source d:/aaa/bbb/ccc.sql;


--  用户的权限及访问控制
--  简单的举两个例子
grant all privileges on *.* to 'newuser' identified by '111111' with grant option;



grant update,select on *.* to 'newuser' identified by '111111';


--  性能优化
--  加索引,在查询操作时优化
--  优化数据库服务
mysql -verbose -help
--  记住,该指令不是在mysql环境下输入的是在cmd下输入的


--  MySQL的基础知识大概就这么多,关键是勤练,多琢磨,以后记得常回过头来看看!!!!!!!!!!!!!!!!!!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值