MySql的学习记录-持续更新

背景:mysql已经正确安装!
1. 启动mysql服务器:
	net start mysql
2. 登录到mysql的服务器((可以是本地的服务器)):
	mysql -uroot -p -P3306 -h127.0.0.1
	root //输入密码
3. 查看当前所有的存在mysql服务器的数据库:
	SHOW DATABASES;
4. 进入某一个数据库:
	USE test;
5. 查看当前数据库版本:
	SELECT VERSION();
6. 查看当前登录的用户:
	SELECT USER();
7. 查看当前时间:
	SELECT NOW();
8. 创建带主键约束的数据表: (主键约束是指:主键的值不同相同,且一张表中只能有一个主键,且主键会自动创建索引)
	CREATE TABLE IF NOT EXISTS tb3(
    id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, //主键约束
    username VARCHAR(20) NOT NULL,
    salary FLOAT(8,2) NOT NULL
    );
9. 显示表结构:
	SHOW COLUMNS FROM tb3;
10. 向数据表中插入数据:
	INSERT INTO tb3 (username,salary) VALUES('Victor',4980.25);
11. 显示当前表中的数据:
	SELECT * FROM tb3;
12. 创建带唯一约束的表:(唯一约束则该列的值不能相同,可以是NULL)
	 CREATE TABLE IF NOT EXISTS tb5(
	 id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
	 username VARCHAR(20) NOT NULL UNIQUE KEY,  //唯一约束
	 age TINYINT UNSIGNED
	 );
13. 创建带默认约束的表:(默认约束是指在没有赋值的情况下,显示默认值)
	CREATE TABLE IF NOT EXISTS tb6(
	id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
	username VARCHAR(20) NOT NULL UNIQUE KEY,
	sex ENUM('1','2','3') DEFAULT 3
	);
14. 查看当前的数据库:
	SELECT DATABASE(); | status
15. 查看当前数据库中的某一张表的创建信息:
	SHOW CREATE TABLE user;
16. 创建带外键约束的表:(1.表引擎必须是INNODB,2.外键与参照键数据类型必须相似,外键与参照键必须创建索引)
	CREATE TABLE IF NOT EXISTS provinces(  //创建父表
	id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
	pname VARCHAR(20) NOT NULL UNIQUE KEY
	);
	CREATE TABLE IF NOT EXISTS user(   //创建带外键约束的子表
	id SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
	username VARCHAR(20) NOT NULL UNIQUE KEY,
	pid SMALLINT UNSIGNED,
	FOREIGN KEY (pid) REFERENCES provinces (id) //外键约束,参照列为provinces表的id列
	);
17. 查看某个数据表中的列是否创建了索引:
	SHOW INDEXES FROM provinces\G; //其中\G 是格式化输出,可以不要
18. 使用外键约束进行子表与父表操作的关联,如删除父表的参照值,则相应的删除子表对应的一行记录(也可能是多行)
	CREATE TABLE IF NOT EXISTS provinces(  //创建父表
	id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
	pname VARCHAR(20) NOT NULL UNIQUE KEY
	);
	CREATE TABLE IF NOT EXISTS user1( //创建带外键约束的子表
	id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL,
	username VARCHAR(20) NOT NULL
	,
	pid SMALLINT UNSIGNED,
	FOREIGN KEY (pid) REFERENCES provinces (id) ON DELETE CASCADE //在删除父表的参照值的同时,删除子表(当前表)对应的行的记录
	);
19. 按条件删除数据:
	DELETE FROM provinces WHERE id = 2;
20. 增加指定数据表的列(增加单列)
	ALTER TABLE user1 ADD COLUMN password VARCHAR(32) NOT NULL AFTER username; //可以是after 某列,也可以是FIRST,或者不写条件,默认放到最后
21. 增加指定数据表的列(增加多列)
	ALTER TABLE user1 ADD COLUMN (salary FLOAT(8,2) UNSIGNED NOT NULL,sex ENUM('1','2','3') DEFAULT 3);
22. 删除一列数据
	ALTER TABLE user1 DROP COLUMN password; //其中COLUMN 可以省略
22. 删除多列,并添加多列(逗号隔开即可操作)
	ALTER TABLE user1 DROP COLUMN salary,DROP COLUMN sex,ADD COLUMN height FLOAT(3,2) UNSIGNED NOT NULL DEFAULT 1.75;
	ALTER TABLE user1 DROP COLUMN height,DROP COLUMN salary,ADD COLUMN weight FLOAT(5,2) NOT NULL DEFAULT 120.85,ADD COLUMN hobby VARCHAR(100) NOT NULL;
23. 添加主键约束
	ALTER TABLE user2 ADD CONSTRAINT PRIMARY KEY (id);
24. 添加唯一约束
	ALTER TABLE user2 ADD CONSTRAINT UNIQUE KEY (username);
25. 添加外键约束
	ALTER TABLE user2 ADD FOREIGN KEY (pid) REFERENCES provinces (id);
26. 添加默认约束
	ALTER TABLE user2 ALTER COLUMN age SET DEFAULT 15;
27. 删除默认约束
	ALTER TABLE user2 ALTER COLUMN age DROP DEFAULT 15;
28. 删除主键约束
	ALTER TABLE user2 DROP PRIMARY KEY;
29. 删除唯一约束 //实际上是删除索引
	ALTER TABLE user2 DROP INDEX username;
30. 删除外键约束
	ALTER TABLE user2 DROP FOREIGN KEY user2_ibfk_1;(user2_ibfk_1是外键约束名,可以通过SHOW CREATE TABLE user2;查看到)
31. 修改列定义(修改某一列的数据类型,在表中的位置等)
	ALTER TABLE user2 MODIFY COLUMN age SMALLINT UNSIGNED NOT NULL after username;
32. 修改列名称以及列定义:
	ALTER TABLE user2 CHANGE COLUMN pid _pid TINYINT UNSIGNED NOT NULL;
33. 修改数据表的表名:
	ALTER TABLE user2 RENAME TO user2qq; // 或 RENAME TABLE user2qq TO user2;
///记录操作
34. 插入数据 一次插入两行记录
	INSERT INTO user VALUES(DEFAULT,'Ann',21131,22,0),(DEFAULT,'Amy',yy255366,19,0);//自增长和有默认约束的都可以赋默认值
35. 插入数据 ,插入的数据中可以包含函数表达式(插入一个md5的函数)
	INSERT INTO user VALUES(DEFAULT,'Victor',md5('123'),DEFAULT,1);
36. 使用INSERT SET方式插入数据
	INSERT INTO user SET username='Bob',password='md5(200)',sex=1;(不同列的数据插入使用逗号分隔)
37. 更新数据:
	UPDATE user SET age = age + 20; (更新所有行的一列的数据)
	UPDATE user SET age = age -id ,sex = 0, where id<3; (更新符合条件的行的多列的操作)
38. 删除指定行的数据:
	DELETE FROM user WHERE id=4;
	DELETE t1 FROM tb1 AS t1 WHERE id = 2;//删除表的同时使用别名
39. 查询某两列的数据:
	 SELECT id,password FROM user;
	 SELECT id,password FROM user WHERE id % 2 = 0;
	 SELECT user.username,user.id FROM user;
	 SELECT id AS uid,username AS name,password AS pw FROM user; (使用别名显示查询结果,AS可省略)
	 SELECT id AS uid,username AS name,password AS pw,age,sex FROM user GROUP BY age DESC;(按照年龄降序排列查询结果)
	 SELECT id AS uid,username AS name,password AS pw,age,sex FROM user GROUP BY age DESC HAVING id<5 having="" group="" by="" order="" by="" order="" by="" group="" by="" select="" from="" user="" order="" by="" age="" desc="" id="" desc="" order="" by="" select="" from="" user="" order="" by="" age="" desc="" id="" desc="" limit="" 0="" 3="" limit="" index="" select="" from="" user="" limit="" 2="" 3="" 40="" insert="" into="" tb1="" username="" select="" username="" from="" user="" where="" age="">27;//注意:这种插入不需要写VALUES()。直接插入
/子查询
	准备工作:
	CREATE TABLE IF NOT EXISTS tdb_goods(
    goods_id    SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    goods_name  VARCHAR(150) NOT NULL,
    goods_cate  VARCHAR(40)  NOT NULL,
    brand_name  VARCHAR(40)  NOT NULL,
    goods_price DECIMAL(15,3) UNSIGNED NOT NULL DEFAULT 0,
    is_show     BOOLEAN NOT NULL DEFAULT 1,
    is_saleoff  BOOLEAN NOT NULL DEFAULT 0
  );
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('R510VC 15.6英寸笔记本','笔记本','华硕','3399',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('Y400N 14.0英寸笔记本电脑','笔记本','联想','4899',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('G150TH 15.6英寸游戏本','游戏本','雷神','8499',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('X550CC 15.6英寸笔记本','笔记本','华硕','2799',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('X240(20ALA0EYCD) 12.5英寸超极本','超级本','联想','4999',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('U330P 13.3英寸超极本','超级本','联想','4299',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('SVP13226SCB 13.3英寸触控超极本','超级本','索尼','7999',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('iPad mini MD531CH/A 7.9英寸平板电脑','平板电脑','苹果','1998',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('iPad Air MD788CH/A 9.7英寸平板电脑 (16G WiFi版)','平板电脑','苹果','3388',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(' iPad mini ME279CH/A 配备 Retina 显示屏 7.9英寸平板电脑 (16G WiFi版)','平板电脑','苹果','2788',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('IdeaCentre C340 20英寸一体电脑 ','台式机','联想','3499',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('Vostro 3800-R1206 台式电脑','台式机','戴尔','2899',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('iMac ME086CH/A 21.5英寸一体电脑','台式机','苹果','9188',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('AT7-7414LP 台式电脑 (i5-3450四核 4G 500G 2G独显 DVD 键鼠 Linux )','台式机','宏碁','3699',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('Z220SFF F4F06PA工作站','服务器/工作站','惠普','4288',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('PowerEdge T110 II服务器','服务器/工作站','戴尔','5388',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('Mac Pro MD878CH/A 专业级台式电脑','服务器/工作站','苹果','28888',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(' HMZ-T3W 头戴显示设备','笔记本配件','索尼','6999',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('商务双肩背包','笔记本配件','索尼','99',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('X3250 M4机架式服务器 2583i14','服务器/工作站','IBM','6888',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('玄龙精英版 笔记本散热器','笔记本配件','九州风神','',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES(' HMZ-T3W 头戴显示设备','笔记本配件','索尼','6999',DEFAULT,DEFAULT);
 INSERT tdb_goods (goods_name,goods_cate,brand_name,goods_price,is_show,is_saleoff) VALUES('商务双肩背包','笔记本配件','索尼','99',DEFAULT,DEFAULT);
41. 子查询
	SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price >= (SELECT ROUND(AVG(goods_price),2) FROM tdb_goods);
	(查询结果为商品价格大于平均值的商品的id,name,price)
	SELECT goods_id,goods_name,goods_cate,goods_price FROM tdb_goods WHERE goods_price > (SELECT goods_price FROM tdb_goods WHERE goods_cate='超级本');
	(查询结果为大于超级本价格的全部商品==返回错误,因为超级本的价格有多个)
	SELECT goods_id,goods_name,goods_cate,goods_price FROM tdb_goods WHERE goods_price > ANY (SELECT goods_price FROM tdb_goods WHERE goods_cate='超级本');
	(查询结果为大于 ANY/SOME 超级本价格的全部商品==大于超级本的最低价格即可满足)
	SELECT goods_id,goods_name,goods_cate,goods_price FROM tdb_goods WHERE goods_price > ALL (SELECT goods_price FROM tdb_goods WHERE goods_cate='超级本');
	(查询结果为大于 ALL 超级本价格的全部商品==大于超级本的全部价格即可满足)
	SELECT goods_id,goods_name,goods_cate,goods_price FROM tdb_goods WHERE goods_price != ALL (SELECT goods_price FROM tdb_goods WHERE goods_cate='超级本');
	(查询结果为 != ALL 超级本价格的全部商品==即得到除了超级本之外的所有商品)
42. 将查询结果插入到新表中
	a. 创建一个数据表
	CREATE TABLE IF NOT EXISTS tdb_goods_cates(
	cate_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT NOT NULL,
	cate_name VARCHAR(40) NOT NULL
	);
	b. 将查询结果(所有的商品分类写入新表)
	INSERT INTO tdb_goods_cates (cate_name) SELECT tdb_goods.goods_cate FROM tdb_goods GROUP BY tdb_goods.goods_cate;
43. 参照表2的数据,更新表1 的数据
	UPDATE tdb_goods SET goods_cate = (SELECT tdb_goods_cates.cate_id FROM tdb_goods_cates WHERE goods_cate = cate_name);
	(当goods_cate = cate_name的时候,前将表tdb_goods_cates的cate_id值给tdb_goods表的goods_cate)
	UPDATE tdb_goods INNER JOIN tdb_goods_cates ON goods_cate = cate_cate SET goods_cate = cate_id;
	(和上一条语句效果相同)
44. 在创建表的同时,将上一个表的数据插入到本表中
	CREATE TABLE IF NOT EXISTS tdb_goods_brands(
	brand_id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
	brand_name VARCHAR(40) NOT NULL
	)
	SELECT tdb_goods.brand_name FROM tdb_goods GROUP BY tdb_goods.brand_name;
45. 修改列名称以及列定义:
	ALTER TABLE tdb_goods CHANGE goods_cate cate_id SMALLINT UNSIGNED,CHANGE brand_name brand_id SMALLINT UNSIGNED;
	(将列goods_cate改为cate_id,列类型改为SMALLINT UNSIGNED)
46. 通过内联查询两张表的共同列所在的第一张表行的数据
	SELECT goods_id,goods_name,tdb_goods.cate_id FROM tdb_goods INNER JOIN tdb_goods_cates ON tdb_goods.cate_id = tdb_goods_cates.cate_id;
48. 通过右外连接查询两张表的共同列所在的第一张表行的数据(以右边,也就是第二张表为基准)
	SELECT goods_id,goods_name,tdb_goods.cate_id FROM tdb_goods RIGHT JOIN tdb_goods_cates ON tdb_goods.cate_id = tdb_goods_cates.cate_id;
49. 通过多表的内联查询全部的数据 ######
	SELECT goods_id,goods_name,brand_name,cate_name,goods_price FROM tdb_goods AS a
	INNER JOIN tdb_goods_brands AS b ON a.brand_id = b.brand_id
	INNER JOIN tdb_goods_cates AS c ON a.cate_id = c.cate_id
	;
	(返回内联中的商品id,name,brand,cate,price)
	(连接==外键的逆向操作,将多个表中存储的数据,一次性返回出来)
自连接的查询
50. 无限级分类表的设计
-- 无限分类的数据表设计

   CREATE TABLE tdb_goods_types(
     type_id   SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
     type_name VARCHAR(20) NOT NULL,
     parent_id SMALLINT UNSIGNED NOT NULL DEFAULT 0
  ); 

  INSERT tdb_goods_types(type_name,parent_id) VALUES('家用电器',DEFAULT);
  INSERT tdb_goods_types(type_name,parent_id) VALUES('电脑、办公',DEFAULT);
  INSERT tdb_goods_types(type_name,parent_id) VALUES('大家电',1);
  INSERT tdb_goods_types(type_name,parent_id) VALUES('生活电器',1);
  INSERT tdb_goods_types(type_name,parent_id) VALUES('平板电视',3);
  INSERT tdb_goods_types(type_name,parent_id) VALUES('空调',3);
  INSERT tdb_goods_types(type_name,parent_id) VALUES('电风扇',4);
  INSERT tdb_goods_types(type_name,parent_id) VALUES('饮水机',4);
  INSERT tdb_goods_types(type_name,parent_id) VALUES('电脑整机',2);
  INSERT tdb_goods_types(type_name,parent_id) VALUES('电脑配件',2);
  INSERT tdb_goods_types(type_name,parent_id) VALUES('笔记本',9);
  INSERT tdb_goods_types(type_name,parent_id) VALUES('超级本',9);
  INSERT tdb_goods_types(type_name,parent_id) VALUES('游戏本',9);
  INSERT tdb_goods_types(type_name,parent_id) VALUES('CPU',10);
  INSERT tdb_goods_types(type_name,parent_id) VALUES('主机',10);
51. 查询无限分类表中的所有子类对应的父类
	SELECT s.type_id,s.type_name,p.type_name FROM tdb_goods_types AS s
	LEFT JOIN tdb_goods_types AS p
	ON s.parent_id = p.type_id;

52. 查询每个父类对应的子类
	SELECT p.type_id,p.type_name,s.type_name as sub_name FROM tdb_goods_types AS p
	LEFT JOIN tdb_goods_types AS s
	ON p.type_id = s.parent_id;
53. 查询每个父类对应的子类的数量,并按照id升序排列:
	 SELECT p.type_id,p.type_name,count(s.type_name) AS sub_count FROM tdb_goods_types AS p
	 LEFT JOIN tdb_goods_types AS s
	 ON p.type_id = s.parent_id
	 GROUP BY p.type_name
	 ORDER BY p.type_id ASC;
54. 删除表中的重复数据(goods)_name相同) //通过外联模拟两张表来操作
	DELETE t1 FROM tdb_goods AS t1
	LEFT JOIN (SELECT goods_id,goods_name FROM tdb_goods GROUP BY goods_name HAVING count(goods_name) >= 2) AS t2
	ON t1.goods_name = t2.goods_name WHERE t1.goods_id>t2.goods_id;
55. 插入表中的最后3行记录:
	INSERT INTO tdb_goods (goods_name,cate_id,brand_id,goods_price,is_show,is_saleoff) SELECT goods_name,cate_id,brand_id,goods_price,is_show,is_saleoff FROM tdb_goods ORDER BY goods_id DESC  limit 3;
//mysql函数的使用
56. 连接字符串
	SELECT CONCAT('www.baidu','.com');
	SELECT CONCAT_WS('.','www','baidu','com');
57. 按千分位格式化数字
	SELECT FORMAT(12345.678,2);//表示保留小数点后两位。
58. 将字符串转为小写字母
	SELECT LOWER('ABCded333'); //大写 SELECT UPPER('XDEssqe');
59. 获取左边或右边的字符
	SELECT LEFT('ASDXDWW',3); //获取左边的3个字符
	SELECT RIGHT('MySQL',3);//获取右边的3个字符
60. 获取字符串的长度
	SELECT LENGTH('mysql aaa');
61. 去除字符串的空格
	SELECT LTRIM(' aa v ');// 去除左边的空格
	SELECT RTRIM(' aa v ');//去除右边的空格
	SELECT TRIM('  aa v ');//去除两边的空格
62. 删除前后指定的字符
	SELECT TRIM('?' FROM '?fuck me ? ok????'); // fuck me ? ok
63. 删除指定的前面的字符
	SELECT TRIM(LEADING '?' FROM '?fuck me ? ok????');// fuck me ? ok????
64. 删除知道的后续的字符
	SELECT TRIM(TRAILING '?' FROM '?fuck me ? ok????');
65. 替换函数,将字符串中的?替换成空字符
	SELECT REPLACE('??mysq??l????','?','');// mysql
66. 字符串的截取(从1开始编号的)
	SELECT SUBSTRING('imoocStudy',1,2);// im 
	SELECT SUBSTRING('imoocStudy',-3,2);//从倒数第3位开始往后截取2位字符
67. 通配符% 的使用
	SELECT * FROM tb_name WHERE firstname LIKE '%c%'; //查询firstname中含有c字符的全部数据
	SELECT * FROM tb_name WHERE firstname LIKE '%1%%' ESCAPE '1'; //查询firstname中含有%字符的全部数据
//====数学运算符的使用
68. + - * / % POWER()
	SELECT POWER(2,8); // ==256 2的8次方
	SELECT ROUND(2.75,1); // 四舍五入保留1位 = 2.8
	SELECT TRUNCATE(124.56,1); //截取掉一位 == 124.5
	mysql> SELECT DATE_ADD('2016-3-1',INTERVAL 365 DAY); -- 日期变化函数
	+---------------------------------------+
	| DATE_ADD('2016-3-1',INTERVAL 365 DAY) |
	+---------------------------------------+
	| 2017-03-01                            |
	+---------------------------------------+
	mysql> SELECT DATEDIFF('2016-3-1','2017-3-1');//日期差值的计算
	+---------------------------------+
	| DATEDIFF('2016-3-1','2017-3-1') |
	+---------------------------------+
	|                            -365 |
	+---------------------------------+
	mysql> SELECT DATE_FORMAT('2016-3-1','%Y/%m/%d'); //日期的格式化函数
	+------------------------------------+
	| DATE_FORMAT('2016-3-1','%Y/%m/%d') |
	+------------------------------------+
	| 2016/03/01                         |
	+------------------------------------+
//=========信息函数
69. 获取当前连接mysql服务器的ID
	SELECT CONNECTION_ID();
70. 获取当前打开的数据库
	SELECT DATABASE();
71. 获取当前连接的用户:
	SELECT USER();
72. 获取最后插入的ID
	SELECT LAST_INSERT_ID();
73. 聚合函数 AVG() COUNT() MAX() MIN() SUM()
///==============自定义函数
	CREATE FUNCTION f1() RETURNS VARCHAR(30) -- 创建一个不带参数的函数
	RETURN DATE_FORMAT(NOW(),'%Y/%m/%d %h:%m:%s');
74. 删除函数
	DROP FUNCTION f3;
75. 创建带参数的函数
	CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED)
	RETURNS FLOAT(8,2)
	RETURN (num1+num2)/2;
76. 调用自定义函数
	SELECT f3(7,8); //=== 7.50
//=========================存储过程控制
77. 创建过程体
	CREATE PRODURE sp1() SELECT VERSION(); //创建过程体--查询当前版本号
	----
	CREATE PROCEDURE deleteUserById(IN p_id INT UNSIGNED)
	BEGIN
	DELETE FROM user WHERE id = p_id;
	END
	//
78. 调用过程体
	CALL sp1();
	CALL deleteUserById(3);
79. 创建带输出参数的过程体
	 delimiter //    -- 修改分隔符
	 CREATE PROCEDURE deleteUserByAgeReturnInfos(IN pAge SMALLINT UNSIGNED,
	 OUT rCount SMALLINT UNSIGNED,OUT userCount SMALLINT UNSIGNED)
	 BEGIN
	 DELETE FROM user WHERE age = pAge;
	 SELECT ROW_COUNT() INTO rCount;
	 SELECT COUNT(age) FROM user INTO userCount;
	 END
	 //    
	 ---- 创建一个带一个输入,两个输出的过程体 
	 (通过age删除数据,并返回删除的数据条数,以及剩余的数据条数)
80. 调用刚才创建的过程体
	CALL deleteUserByAgeReturnInfos(30,@a,@b);
81. 创建指定存储引擎的数据表:
	 CREATE TABLE IF NOT EXISTS tp1(
	 s1 VARCHAR(30)
	 ) ENGINE = MyISAM;
82. 修改已创建表的存储引擎
	ALTER TABLE tp1 ENGINE = InnoDB;
//
e. 退出mysql操作:
	exit;
E. 停止mysql的服务器:
	(命令行)net stop mysql
***** 所有的mysql命令来自慕课网~ 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值