mysql 学习----->查询,权限,字段控制

  1. 1.统计列分类数目  
  2. mysql> select count(1) from test;  
  3. +----------+  
  4. count(1) |  
  5. +----------+  
  6. |        9 |  
  7. +----------+  
  8.   
  9. 2.分组统计  
  10. mysql> select ename,count(1) from test group by ename;  
  11. +----------+----------+  
  12. | ename    | count(1) |  
  13. +----------+----------+  
  14. | aaaaa    |        3 |  
  15. | ccccc    |        1 |  
  16. | def      |        1 |  
  17. | newName2 |        1 |  
  18. | newName3 |        1 |  
  19. | newNane1 |        1 |  
  20. | ttttt    |        1 |  
  21. +----------+----------+  
  22.   
  23. 3.在分组的统计数据的基础上再进行相同的统计  
  24. mysql> select ename,count(1) from test group by ename with rollup;  
  25. +----------+----------+  
  26. | ename    | count(1) |  
  27. +----------+----------+  
  28. | aaaaa    |        3 |  
  29. | ccccc    |        1 |  
  30. | def      |        1 |  
  31. | newName2 |        1 |  
  32. | newName3 |        1 |  
  33. | newNane1 |        1 |  
  34. | ttttt    |        1 |  
  35. NULL     |        9 |  
  36. +----------+----------+  
  37.   
  38. 4.按分组统计的结果计数  
  39. mysql> select ename,count(1) from test group by ename having count(1) > 1;  
  40. +-------+----------+  
  41. | ename | count(1) |  
  42. +-------+----------+  
  43. | aaaaa |        3 |  
  44. +-------+----------+   
  45.   
  46. 5.统计总数量、最大值、最小值  
  47. mysql> select sum(age),max(age),min(age) from test;  
  48. +----------+----------+----------+  
  49. sum(age) | max(age) | min(age) |  
  50. +----------+----------+----------+  
  51. |      112 |       81 |        1 |  
  52. +----------+----------+----------+  
  53.   
  54. 6.左右连接  
  55. 6.1插入数据:
  56. mysql> create table emp( ename varchar(20), hiredate date, sal int(11), deptno int(11) );  
  57.   
  58. mysql> insert into emp(ename,hiredate,sal,deptno) values ('zzx','2000-01-01',2000,1), ('lisa','2003-02-01',4000,2), ('bjguan','  
  59. 2004-04-02',5000,1), ('bzshen','2005-04-01',4000,3);  
  60.   
  61. mysql> select * from emp;  
  62. +--------+------------+------+--------+  
  63. | ename  | hiredate   | sal  | deptno |  
  64. +--------+------------+------+--------+  
  65. | zzx    | 2000-01-01 | 2000 |      1 |  
  66. | lisa   | 2003-02-01 | 4000 |      2 |  
  67. | bjguan | 2004-04-02 | 5000 |      1 |  
  68. | bzshen | 2005-04-01 | 4000 |      3 |  
  69. +--------+------------+------+--------+  
  70.   
  71. mysql> create table  dept ( deptno int(11), deptname varchar(20) );  
  72.   
  73. mysql> insert into dept(deptno,deptname) values (1,'tech'), (2,'sale'), (3,'hr');  
  74.   
  75. mysql> select * from dept;  
  76. +--------+----------+  
  77. | deptno | deptname |  
  78. +--------+----------+  
  79. |      1 | tech     |  
  80. |      2 | sale     |  
  81. |      3 | hr       |  
  82. +--------+----------+  
  83.   6.2编写左右链接SQl语句:
  84. mysql> select ename,deptname from emp,dept where emp.deptno = dept.deptno;  
  85. +--------+----------+  
  86. | ename  | deptname |  
  87. +--------+----------+  
  88. | zzx    | tech     |  
  89. | lisa   | sale     |  
  90. | bjguan | tech     |  
  91. | bzshen | hr       |  
  92. +--------+----------+  
  93.   
  94. mysql> select ename,deptname from emp left join dept on emp.deptno = dept.deptno;  
  95. +--------+----------+  
  96. | ename  | deptname |  
  97. +--------+----------+  
  98. | zzx    | tech     |  
  99. | lisa   | sale     |  
  100. | bjguan | tech     |  
  101. | bzshen | hr       |  
  102. +--------+----------+   
  103.   
  104. mysql> select * from emp;  
  105. +--------+------------+------+--------+  
  106. | ename  | hiredate   | sal  | deptno |  
  107. +--------+------------+------+--------+  
  108. | zzx    | 2000-01-01 | 2000 |      1 |  
  109. | lisa   | 2003-02-01 | 4000 |      2 |  
  110. | bjguan | 2004-04-02 | 5000 |      1 |  
  111. | bzshen | 2005-04-01 | 4000 |      3 |  
  112. +--------+------------+------+--------+  
  113.   
  114. mysql> insert into emp (ename) values ('dony');  
  115.     
  116. mysql> select ename,deptname from emp left join dept on emp.deptno = dept.deptno;  
  117. +--------+----------+  
  118. | ename  | deptname |  
  119. +--------+----------+  
  120. | zzx    | tech     |  
  121. | lisa   | sale     |  
  122. | bjguan | tech     |  
  123. | bzshen | hr       |  
  124. | dony   | NULL     |  
  125. +--------+----------+  
  126.  
  127. mysql> select * from emp;  
  128. +--------+------------+------+--------+  
  129. | ename  | hiredate   | sal  | deptno |  
  130. +--------+------------+------+--------+  
  131. | zzx    | 2000-01-01 | 2000 |      1 |  
  132. | lisa   | 2003-02-01 | 4000 |      2 |  
  133. | bjguan | 2004-04-02 | 5000 |      1 |  
  134. | bzshen | 2005-04-01 | 4000 |      3 |  
  135. | dony   | NULL       | NULL |   NULL |  
  136. +--------+------------+------+--------+  
  137.   
  138. mysql> select ename,deptname from emp right join dept on emp.deptno = dept.deptno;  
  139. +--------+----------+  
  140. | ename  | deptname |  
  141. +--------+----------+  
  142. | zzx    | tech     |  
  143. | bjguan | tech     |  
  144. | lisa   | sale     |  
  145. | bzshen | hr       |  
  146. +--------+----------+  
  147.   
  148. mysql> select ename,deptname from emp right join dept on dept.deptno=emp.deptno;  
  149. +--------+----------+  
  150. | ename  | deptname |  
  151. +--------+----------+  
  152. | zzx    | tech     |  
  153. | bjguan | tech     |  
  154. | lisa   | sale     |  
  155. | bzshen | hr       |  
  156. +--------+----------+  
  157.   
  158. mysql> select * from emp where deptno in ( select deptno from dept);  
  159. +--------+------------+------+--------+  
  160. | ename  | hiredate   | sal  | deptno |  
  161. +--------+------------+------+--------+  
  162. | zzx    | 2000-01-01 | 2000 |      1 |  
  163. | lisa   | 2003-02-01 | 4000 |      2 |  
  164. | bjguan | 2004-04-02 | 5000 |      1 |  
  165. | bzshen | 2005-04-01 | 4000 |      3 |  
  166. +--------+------------+------+--------+  
  167.   
  168. 7.几种嵌套查询  
  169. mysql> select * from emp where deptno = ( select deptno from dept limit 1);  
  170. +--------+------------+------+--------+  
  171. | ename  | hiredate   | sal  | deptno |  
  172. +--------+------------+------+--------+  
  173. | zzx    | 2000-01-01 | 2000 |      1 |  
  174. | bjguan | 2004-04-02 | 5000 |      1 |  
  175. +--------+------------+------+--------+  
  176.   
  177. mysql> select * from emp where deptno in ( select deptno from dept );  
  178. +--------+------------+------+--------+  
  179. | ename  | hiredate   | sal  | deptno |  
  180. +--------+------------+------+--------+  
  181. | zzx    | 2000-01-01 | 2000 |      1 |  
  182. | lisa   | 2003-02-01 | 4000 |      2 |  
  183. | bjguan | 2004-04-02 | 5000 |      1 |  
  184. | bzshen | 2005-04-01 | 4000 |      3 |  
  185. +--------+------------+------+--------+  
  186. rows in set (0.00 sec)  
  187.   
  188. mysql> select emp.* from emp ,dept where emp.deptno = dept.deptno;  
  189. +--------+------------+------+--------+  
  190. | ename  | hiredate   | sal  | deptno |  
  191. +--------+------------+------+--------+  
  192. | zzx    | 2000-01-01 | 2000 |      1 |  
  193. | lisa   | 2003-02-01 | 4000 |      2 |  
  194. | bjguan | 2004-04-02 | 5000 |      1 |  
  195. | bzshen | 2005-04-01 | 4000 |      3 |  
  196. +--------+------------+------+--------+  
  197.   
  198. 8.组合查询  
  199. mysql> select deptno from emp union  select deptno from dept;  
  200. +--------+  
  201. | deptno |  
  202. +--------+  
  203. |      1 |  
  204. |      2 |  
  205. |      3 |  
  206. |   NULL |  
  207. +--------+  
  208.   
  209. mysql> select deptno from emp union all   select deptno from dept;  
  210. +--------+  
  211. | deptno |  
  212. +--------+  
  213. |      1 |  
  214. |      2 |  
  215. |      1 |  
  216. |      3 |  
  217. |   NULL |  
  218. |      1 |  
  219. |      2 |  
  220. |      3 |  
  221. +--------+  
  222.   
  223. mysql> select deptno from emp union  select deptno from dept;  
  224. +--------+  
  225. | deptno |  
  226. +--------+  
  227. |      1 |  
  228. |      2 |  
  229. |      3 |  
  230. |   NULL |  
  231. +--------+  
  232.   
  233. 9.权限设置举例  
  234. mysql> grant select,update on test1.* to z1@localhost identified by 'test';  
  235.   
  236. mysql> use test1;  
  237. Reading table information for completion of table and column names  
  238. You can turn off this feature to get a quicker startup with -A  
  239.   
  240. mysql> insert into emp(sal,deptno) values('2000',3);  
  241. ERROR 1142 (42000): INSERT command denied to user 'z1'@'localhost' for table 'emp'.  
  242.   
  243. 10.内置帮助的使用  
  244. mysql> ? contents  
  245. You asked for help about help category: "Contents"  
  246. For more information, type 'help <item>'where <item> is one of the following  
  247. categories:  
  248.    Account Management  
  249.    Administration  
  250.    Compound Statements  
  251.    Data Definition  
  252.    Data Manipulation  
  253.    Data Types  
  254.    Functions  
  255.    Functions and Modifiers for Use with GROUP BY  
  256.    Geographic Features  
  257.    Help Metadata  
  258.    Language Structure  
  259.    Plugins  
  260.    Procedures  
  261.    Storage Engines  
  262.    Table Maintenance  
  263.    Transactions  
  264.    User-Defined Functions  
  265.    Utility  
  266.   
  267. mysql> ? data types  
  268. You asked for help about help category: "Data Types"  
  269. For more information, type 'help <item>'where <item> is one of the following  
  270. topics:  
  271.    AUTO_INCREMENT  
  272.    BIGINT  
  273.    BINARY  
  274.    BIT  
  275.    BLOB  
  276.    BLOB DATA TYPE  
  277.    BOOLEAN  
  278.    CHAR  
  279.    CHAR BYTE  
  280.    DATE  
  281.    DATETIME  
  282.    DEC  
  283.    DECIMAL  
  284.    DOUBLE  
  285.    DOUBLE PRECISION  
  286.    ENUM  
  287.    FLOAT  
  288.    INT  
  289.    INTEGER  
  290.    LONGBLOB  
  291.    LONGTEXT  
  292.    MEDIUMBLOB  
  293.    MEDIUMINT  
  294.    MEDIUMTEXT  
  295.    SET DATA TYPE  
  296.    SMALLINT  
  297.    TEXT  
  298.    TIME  
  299.    TIMESTAMP  
  300.    TINYBLOB  
  301.    TINYINT  
  302.    TINYTEXT  
  303.    VARBINARY  
  304.    VARCHAR  
  305.    YEAR DATA TYPE  
  306.   
  307. 11.通过操作此表可以实现迅速修改表名等操作。  
  308. mysql> select * from information_schema.tables;  
  309.   
  310. 12.字段的长度测试  
  311. mysql> create table t1(id1 int,id2 int(5));  
  312.   
  313. mysql> desc t1;  
  314. +-------+---------+------+-----+---------+-------+  
  315. | Field | Type    | Null | Key | Default | Extra |  
  316. +-------+---------+------+-----+---------+-------+  
  317. | id1   | int(11) | YES  |     | NULL    |       |  
  318. | id2   | int(5)  | YES  |     | NULL    |       |  
  319. +-------+---------+------+-----+---------+-------+  
  320.   
  321. mysql> insert into t1 values(1,1);  
  322.   
  323. mysql> select * from t1;  
  324. +------+------+  
  325. | id1  | id2  |  
  326. +------+------+  
  327. |    1 |    1 |  
  328. +------+------+  
  329.   
  330. mysql> alter table t1 modify id1 int zerofill;  
  331.   
  332. mysql> alter table t1 modify id2 int(5) zerofill;  
  333.   
  334. mysql> insert into t1 values(1,1111111);  
  335.   
  336. mysql> select * from t1;  
  337. +------------+---------+  
  338. | id1        | id2     |  
  339. +------------+---------+  
  340. | 0000000001 |   00001 |  
  341. | 0000000001 | 1111111 |  
  342. +------------+---------+  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值