第七章MySQL基础
-
流程控制语句:
通过if...then...else
判断传入参数值是否为1语句:
创建存储过程:
mysql> delimiter //
mysql> create procedure n(in x int)
-> begin
-> if x = 1 then
-> select 1;
-> elseif x =2 then
-> select 2;
-> else select 3;
-> end if;
-> end
-> //
调用n()存储过程:
->call n(1); -
case语句
通过case
判断传入参数值是否为1语句:
创建存储过程:
mysql> delimiter //
mysql> create procedure n(in x int)
-> begin
-> case x
-> when 1 select 1;
-> when 2 select 2;
-> else select 3;
-> end case;
-> end
-> //
调用n()存储过程:
->call n(1);
-
通过
while
语句求前100项和:
mysql> delimiter //
mysql> create procedure l(out sum int)
-> begin
-> declare i int default 1;
-> declare s int default 0;
-> while i<=100 do
-> set s=s+i;
-> set i=i+1;
-> end while;
-> set sum=s;
-> end
-> //
调用l()
存储过程:
mysql> call l(@s) //
Query OK, 0 rows affected (0.00 sec)mysql> select @s //
±-----+
| @s |
±-----+
| 5050 |
±-----+
1 row in set (0.00 sec) -
用
LOOP
循环语句求前100项和:mysql> delimiter //
mysql> create procedure mm(out sum int)
-> begin
-> declare i int default 1;
-> declare s int default 0;
-> loop_label:loop
-> set s=s+i;
-> set i=i+1;
-> if i>100 then
-> leave loop_label;
-> end if;
-> end loop;
-> set sum=s;
-> end
-> //
Query OK, 0 rows affected (0.00 sec)调用名称为mm()的存储过程:
mysql> call mm(@s) //
Query OK, 0 rows affected (0.00 sec)mysql> select @s //
±-----+
| @s |
±-----+
| 5050 |
±-----+
1 row in set (0.00 sec) -
用REPEAT求前100项和:
mysql> delimiter //
mysql> create procedure z(out sum int)
-> begin
-> declare i int default 1;
-> declare s int default 0;
-> repeat
-> set s=s+i;
-> set i=i+1;
-> until i>100
-> end repeat;
-> set sum=s;
-> end
-> //
Query OK, 0 rows affected (0.00 sec)mysql> call z(@s)//
Query OK, 0 rows affected (0.00 sec)mysql> select @s //
±-----+
| @s |
±-----+
| 5050 |
±-----+
1 row in set (0.00 sec)
第八章 表数据的增、删、改操作
-
insert into 数据表名 values (值,‘字段名’,…) 语句插入数据。
-> insert into bb(id,name,age)
-> values(6,‘zl’,‘25’);插入多条数据:
mysql> insert into bb(id,name,age)
-> values(7,‘z’,‘1’),
-> (8,‘zz’,‘2’),
-> (9,‘zzz’,‘21’); -
使用mysql> insert into 数据表名
-> set id = ‘9’,name = ‘abc’, age= ‘12’;
插入数据 -
从数据表a中查询出user和pass的值插入到表b中:
1)
查看表a结构:desc 数据库名.a;
2)
查询a中的数据;select * from a;
3)
编写sql语句,实现从a中查询user和pass值,插入到数据表b中:insert into 数据库名.b(user,paassword) select user ,pass from a;
-
修改数据:
**update** 数据表名 **set** password =‘11‘ where user = ‘zhanglong’;
-
修改后查询:
select * from 数据表名 where user = ‘zhanglong’;
-
删除数据:
**delete from** 表名 **where** user = ‘zhanglong’;
-
通过truncate table 删除数据:(会删除所有数据,并无法恢复)
:truncate table 数据表名;
delete和truncate table 的区别: 使用truncate 后表中的计数器将被设置为该列的初始值。对于参与视图和索引的表,不能使用truncate来删除,应该使用delete。delete会在事务日志中添加一行记录,而truncate使用后,只在事务日志中记录页的释放
第九章 数据查询
第十章 常用函数
-
数值函数
abs(x):返回绝对值
ceil(x):返回大于x的最小整数
floor(x):返回小于x的最大整数
mod(x,y):返回x与y的模
rand():返回0-1之间的随机数 select round(rand()*100);
round(x,y):返回参数x的y位小数的四舍五入结果
truncate(x,y):返回数字x截断为y位小数的结果 -
字符串函数
1.concat(s1,s2…sn):把传入的参数连接成一个字符串
2.insert(str,x,y,insert):从str的x位置开始,替换y长度的字符串为insert
select insert(‘abcdefg’,2,3,‘hello’);
3.lower(str),upper(str):将字符串转换为大写,小写
4.left(str,x) right(str,x) 返回str左边(右边)x个字符,x为null则返回null
5.lpad(str,n,pad) rpad(str,n,pad) 用pad对字符串str从最左边(右边)进行填充,直到总长度
达到n
select name,lpad(name,10,’#’),rpad(name,10,’(’) from cats;
6.trim(),ltrim(),rtrim()去掉两边,左边,右边空格select concat(‘1’,trim(’ abc ‘),‘2’),concat(‘1’,ltrim(’ abc ‘),‘2’),concat
(‘1’,rtrim(’ abc '),‘2’)\G;
7.replace(str,a,b) 在字符串str中用字符串b替换所有的字符串a
8.strcmp(s1,s2):如果S1比S2小,返回-1;如果S1比S2大则返回1;如果相等则返回0(比较的是
ASC2码)
9.substring(str,x,y) 返回字符串str中从位置x起,长度为y的子字符串 -
日期函数
curdate() curtime() now(); select curdate();
select unix_timestamp(now());
select from_unixtime(1331110656);
select week(now()),year(now());
select hour(curtime()),minute(curtime());
select monthname(now());
select date_format(now(),"%Y-%m-%d %H:%i:%s"); -
流程控制语句
create table salary(id int,salary decimal(9,2));
if(value,t,f); select id,salary,if(salary>300,‘high’,‘low’) from salary;
ifnull(t,f) select id,salary,ifnull(salary,0) from salary;
case when [value1] then [result1]…else[default]end;
select case when salary<=300 then ‘low’ else ‘high’ end from salary; -
其它函数(\s可以看到)
database() select database();
version()
user()
inet_aton(ip) 将字符串地址转换为网络地址
password() 对mysql用户加密
md5() 对用户密码加密
select * from mysql.user \G; -
MySQL中的全文索引类型FULLTEXT的索引。 FULLTEXT 索引仅可用于 MyISAM 表;他们可以从CHAR、VARCHAR或TEXT列中作为CREATE TABLE语句的一部分被创建,或是随后使用ALTER TABLE 或 CREATE INDEX被添加。对于较大的数据集,将你的资料输入一个没有FULLTEXT索引的表中,然后创建索引,其速度比把资料输入现有FULLTEXT索引的速度更为快。