Mysql基本查询、视图、索引、触发器

基本查询

1.修改
String sql="update smbms_user set userCode=?,userName=? where id=?";

2.删除用户
String sql="delete from smbms_user where id=?";

3.登录
select * from user where userName=#{userName} and userPassword=#{userPassword}

4.模糊查询
select * from smbms_bill WHERE productName like "%米%"

5.处理年龄
SELECT floor(DATEDIFF(NOW(),birthday)/365) as age, u.*,r.roleName as userRoleName from smbms_user as u,smbms_role as r WHERE u.userRole = r.id

6.查news表格,要求按主题生活(topic表格,有生活,娱乐等)分类,按创建时间降序查询,并取前5条
SELECT * from news WHERE ntid=1 ORDER BY ncreateDate ASC LIMIT 0,6;

7.查全部新闻按降序排序,并取前5条
SELECT * from easybuy_news ORDER BY createTime DESC LIMIT 0,5;

8.通过用户的id来查地址
select * from easybuy_user_address where userId=#{id}

9.插入
INSERT INTO ebook_category(id,name) VALUES(2,"oracle");
INSERT INTO ebook_entry(id,categoryId,title,summary,uploaduser,createdate) VALUES(2,1,"美食","美食摘要","tome",NOW());

10.创表
create table product(
pid int(4) primary key auto_increment,
name VARCHAR(20),
catalog_name varchar(20),
price int(10),
picture varchar(20) );

11.查看触发器: show triggers

12.查看数据库版本号  select version()

 

 sql语句-视图

 

#视图。就是一个虚拟表,便于我们对数据进行处理。对视图的DML操作会改变基表数据,但不能改变基表结构,如加字段

 

为什么要使用视图:

 

<1>安全原因:限制数据的访问(如:社会保险基金表,可以使用视图只显示姓名和地址,而不显示社会的保险号和工资)

 

<2>减少复杂的slq语句查询,一般是用查询结果集返回作为视图

 

例:

 

create view empnew_view as select eid,ename,salary from emp //创建视图

 

select * from empnew_view; //查询视图

 

insert into empnew_view(eid,ename,salary) values(99,'qi1qi',66) //DML操作

 

update emp set ename="qiqi1" where eid=88 //DML操作

 

delete from emp where eid=88 //DML操作

 

DESC v;

 

 

 

#索引,方便我们的快速查找,方便我们快速查找,对SQL非常有帮助,并不是所有字段都用索引,

 

//前提,这个字段经常被当做查询对象操作,是一个表里面不是索引越多越好,根据你的具体,项目来设置,一张表里面与其他表有关系重合的,不适合加索引

 

#查看所有所有 index

 

SHOW INDEX FROM result;

 

TABLE 表 第二个字段0不可以重复,1代表可以重复

 

第三个参数:索引名字 第四个是索引下标,从1开始 第五个:字段名 第六个:排序规则, 默认是a

 

 

sql语句-触发器

 

//创建一个空部门表

 

CREATE TABLE emp(

 

eid INT(4),

 

ename VARCHAR(20),

 

epwd VARCHAR(20),

 

edate DATE

 

);

 

ALTER TABLE emp ADD salary DOUBLE(5,2);

 

INSERT INTO emp(eid,ename,epwd) VALUES (1,"aa","123");

 

 

 

#创建绩效表

 

CREATE TABLE jixiao(

 

jname VARCHAR(20),

 

jmoney DOUBLE(5,2)

 

);

 

 

 

#创建触发器:就相当于你的闹钟,在插入数据之前执行,当emp表插入数据的时候,另一个jixiao表也同时插入数据

 

CREATE TRIGGER t_money BEFORE INSERT ON emp FOR EACH ROW

 

INSERT INTO jixiao VALUES(new.ename,new.salary*0.5);

 

 

 

#创建触发器2:

 

CREATE TRIGGER t_mo BEFORE INSERT ON emp FOR EACH ROW

 

UPDATE emp SET money=new.money;

 

INSERT INTO emp(eid,ename,salary) VALUES(11,"ee",20);

 

UPDATE jixiao SET money=1;

 

SELECT * FROM jixiao;

 

 

 

#删除触发器

 

DROP TRIGGER t_money;

 

 

#展示触发器

 

SHOW TRIGGERS;

 

 

sql语句---索引

 

//创建一个主键索引(唯一,不能为空,不一定是INT)

 

ALTER TABLE emp ADD PRIMARY KEY(eid);

 

SHOW INDEX FROM emp;

 

 

 

//唯一索引(主键索引在一张表里只能有一个,唯一索引可以有多个);

 

#创建唯一索引,#在添加唯一索引时,乱码添加不成功

 

ALTER TABLE emp ADD UNIQUE(ename);

 

 

#删除索引

 

ALTER TABLE emp DROP INDEX ename;

 

 

#全局索引作用:便于我们快速查找到某一行

 

ALTER TABLE emp ADD INDEX(epwd);

转载于:https://www.cnblogs.com/binghuaZhang/p/10780421.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值