MySQL从入门到精通 学习笔记 第7~12章

第七章MySQL基础

  1. 流程控制语句:
    通过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);

  2. 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);

  3. 通过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)

  4. 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)

  5. 用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)

第八章 表数据的增、删、改操作

  1. 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’);

  2. 使用mysql> insert into 数据表名
    -> set id = ‘9’,name = ‘abc’, age= ‘12’;
    插入数据

  3. 从数据表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;

  4. 修改数据:**update** 数据表名 **set** password =‘11‘ where user = ‘zhanglong’;

  5. 修改后查询: select * from 数据表名 where user = ‘zhanglong’;

  6. 删除数据:**delete from** 表名 **where** user = ‘zhanglong’;

  7. 通过truncate table 删除数据:(会删除所有数据,并无法恢复)
    truncate table 数据表名;

delete和truncate table 的区别: 使用truncate 后表中的计数器将被设置为该列的初始值。对于参与视图和索引的表,不能使用truncate来删除,应该使用delete。delete会在事务日志中添加一行记录,而truncate使用后,只在事务日志中记录页的释放

第九章 数据查询

第十章 常用函数

  1. 数值函数

    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位小数的结果

  2. 字符串函数

    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的子字符串

  3. 日期函数
    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");

  4. 流程控制语句
    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;

  5. 其它函数(\s可以看到)
    database() select database();
    version()
    user()
    inet_aton(ip) 将字符串地址转换为网络地址
    password() 对mysql用户加密
    md5() 对用户密码加密
    select * from mysql.user \G;

  6. MySQL中的全文索引类型FULLTEXT的索引。  FULLTEXT 索引仅可用于 MyISAM 表;他们可以从CHAR、VARCHAR或TEXT列中作为CREATE TABLE语句的一部分被创建,或是随后使用ALTER TABLE 或 CREATE INDEX被添加。对于较大的数据集,将你的资料输入一个没有FULLTEXT索引的表中,然后创建索引,其速度比把资料输入现有FULLTEXT索引的速度更为快。

你可能感兴趣的:(数据库,MySQL)