1,数据库登录:
运行cmd, Mysql –uroot –p
Mysql代表客户端命令,-u后面跟连接的数据库用户,-p表示要输入密码
2,创建数据库:
9,删除表:
(1),修改表类型:
Alter table tablename MODIFY column_definition [first|after col_name]
例如:
Alter table tablename add[column] column_definition [first|after col_name]
例如:
Alter table tablename drop [column] col_name;
例如:
Alter table tablename change column old_col_name column_definition [first|after col_name]
例如:
前面介绍的字段增加和删除的语法(add/change/modify)中,都有一个可选项first|after col_name,这个选项可以用来修改字段在表中的位置,默认add增加的字段是加在表的最后位置,而change/modify默认都是不会改变字段的位置。
例如:
Alter table tablename rename [to] new_tablename;
例如:
Insert into tablename(field1,field2,….,fieldn) values(value1,value2,….,valuen);
例如:
Insert into emp(ename,hiredate,sal,deptno)
Values
(rec1_value1,rec1_value2,rec1_value3,rec1_value4),
(rec2_value1,rec2_value2,rec2_value3,rec2_value4),
(rec3_value1,rec3_value2,rec3_value3,rec3_value4),
…
(recn_valuen,recn_value2,recn_value3,recn_value4);
11,更新记录:
Update tablename set field1=value1,field2=value2,….,fieldn=valuen [where condition]
例如:
Update t1,t2…tn set t1.field1=expr1,tn.field1=exprn [where condition]
12,删除记录:
Delete from tablename [where condition];
例如:
Delete t1,t2,…,tn from t1,t2,…,tn [where condition]
例如:
Select 语句:
最简单形式 select * from tablename;
(1),不重复的记录查询:
关键字order by 实现:
Select * from tablename [where condition] [order by field1 [desc|asc],field2 [desc|asc],….fieldn[desc|asc]
例如:
对于排序后的记录,如果只希望显示一部分而不是全部,这时,就可以用LIMIT关键字来实现, LIMIT关键字的语法如下:
Select ……[LIMIT offset_start,row_count]
其中Offset_start表示记录的开始偏移量,row_count表示显示的行数,例如显示按照sal排序后的前2条记录:
Select [field1,field2,…..fieldn] fun_name
From tablename
[where where_condition]
[group by field1,field2,…fieldn
[with rollup]]
[having where_condition]
其中:fun_name 表示要作的聚合操作,也就是聚合函数
Group by 表示要进行分类聚合的字段,比如要按照部门来统计,部门就应该写在group by后面。
With rollup 是可选语法,表明是否对分类聚合后的结果进行再汇总。
Having 关键字表示对分类后的结果再进行条件的过滤。
例如:要emp表中统计公司的总人数:
当需要同时显示多个表中的字段时,就可以用表连接来实现这样的功能。
表连接有内连接和外连接,其主要区别是内连接仅选出两张表中互相匹配的记录,而外连接会选出其他不匹配的记录。最常用的是内连接。
例如:
Select ename ,deptname from emp,dept where emp.deptno=dept.deptno;
外连接又分为做连接和右连接:
左连接:包含所有左边表中的记录甚至是右边表中没有和它匹配的记录;
右连接:包含所有右边表中的记录甚至是左边表中没有和它匹配的记录;
主要用于查询两个表的数据时,将结果合并到一起显示出来,用到union 和union all关键字实现这样的功能,具体的语法如下:
Select * from t1
Union|union all
Select * from t2
…
Union|union all
Select * from tn;
注意:union和union all 的主要区别是union all把结果集直接合并在一起,而union 是将Union all以后的结果进行一次distinct,去除重复的记录结果。
例如:
创建一个用户zzj,具有对emp数据库中所有表的select/inser/delete权限:
Mysql>grant select,insert,delete on emp.* to ‘zzj’@’localhost’ identified by ‘123’;
收回其对于emp数据库中所有表的delete权限:
Mysql>revoke delete on emp.* from ‘zzj’@’localhost’;
15,按照层次看帮助:
Mysql>? Contents
显示所有可供查询的分类;
对于练出的分类,可以使用’? 类别名称’的方式针对用户感兴趣的内容做进一步的查看。例如,想看看MySQL中都至此哪些数据类型,可以执行”? data types”命令。
16,快速查阅帮助:
在实际应该用中,如果需呀快速查阅某项语法时,可以使用关键字进行快速查询。例如,想知道show命令都能看到些神恶魔东西,可以使用如下命令
Mysql>? Show
例如想参看create table 的语法,可以使用以下命令:
Mysql>? Create table
17,常用的网络资源:
http://dev.mysql.com/downloads/
是mysql官方网站,可以下载到各个版本的MySQL以及相关客户端开发工具等。
http://dev.mysql.com/doc/
提供了目前最权威的Mysql数据库及工具的在线手册。
http://bugs.mysql.com/
这里可以查看到MySQL以及发布的bug列表,或者向MySQL提交bug报告。
http://www.mysql.com/news-and-events/newsletter/
通常会发布各种关于MySQL的最新消息。
运行cmd, Mysql –uroot –p
Mysql代表客户端命令,-u后面跟连接的数据库用户,-p表示要输入密码
2,创建数据库:
Create database test1;
3,查看系统中数据库:
Show databases;
4,选择要操作的数据库:
Use test1;
5,查看当前数据库中的表:
Show tables;
6,删除数据库:
Drop database database_name;
7,创建表:
Create table tablename(column_name1 column_type1 constraints, column_name2 column_type2 constraints, column_name3 column_type3 constraints,……. column_nameN column_typeN constraints)
8,查看表的定义:
Desc tablename;
或者show create table emp \G;
“\G”要大写,含义是使得记录能够按照字段竖着排列,对于内容比较长的记录更易显示;
9,删除表:
Drop table tablename;
10,修改表:
(1),修改表类型:
Alter table tablename MODIFY column_definition [first|after col_name]
例如:
Alter table emp modify ename varchar(20);
(2),增加表字段:
Alter table tablename add[column] column_definition [first|after col_name]
例如:
Alter table emp add column age int(3);
(3),删除表字段:
Alter table tablename drop [column] col_name;
例如:
Alter table emp drop column age;
(4),字段改名:
Alter table tablename change column old_col_name column_definition [first|after col_name]
例如:
Alter table emp change column age age1 int(4);
(5),修改字段排列顺序:
前面介绍的字段增加和删除的语法(add/change/modify)中,都有一个可选项first|after col_name,这个选项可以用来修改字段在表中的位置,默认add增加的字段是加在表的最后位置,而change/modify默认都是不会改变字段的位置。
例如:
Alter table emp add column birth date after ename;
Alter table emp modify age int(3) first;
(6),更改表名:
Alter table tablename rename [to] new_tablename;
例如:
Alter table emp rename emp1;
10,插入记录:
Insert into tablename(field1,field2,….,fieldn) values(value1,value2,….,valuen);
例如:
Insert into emp values(‘lisa’,’2003-02-01’,’3000’,2);
Insert into emp(ename,sal) values(‘dony’,3000);
值得注意的是,MySQL有一个很好的特性是insert语句一次可以插入多条记录:
Insert into emp(ename,hiredate,sal,deptno)
Values
(rec1_value1,rec1_value2,rec1_value3,rec1_value4),
(rec2_value1,rec2_value2,rec2_value3,rec2_value4),
(rec3_value1,rec3_value2,rec3_value3,rec3_value4),
…
(recn_valuen,recn_value2,recn_value3,recn_value4);
11,更新记录:
Update tablename set field1=value1,field2=value2,….,fieldn=valuen [where condition]
例如:
Update emp set sal=4000 where ename=’lisa’;
Update语句可以同时更新多个表中数据,语法如下:
Update t1,t2…tn set t1.field1=expr1,tn.field1=exprn [where condition]
12,删除记录:
Delete from tablename [where condition];
例如:
Delete from emp where ename=’dony’;
一次删除多个表中的数据,句法如下:
Delete t1,t2,…,tn from t1,t2,…,tn [where condition]
例如:
Delete a,b from emp as a,dept as b where a.ename=’Hui’ and b.deptno=1;
13,查询记录:
Select 语句:
最简单形式 select * from tablename;
(1),不重复的记录查询:
Select distinct deptno from emp;
(2),条件查询:
Select * from emp where ename=’Lisa’;
(3),排序和限制:
关键字order by 实现:
Select * from tablename [where condition] [order by field1 [desc|asc],field2 [desc|asc],….fieldn[desc|asc]
例如:
Select * from emp order by sal asc;
以上的排序规则是先满足第一个,然后依次往下满足;
对于排序后的记录,如果只希望显示一部分而不是全部,这时,就可以用LIMIT关键字来实现, LIMIT关键字的语法如下:
Select ……[LIMIT offset_start,row_count]
其中Offset_start表示记录的开始偏移量,row_count表示显示的行数,例如显示按照sal排序后的前2条记录:
Select * from emp order by sal limit 2;
显示按照sal排序后的从第2条记录开始的2条记录:
Select * from emp order by sal limit 1,2;
(4),聚合:
Select [field1,field2,…..fieldn] fun_name
From tablename
[where where_condition]
[group by field1,field2,…fieldn
[with rollup]]
[having where_condition]
其中:fun_name 表示要作的聚合操作,也就是聚合函数
Group by 表示要进行分类聚合的字段,比如要按照部门来统计,部门就应该写在group by后面。
With rollup 是可选语法,表明是否对分类聚合后的结果进行再汇总。
Having 关键字表示对分类后的结果再进行条件的过滤。
例如:要emp表中统计公司的总人数:
Select count(1) from emp;
在此基础上,要统计各个部门的人数:
Select deptno,count(1) from emp group by deptno;
再细一些,要统计各部门的人数,又要统计总人数:
Select deptno,count(1) from emp group by deptno with rollup;
统计人数大于1的部门:
Select deptno,count(1) from emp group by deptno having count(1) >1;
最后统计公司所有员工的薪水总额、最高和最低薪水:
Select sum(sal),max(sal),min(sal) from emp;
(5),表连接:
当需要同时显示多个表中的字段时,就可以用表连接来实现这样的功能。
表连接有内连接和外连接,其主要区别是内连接仅选出两张表中互相匹配的记录,而外连接会选出其他不匹配的记录。最常用的是内连接。
例如:
Select ename ,deptname from emp,dept where emp.deptno=dept.deptno;
外连接又分为做连接和右连接:
左连接:包含所有左边表中的记录甚至是右边表中没有和它匹配的记录;
右连接:包含所有右边表中的记录甚至是左边表中没有和它匹配的记录;
Select ename,deptname from emp left join dept on emp.deptno=dept.deptno;
Select ename,deptname from emp right join dept on emp.deptno=dept.deptno;
(6).记录联合:
主要用于查询两个表的数据时,将结果合并到一起显示出来,用到union 和union all关键字实现这样的功能,具体的语法如下:
Select * from t1
Union|union all
Select * from t2
…
Union|union all
Select * from tn;
注意:union和union all 的主要区别是union all把结果集直接合并在一起,而union 是将Union all以后的结果进行一次distinct,去除重复的记录结果。
例如:
Select deptno from emp
Union all
Select deptno from dept;
14,DCL语句的使用:
创建一个用户zzj,具有对emp数据库中所有表的select/inser/delete权限:
Mysql>grant select,insert,delete on emp.* to ‘zzj’@’localhost’ identified by ‘123’;
收回其对于emp数据库中所有表的delete权限:
Mysql>revoke delete on emp.* from ‘zzj’@’localhost’;
15,按照层次看帮助:
Mysql>? Contents
显示所有可供查询的分类;
对于练出的分类,可以使用’? 类别名称’的方式针对用户感兴趣的内容做进一步的查看。例如,想看看MySQL中都至此哪些数据类型,可以执行”? data types”命令。
16,快速查阅帮助:
在实际应该用中,如果需呀快速查阅某项语法时,可以使用关键字进行快速查询。例如,想知道show命令都能看到些神恶魔东西,可以使用如下命令
Mysql>? Show
例如想参看create table 的语法,可以使用以下命令:
Mysql>? Create table
17,常用的网络资源:
http://dev.mysql.com/downloads/
http://dev.mysql.com/doc/
http://bugs.mysql.com/
http://www.mysql.com/news-and-events/newsletter/