1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
| show databases; 查看数据库列表 1)创建数据库 1>create database 数据库名; 2>选择要操作的数据库:USE 数据库; 对于要操作的数据库我们需要使用use来选择一下! 3>查看数据库中所有的数据表show tables; 2)删除数据库 drop database 数据库名称; 3)创建表(在哪个数据库里面创建表需要先使用use选择到那个要操作的数据库) 1>创建表 create table 表名( 字段1名 字段1类型 列的约束条件, 字段2名 字段2类型 列的约束条件, ... ) 2>创建完表之后可以查看表的定义 desc 表名; 3>查看创建表的SQL语句 show create table 表名 \G \G选项使得记录能够按照字段竖向排列,以便更好地显示内容较长的记录,\G后面无需再加分号 4)删除表 drop table 表名; 5)修改表 1>修改表的字段类型 alter table 表名 modify [column] 字段定义 [first|after 字段名]; 2>增加表字段 alter table 表名 add [column] 字段定义 [first|after 字段名]; 3>删除表字段 alter table 表名 drop [column] 字段名; 4>字段改名 alter table 表名 change [column] 旧的字段名 字段定义 [first|after 字段名]; 注:change与modify都可以修改表的定义,不同的是change后面需要接两次列名,不方便,但是优点是change可以修改字段名称 5>修改字段排列排序 前面介绍的字段增加和修改语法(add/change/modify)中,都有一个可选项first|after 字段名,这个选择可以用来修改 字段在表中的位置新增的字段默认是加载在表中最后位置,而change/modify 默认都不会改变字段的位置 alter table t1 modify id2 tinyint first; alter table t1 modify id2 tinyint after id1; 注意:change/first|after 字段名 这些关键字都是属于MySQL在标准SQL上的扩展,在其他的数据库上不一定适用 6)更改表名 alter table 表名 rename [to] 新的表名; 4.DML语句 查询 select * from 表名; 1)插入记录 1>插入记录 insert into 表名(字段1,字段2,字段3,...,字段n) values(值1,值2,值3,...,值n); 也可以不用指定字段名,但是values后面的顺序应该和字段的排序一致 2>一次插入多条记录 insert into 表名(字段1,字段2,字段3,...,字段n) values (值1,值2,值3,...,值n), (值1,值2,值3,...,值n), (值1,值2,值3,...,值n) ; 2)更新记录 1>更新一个表 update 表名 set 字段1=值1,字段2=值2,...字段n=值n [where 条件]; 2>更新多个表中数据 update 表1,表2,...表n set 表1.字段1=表达式1,表n.字段n=表达式n [where 条件]; 注:多表更新更多的用在根据一个表的字段来动态的更新另外一个表的字段 简单实例: update t1,t2 set t1.age=2000,t2.age=3000 where t1.id=1 and t2.id=1; 3)删除记录 1>删除单表中的数据 delete from 表名 [where 条件]; 2>删除多个表中的数据 delete 表1,表2,...表n from 表1,表2,...表n [where 条件]; 不管是单表还是多表,不加where条件将会把表中的所有记录删除,所以操作时一定要小心。 4)查询记录 select 字段名|* from 表名; 1>查询不重复的记录 SELECT distinct field1,field2 FROM 表名; 只要field1,field2任何一个字段有不同就会被选择! 一般使用distinct,只筛选一个字段! 2>条件查询 注:条件字段比较符号: =,<,>,>=,<=,!=等比较运算符 多个条件之间可以使用or and等 where 后面接条件 select * from 表名 where 条件 3>排序和限制 排序: asc:由低到高,也是默认值 select * from employee order by salary asc; desc:由高到底 select * from employee order by salary desc; 多个字段排序 select * from employee order by salary desc,id desc; 限制: 在语句的最后面 加上limit 数字1,数字2 来进行查询数量的限制。 limit 数字1,数字2 数字1代表从第几条记录开启取(是从0开始的),数字2代表取几条! 4>聚合 ①sum求和 select sum(字段名) from 表名; ②count记录总数 select count(*|字段名) from 表名; ③max最大值 select max(字段名) from 表名; ④min最小值 select min(字段名) from 表名; ⑤GROUP BY分类聚合 select department,sum(salary) from employee group by department; ⑥WITH ROLLUP分类聚合后的结果进行再汇总 select sum(salary) from employee group by department with rollup; ⑦HAVING 注意:having和where的区别在于,having是对聚合后的结果进行条件过滤,而where是在聚合前就对记录进行过滤 ,应该尽可能的对记录进行先过滤! select sum(salary) from employee group by department having sum(salary)>1000; 在一起使用:select sum(id),max(id),min(id),count(*) from a1; 5>表连接 需求:显示多个表中的字段的时候即可使用表连接 连接分类 内连接:选取两张表中相互匹配的记录 外连接:不仅仅选取两张相互匹配的记录,并且会选出其他不匹配的记录 举例: 内连接:select 表.字段,.... from 表1名,表2名,... where [匹配的条件比如 表1.字段=表2.字段]; select 语句可以给字段起别名!直接写在需要查询显示的字段的后面就ok 给表起别名 外连接 1)左连接 概念:包含左边表中的所有记录(包括右表中没有和它匹配的记录) select ename,deptname from emp left join dept on emp.deptno=dept.deptno; 2)右连接 概念:包含右边表中的所有记录(包括左表中没有和它匹配的记录) 左连接和右连接是可以相互转换的!
|