小白之MySQL基本操作语句

1.基本操作语句

1.1启动/关闭mysql服务器

启动:net start mysql

退出:exit

1.2连接服务器

mysql -uroot -p

2.管理数据库

查看当前服务器上管理的所有数据库:mysql>show databases; 

新建数据库:mysql>create database 库名; 

选择数据库:mysql>use 库名;

查看当前选择的数据库:mysql> select database(); 

删除数据库:mysql> drop database 库名;  

3、使用帮助

mysql> ? contents; 列出菜单

4、管理表结构(DDL)

4.1创建表

mysql>? Create

create table 表名(

属性1 约束条件,

属性2 约束条件,

.......,

);

例:mysql>create table Stu(

->id  int  PRIMARY KEY not null AUTO_INCREMENT,

->name varchar(30) not null,

->sex  char(2)  default 'M',

->age int(4) default 20

->);

其中:PRIMARY KEY :主键;

          not null/null :非空/空;

          AUTO_INCREMENT :自动加载;

          default :如果没有填写自动补写默认信息。

查看表结构:mysql>desc 表名

查看当前数据库下的所有表:mysql>show tables;

删除表:mysql>drop table 表名;

设置联合主键:mysql>PRIMARY KEY(aa,bb)

为已经添加好的数据表添加外键:

        语法:alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);

        例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id)

如果发现主键设置错了,应该是id是主键,但如今表里已经有好多数据了,不能删除表再重建了,仅仅能在这基础上改动表结构。

        先删除主键:alter table table_test drop primary key;

        然后再增加主键:alter table table_test add primary key(id);

        注:在增加主键之前,必须先把反复的id删除掉。

insert into stu1(name,birth,money) values('王五','1982-01-01',129.45);

mysql> create table stu2 like stu1;

ysql> create table stu3 select id,name,age from stu1;

4.2 修改表结构

mysql> alter table stu ADD email varchar(45) not null [after name|first];

//默认最后一个 放第一就用first

mysql> alter table stu MODIFY name varchar(45) not null[after name|first];

mysql> alter table stu CHANGE name sname varchar(45)[after name|first];

mysql> alter table stu DROP age;

mysql> alter table stu RENAMETO stu0;

mysql> alter table stu0 auto_increment=4; //下一个为5

4.3创建表间关系(部门和员工表)

create table dep(

id  int not null auto_increment,

dname varchar(45) not null,

primary key(id)

);

create table emp(

id int not null auto_increment primary key,   //设置为主键

dep_id int null ,

name varchar(25),

sex enum('M','F') default 'M',

age int(2) default 18,

FOREIGN KEY(dep_id) REFERENCES dep(id)  //设置为外键

);

insert into dep(dname) values('生产'),('销售'),('行政'),('技术'); //一次性插入四行

insert into emp(dep_id,name,sex,age) values(2,'李四','F',23);

insert into emp(dep_id,name,sex,age) values(3,'小明','M',25);

insert into emp(dep_id,name,sex,age) values(2,'张明','M',26);

insert into emp(dep_id,name,sex,age) values(1,'王五','F',23);

insert into emp(dep_id,name,sex,age) values(3,'张华','F',27);

5.DML

mysql> show create table  表名 \G   --查看表创建的语法

5.1在表中插入数据

mysql> insert into stu0(sname,email,sex) values('lisi','[email protected]','M');

mysql> insert into stu0 values(null,'wangwu','[email protected]','F');

mysql> insert into stu0 set sname='zhangsan',email="[email protected]";

mysql> insert into stu0(sname,email,sex) select name,birth,sex from stu1;

5.2修改数据

mysql> update stu0 SET  email='[email protected]';

mysql> update stu0 SET email='[email protected]' where id=4;

mysql> update stu0 SET email='[email protected]',sname='angel' ,sex='F' where id=5;

5.3删除数据

mysql> delete from stu0  where id>3;

6、QUERY

Select * from 表名;

mysql> select DISTINCT sname,email,sex from stu0 ;//distinct 去掉重复的值

投影(projector):部分列组成的新的集合

mysql> select  name,sex,age from emp;

mysql> select  name as emp_name,sex,age from emp;

选择(selector):部分行组成新的集合

mysql> select  *  from  stu0 where id<10;

6.1Where语句

mysql> select *  from  stu0 where id<10;

mysql> select *  from  stu0 where id>10:

mysql> select *  from  stu0 where id>=10;

mysql> select *  from  stu0 where id<=10;

mysql> select *  from  stu0 where id!=10;

mysql> select * from emp where id!=3;

mysql> select * from emp where id<>3;

mysql> select * from emp where name='小明';

mysql> select * from emp where sex='F' AND age >24;

mysql> select * from emp where sex='F' OR age >24;

mysql> select * from emp where  NOT  age >24;

mysql> select * from emp where dep_id IS NULL;

mysql> select * from emp where dep_id IS NOT NULL;

mysql> select * from emp where dep_id in(1,2);

6.2分组

分组时,select ...from之间只能出现分组的那个字段或统计函数

mysql> select sex,count(*) from emp group by sex;

mysql> select name,sex,avg(age) from emp group by sex;

mysql> select name,sex,sum(age) from emp group by sex;

mysql> select name,sex,sum(age) as totalage from emp group by sex;

对分组的条件过滤用HAVING而不是where

mysql> select dep_id,count(dep_id) from emp group by dep_id HAVING count(dep_id)>1;

对统计以后的结果再统计

mysql> select dep_id,count(dep_id) from emp group by dep_id WITH ROLLUP ;

6.3排序

mysql> select * from emp order by age;

mysql> select * from emp order by age desc;

mysql> select * from emp order by sex asc,age desc;

6.4分页查询

mysql> select * from emp limit 3;//返回从第一条到第三条的数据

mysql> select * from emp limit 3,5;//从结果的第三条开始,向后显示5条

6.5多表查询

mysql> select e.id,d.dname as dep_name,e.name,e.sex,e.age from emp e,dep d where e.dep_id=d.id;

6.6 链接查询*************

内连:两边匹配的数据显示

mysql> select e.id,d.dname as dep_name,e.name,e.sex,e.age from emp e INNER JOIN dep d ON e.dep_id=d.id;

左外连:左边表都显示,右边没有对应的用NULL来填充

mysql> select e.id,d.dname as dep_name,e.name,e.sex,e.age from emp e LEFT JOIN dep d ON e.dep_id=d.id;

右外连:和左相反

mysql> select e.id,d.dname as dep_name,e.name,e.sex,e.age from emp e RIGHT JOIN dep d ON e.dep_id=d.id;

6.7 子查询

mysql> select (select dname from dep d where d.id=e.dep_id) as dname,count(e.dep_id) as total from emp e group by e.dep_id having total>0 ;

mysql> select e.id,e.name,e.age from emp e where e.dep_id in(select id from dep where id in(2,3));

7.备份还原

7.1备份

Step1:退出mysql提示符  \q  回车

Step2:c:>msyqldump -uroot -p 数据库名 > ./sss.sql

7.2还原

Step1:创建一个新的数据库

Msyql>create database xupt;

Step2还原

C:\>mysql -uroot -p xupt<./xupt.sql

猜你喜欢

转载自blog.csdn.net/fortune_cookie/article/details/83119386