时间:2021-07-01 10:21:17 帮助过:12人阅读
mysql> create view db_users.v_idlogin as select userid, last_login as login_date from tb_users where birth < '1980-1-1'; Query OK, 0 rows affected (0.04 sec) mysql> show tables; +--------------------+ | Tables_in_db_users | +--------------------+ | tb_users | | v_idlogin | +--------------------+ 2 rows in set (0.00 sec) mysql> select * from v_idlogin; +--------+------------+ | userid | login_date | +--------+------------+ | 10003 | 2014-09-20 | | 10004 | 2015-02-10 | +--------+------------+ 2 rows in set (0.02 sec)删除视图如下:
mysql> drop view if exists v_idlogin; Query OK, 0 rows affected (0.00 sec) mysql> show tables; +--------------------+ | Tables_in_db_users | +--------------------+ | tb_users | +--------------------+ 1 row in set (0.00 sec)存储过程: 一个良好的数据库都会用到存储过程。存储过程是一组为了完成特定功能的sql语句集,经过编译后存储在数据库中。存储过程的实质就是部署在数据库端的一组定义代码以及SQL,将常用的或很复杂的工作预先用sql语句写好并用一个指定的名称存储起来,那么以后要让数据库提供与已定义好的存储过程的功能相同的服务时,只需调用即可自动完成命令。 存储过程增强了sql语言的功能和 灵活性。存储过程可以用流控制语句编写,完成复杂的运算,有很强的灵活性。 存储过程保证了数据的安全性和完整性,通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。 存储过程语法: CREATE PROCEDURE sp_name ([ proc_parameter[,...]]) [ characteristic ...] routine_body 句创建存储子程序。要在MySQL 5.1 中创建子程序,必须具有CREATE ROUTINE权限,并且ALTER ROUTINE和EXECUTE权限被自动授予它的创建者。如果二进制日志功能被允许,你也可能需要SUPER 权限,默认地,子程序与当前数据库关联。要明确地把子程序与一个给定数据库关联起来,可以在创建子程序的时候指定其名字为db_name.sp_name。
mysql> mysql> delimiter $ mysql> create procedure get_one_user( -> in id int) -> begin -> select * from tb_users where userid>id; -> end; -> $ Query OK, 0 rows affected (0.00 sec) mysql> delimiter ;调用存储过程使用call语句:
mysql> call get_one_user(10005) -> ; +--------+----------+------------+------------+ | userid | username | birth | last_login | +--------+----------+------------+------------+ | 10007 | Hamilton | 1988-07-07 | 2014-11-16 | | 10008 | Johnson | 1986-06-07 | 2015-01-23 | | 10009 | James | 1989-08-17 | 2013-12-23 | | 10010 | james | 1984-12-30 | 2014-12-23 | | 10011 | Gay | 1987-02-03 | 2014-12-23 | | 10012 | Kaman | 1981-04-04 | 2010-01-13 | | 10006 | Wade | 1982-03-04 | 2012-05-19 | +--------+----------+------------+------------+ 7 rows in set (0.04 sec) Query OK, 0 rows affected (0.04 sec)索引: 索引是对数据库表中一列或多列的值进行排序的一种结构,是某个表中一列或多列值得集合和相应的指针向表中物理标识这些值得数据页的逻辑指针清单。 创建索引可以大大提高系统性能,若果没有索引,执行查询是mysql必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录,表里面记录越多,这个操作的代价就越高。但如果作为搜索条件的列上已经创建了索引,mysql无需扫描任何记录即可迅速地得到目标记录所在位置。 创建索引语法为: create [unicode | fulltext | spatial] index index_name [using index_type] on tbl_name (index_col_name, ...) mysql提供以下几种索引类型选择:普通索引(create index)、唯一性索引(create unique index)、主键(primary key)、全文索引(fulltext)。其中普通索引、唯一性索引和主键也可以在创建或修改表时指定。 以唯一性索引为例,直接创建唯一索引语法如下:
mysql> select * from tb_users; +--------+----------+------------+------------+ | userid | username | birth | last_login | +--------+----------+------------+------------+ | 10000 | Allen | 1981-01-01 | 2014-02-02 | | 10001 | Ben | 1982-04-02 | 2014-04-30 | | 10002 | Curry | 1985-08-12 | 2014-01-17 | | 10003 | Davis | 1978-07-12 | 2014-09-20 | | 10004 | Ellis | 1979-09-02 | 2015-02-10 | | 10005 | Faried | 1984-02-05 | 2014-12-01 | | 10007 | Hamilton | 1988-07-07 | 2014-11-16 | | 10008 | Johnson | 1986-06-07 | 2015-01-23 | | 10009 | Jackson | 1989-08-17 | 2013-12-23 | | 10010 | James | 1984-12-30 | 2014-12-23 | | 10011 | Gay | 1987-02-03 | 2014-12-23 | | 10012 | Kaman | 1981-04-04 | 2010-01-13 | | 10006 | Wade | 1982-03-04 | 2012-05-19 | +--------+----------+------------+------------+ 13 rows in set (0.00 sec) mysql> create unique index idx_name on tb_users(username(5)); Query OK, 13 rows affected (0.13 sec) Records: 13 Duplicates: 0 Warnings: 0 mysql>主键是一种特殊的唯一索引,不允许有空值,一般在创建表时同时创建主键索引。一个表只能有一个主键。
搞定linux上MySQL编程(三):MySQL高级语法
标签:mysql 试图 存储过程 索引