mysql组件化_MySql笔记

1、数据库基础操作语句

链接数据库:mysql -u root -p 123456;

选择数据库:USE database_name;

显示可以数据库:SHOW DATABASES;

显示数据库所有表:SHOW TABLES;

显示表的列:SHOW COLUMNS FROM table_name;

2、检索数据

检索单个列:SELECT prod_name FROM table_name;

检索多个列:SELECT prod_id,prod_name,prod_price FROM table_name;

检索所有列:SELECT * FROM table_name;

检索不同的行:SELECT DISTINCT prod_id FROM table_name;

现在结果:SELECT prod_name FROM table_name LIMIT 5; 至多返回前5行

SELECT prod_name FROM table_name LIMIT 5,5; 返回从5行开始的5行

使用完全限定的表面:SELECT products.prod_nam FROM products;

3、排序检索数据

排序数据:SELECT prod_name FROM products ORDER BY prod_name;

按多个列排序:SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price,prod_name;

指定排序方向:SELECT prod_name FROM products ORDER BY prod_name DESC; 默认升序排序,DESC降序排序

SELECT prod_id,prod_price,prod_name FROM products ORDER BY prod_price DESC,prod_name;

4、过滤数据

使用WHERE字句:SELECT prod_name FROM products WHERE prod_price = 2.5;

WHERE字句操作符:=  <>(不等于) !=   <   >  <=  >=  BETWEEN

范围值检查:SELECT prod_name FROM products WHERE prod_price BETWEEN 5 AND 10;

空值检查:SELECT prod_name FROM products WHERE prod_price IS NULL;

5、数据过滤

AND操作符:SELECT prod_name FROM products WHERE prod_price < 10 AND prod_id = 100;

OR操作符:SELECT prod_name FROM products WHERE prod_price = 10 OR prod_price = 20;

IN操作符:SELECT prod_name FROM products WHERE prod_price IN (10,20,30);

NOT操作符:SELECT prod_name FROM products WHERE prod_price NOT IN (10,20,30);

6、用通配符进行过滤

百分号(%)通配符:SELECT prod_name FROM products WHERE prod_name LIKE '%jet%';  %匹配任何个数字符

下滑先(_)通配符:SELECT prod_name FROM products WHERE prod_name LIKE '_ ton anvil';  _匹配一个字符

7、用正则表达式进行搜索

基本字符匹配:SELECT prod_name FROM products WHERE prod_name REGEXP '1000';

正则特殊字符:.(任意匹配一个字符) |(或) []

8、计算字段

拼接字段:SELECT Concat(ventor_name, '(',  ventor_country, ')') FROM ventors ORDER BY ventor_name;

去掉有边的所有空格:SELECT Concat(RTrim(ventor_name), '(',  RTirm(ventor_country), ')') FROM ventors ORDER BY ventor_name;  (LTrim去掉左边空格,Trim去掉左右边空格)

使用别名:SELECT Concat(ventor_name, '(',  ventor_country, ')') AS ventor_title FROM ventors ORDER BY ventor_name;

执行算数运算:SELECT prod_id,quantity,item_price,quantity*item_price AS expanded_price FROM orderitems WHERE order_num = 20005;  (支持 + - * /)

9、使用数据处理函数

去除右边列值右边空格:RTirm()

去除左边列值右边空格:LTirm()

去除左右边列值右边空格:Tirm()

将文本转换为大写:Upper()

将稳步转换为小写:Lower()

返回串的长度:Length()

返回串左边的字符:Left()

返回串右边的字符:Right()

将任何文本串转为描述其语言表示的字母数字模式算法:Soundex()

日期和时间处理函数

增加一个日期(天、周等):AddDate()

增加一个时间(时、分等):AddTime()

返回当前日期:CurDate()

返回当前时间:CurTime()

返回日期时间的日期部分:Date()

计算连个日期之差:DateDiff()

高度灵活的日期运算函数:Date_Add()

返回一个格式化的日期或时间串:Date_Format()

返回一个日期的年数部分:Year()

返回一个日期的月数部分:Month()

返回一个日期的天数部分:Day()

对于一个日期,返回对应的星期几:DayOfWeek()

返回一个时间的小时部分:Hour()

返回一个时间的分钟部分:Minute()

返回一个时间的秒钟部分:Second()

返回一个日期时间的时间部分:Time()

返回当前日期和时间:Now()

10、汇总数据-聚集函数

返回某列的平均值:AVG()

SELECT AVG(prod_price) AS avg_price FROM products;

返回某列的行数:COUNT()

SELECT COUNT(*) AS prod_count FROM products;

返回指定列的最大值:MAX()

SELECT MAX(prod_price) AS max_price FROM products;

返回指定列的最小值:MIN()

SELECT MIN(prod_price) AS min_price FROM products;

返回某列之和:SUM()

SELECT SUM(prod_price) AS sum_price FROM products;

聚集不同值:DISTINCT

SELECT AVG(DISTINCT prod_price) AS avg_price FROM products;

11、分组数据

创建分组:GROUP BY

SELECT ventor_id,COUNT(*) AS num_prods FROM products GROUP BY ventor_id;

过滤分组:HAVING

SELECT ventor_id,COUNT(*) AS num_prods FROM products GROUP BY ventor_id HAVING COUNT(*)>2;

SELECT字句顺序

SELECT ... FROM  ...  WHERE  ...  GROUP BY  ...  HAVING  ...  ORDER BY  ...  LIMIT

12、使用子查询

利用子查询进行过滤

SELECT cust_name FROM customers WHERE cust_id IN (

SELECT cust_id FROM orders  WHERE order_num IN (

SELECT order_num FROM orderitems WHERE order_id = 'TNT2'

)

);

作为计算字段使用子查询

SELECT cust_name,(

SELECT COUNT(*) FROM orders WHERE orders.cust_id = customers.cust_id

) AS orders FROM customers ORDER BY cust_name;

13、联结表

等值联结

SELECT ventor_name,prod_name,prod_price FROM ventors,products WHERE ventors.ventor_id = products.ventor_id ORDER BY ventor_name,prod_name;

SELECT ventor_name,prod_name,prod_price FROM ventors INNER JOIN products ON ventors.ventor_id= products.ventor_id;

自联结

SELECT prod_id,prod_name FROM products WHERE vend_id = (

SELECT vend_id FROM products WHERE prod_id = 'DTNTR'

);

SELECT p1.prod_id,p1.prod_name FROM products AS p1,products AS p2 WHERE p1.vend_id=p2.vend_id AND p2.prod_id = 'DTNTR';

外部联结

SELECT customers.cust_id,orders.order_num FROM customers RIGHT OUTER JOIN orders IN customers.cust_id=orders.cust_id;

SELECT customers.cust_id,orders.order_num FROM customers LEFT OUTER JOIN orders IN customers.cust_id=orders.cust_id;

14、组合查询

创建组合查询

SELECT vend_id,prod_id,prod_price FROM products WHERE prod_price <= 5

UNION

SELECT vend_id,prod_id,prod_price FROM products WHERE vend_id IN (1001,1002);

15、插入数据

插入完整的行

INSERT INTO customers(cust_id,cust_name_cust_age) VALUES(10002,'xxx',28);

插入多行

INSERT INTO customers(cust_id,cust_name_cust_age) VALUES(10002,'xxx',28),(10003,'yyy',18);

插入检索出的数据

INSERT INTO customers(cust_id,cust_name_cust_age) SELECT cust_id,cust_name_cust_age FROM custnew;

16、更新和删除数据

UPDATE customers SET cust_name='ddd',age='40 WHERE cust_id = 100001;

DELETE FROM customers WHERE cust_id = 100001;

17、创建和操纵表

创建

CREATE TABLE customers(

cust_id  int  NOT NULL  AUTO_INCREMENT,

cust_name  char(50)  NOT NULL,

cust_age  int NOT NULL DEFAULT 10,

PRIMARY KEY(cust_id)

)ENGINE=InnoDB;

更新

给表插入一个列:ALTER TABLE vendors ADD vend_phone CHAR(20);

删除一个列:ALTER TABLE vendors DROP vend_phone;

删除表:DROP TABLE vendors;

重命名表:RENAME TABLE vendors TO vendors1;

18、使用视图

利用视图简化复杂的联结

CREATE VIEW productcustomers AS

SELECT cust_name,cust_contact,pro_id FROM customers, orders, orderitems WHERE customers.cust_id=orders.cust_id AND orders.order_num=orderitems.order_num;

SELECT cust_name,cust_contact FROM productcustomers WHERE prod_id='100002';

19、使用存储过程

执行存储过程

CALL productpricing(@pricelow,@prichigh,@priceaverage);

创建存储过程

DELIMITER //

CREATE PROCEDURE productpricing()

BEGIN

SELECT AVG(prod_price) AS priceaverage FROM products;

END //

DELIMITER ;

删除存储过程:DROP PROCEDURE productpricing;

传入返回参数

DELIMITER //

CREATE PROCEDURE productpricing(OUT p1 DECIMAL(8,2),OUT p2 DECIMAL(8,2),OUT p3 DECIMAL(8,2))

BEGIN

SELECT MIN(prod_price)

INTO p1

FROM products;

SELECT MAX(prod_price)

INTO p2

FROM products;

SELECT AVG(prod_price)

INTO p3

FROM products;

END//

DELIMITER ;

CALL productpricing(@max,@min,@avg);

SELECT @max,@min,@avg;

传入使用参数

DELIMITER //

CREATE PROCEDURE ordertotal(IN onmuber INT, OUT ototal DECIMAL(8,2))

BEGIN

SELECT SUM(item_price*quantity) FROM orderitems WHERE order_num = onumber INTO ototal;

END//

DELIMITER ;

CALL ordertotal(2005,@ototal);

检测存储过程:SHO CREATE PROCEDURE ordertotal;

20、使用触发器

只支持DELETE/INSERT/UPDATE语句,BEFORE和AFTER事件

创建触发器:CREATE TRIGGER newproduct AFTER INSERT ON products FOR EACH ROW SELECT 'prodcuct add';

删除触发器:DROP TRIGGER newproduct;

INSERT触发器:可引用一个名为NEW的虚拟表,访问被插入的值,在BEFORE INSERT 触发器中,NEW中的值也可以被更新,对于AUTO_INCREMENT列,NEW在INSERT执行之前包含0,在INSERT执行之后包含新的自动生成值

CREATE TRIGGER neworder AFTER INSERT ON orders FOR EACH ROW SELECT NEW.order_num;

DELETE触发器:可引用一个名为OLD的虚拟表,访问被删除的行,OLD中的值全都是只读的,不能更新

CREATE TRIGGER deleteorder BEFORE DELETE ON orders FOR EACH ROW

BEGIN

INSERT INTO archive_order(order_num,order_date,cust_id) VALUE (OLD.order_num,OLD.order_date,OLD.cust_id);

END;

由于某种原因,BEGIN END 内执行失败,DELETE本身将被放弃。

UPDATE触发器:可引用一个名为OLD的虚拟表访问以前的值,引用一个名为NEW的虚拟表访问更新的值;在BEFORE UPDATE触发器中,NEW中的值允许被修改;OLD中的值全都是只读

CREATE TRIGGER updatevendor BEFORE UPDATE ON vendors FOR EACH ROW SET NEW.vend_state = UPPER(NEW.vend_state);

21、管理事务处理

关键词:

事务(transaction)指一组SQL语句

回退(rollback)指撤销指定SQL语句的过程

提交(commit)指将未存储的SQL语句结果写入数据库

保留点(savepoint)指事务处理中设置的临时占位符,你可以对它发布回退(与回退整个事务处理不同)

事务的开始:START TRANSACTION

事务的回退:ROLLBACK

START TRANSACTION;

DELETE FROM orders;

ROLLBACK;

事务的提交:COMMIT

START TRANSACTION;

DELETE FROM orders;

COMMIT;

设置保留点:SAVEPOINT delete1;

ROLLBACK TO delete1;

22、安全管理

MySQL用户账号和信息存储在名为mysql的数据库中

USE mysql;

SELECT user FROM user;

创建用户账号

CREATE USER benIDENTIFIED BY 'xxxxx';

重命名用户名

RENAME USER ben TO bforta;

删除用户账号

DROP USER bforta;

设置访问权限

查看用户权限:SHOW GRANTS FOR bforta;

设置权限:GRANT SELECT ON crashcourse.* TO bforta;

撤销权限:REVOKE SELECT ON crashcourse.* FROM bforta;

GRANT和REVOKE可在几个层次上控制访问权限:

整个服务器,使用GRANT ALL和REVOKE ALL

整个数据库:使用ON database.*

特定的表:使用ON database.table

权限:

ALL:除GRANT OPTION外所有权限

ALTER:使用ALTER TABLE

ALTER ROUTINE:使用ALTER PROCEDURE和DROP PROCEDURE

CREATE:使用CREATE TABLE

CREATE ROUTINE:使用CREATE PROCEDURE

CREATE TEMPORARY:使用CREATE TEMPORARY TABLE

CREATE USER:使用CREATE USER/DROP USER/RENAME USER/REVOKE ALL PRIVILEGES

CREATE VIEW:使用CREATE VIEW

DELETE:使用DELETE

DROP:使用DROP TABLE

EXECUTE:使用CALL和存储过程

FILE:使用SELECT INTO OUTFILE和LOAD DATA INFILE

GRANT OPITION:使用GRANT和REVOKE

INDEX:使用CREATE INDEX和DROP INDEX

INSERT:使用INSERT

LOCK TABLES:使用LOCK TABLES

PROCESS:使用SHOW FULL PROCESSLIST

RELOAD:使用FLUSH

REPLICATION CLIENT:服务器位置的访问

REPLICATION SLAVE:由复制从属使用

SELECT:使用SELECT

SHOW DATABASES:使用SHOW DATABASES

SHOW VIEW:使用SHOW CREATE VIEW

SHUTDOWN:使用mysqladmin shutdown(用来关闭MySQL)

SUPER:使用CHANGE MASTER/KILL/LOGS/PURGE/MASTER/SET GLOBAL,

UPDATE:使用UPDATE

USAGE:无访问权限

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358839.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

让我们回顾一下如何通过JDBC插入Clob或Blob

LOB是所有数据库以及JDBC中的PITA。 正确处理它们需要花费几行代码&#xff0c;并且可以确保最终会出错。 因为您必须考虑以下几点&#xff1a; 首先&#xff0c;LOB是繁重的资源&#xff0c;需要特殊的生命周期管理。 分配LOB后&#xff0c;最好“释放”它&#xff0c;以减轻…

Android JNI入门第五篇——基本数据类型使用

前面讲到了java和native数据类型&#xff0c;这里就开始做一下使用&#xff1a; 第一步&#xff1a;新建工程 第二部&#xff1a;书写 java方法&#xff1a; [java] view plaincopyprint? public class NativeMethod { static { System.loadLibrary("com…

使用微信开发者工具添加小程序底部导航栏报错

粉丝求助&#xff1a; 示例图&#xff1a; 看了这个页面&#xff0c;很明显这个页面引用的路径都有问题。 解决办法&#xff1a;

应用“Cain Abel”实现DNS欺骗

环境的搭建&#xff1a; 1&#xff0c;在Windows 7安装IIS服务&#xff0c;访问www.baidu.com或其他任意站点&#xff0c;保存首页文件至本地wwwroot文件夹中&#xff1b; &#xff08;1&#xff09;打开控制面板&#xff0c;找到“程序”&#xff0c;点进去 点击“打开或关闭…

java 线程池技术_Java线程池技术以及实现

public class DefaultThreadPool implements ThreadPool{//线程池最大限制数private static final int MAX_WORKER_NUMBERS 10;//线程池默认的数量private static final int DEFAULT_WORKER_NUMBERS 5;//线程池最小数量private static final int MIN_WORKER_NUMBERS 1;//这是…

Android killer软件闪退的解决办法?

解决办法&#xff1a; 重新下载安装一个版本比较新的。

css3 animation 动画属性简介

animation 动画属性介绍 animation 属性是一个简写属性&#xff0c;用于设置动画属性&#xff1a; 1. animation-name----规定需要绑定到选择器的 keyframe 名称。 语法&#xff1a;animation-name: keyframename|none&#xff1b; Keyframename&#xff1a;规定需要绑定到选择…

EditThisCookie使用

下载安装 http://www.cnplugins.com/uploads/plugins/201502/www.cnplugins.com_fngmhnnpilhplaeedifhccceomclgfbg_1_4_1_.crx从上面这个网址下载下来&#xff0c;下下来之后用Chrome插件伴侣制作成谷歌浏览器能直接添加的插件 使用 鼠标右键单击——>EditThisCookie&am…

ac算法 有什么用 Java_AC算法使用例子

/*** 实现测试&#xff1a;串匹配和词频统计功能*/public void largerTextExample(){String text "你好abc,ac,abc,def,ac,okt, ac,dfdfe, ac , what is it 你好啊,bc";String[] terms {"你好","ac", "abc", "bc"};for (…

eclipse中在类saolei.Test 中找不到main方法

粉丝提问&#xff1a;eclipse中在类saolei.Test 中找不到main方法 解决办法&#xff1a; eclipse设置自动保存或者CTRLS 建议使用更加智能的编译器IDEA

cdi 作用 spring_什么是CDI,它与@EJB和Spring有什么关系?

cdi 作用 spring简要概述了Java EE中的依赖项注入&#xff0c; Resource / EJB和Inject之间的区别以及它们与Spring的关系-主要是链接形式。 上下文依赖注入&#xff08;CDI&#xff0c; JSR 299 &#xff09;是Java EE 6 Web Profile的一部分&#xff0c;它本身基于Java依赖注…

Cookie和会话Session

Cookie和会话Session Cookie Cookie是识别客户端的特定用户。 1.每次HTTP请求的时候&#xff0c;客户端都会发送相应的Cookie信息到服务端。实际上大多数的应用都是用 Cookie 来实现Session跟踪的&#xff0c;第一次创建Session的时候&#xff0c;服务端会在HTTP协议中告诉客…

高速排序算法

高速排序算法作者 July 二零一一年一月四日------------------------------------------写之前&#xff0c;先说点题外话。每写一篇文章&#xff0c;我都会遵循下面几点原则&#xff1a;一、保持版面的尽量清晰&#xff0c;力保排版良好。二、力争所写的东西&#xff0c;清晰易…

java csv 导入数据库_java – 如何上传CSV文件然后自动将数据插入数据库?

我有基于Java的Spring MVC应用程序,它也使用Spring安全性.我正在使用hibernate作为此Web应用程序的ORM工具.以下是我的要求 –用户可以使用Web浏览器上传CSV文件.已知CSV文件的格式包含以下5个字段&#xff1a;userId, location, itemId, quantity, tranDate001, NY, 00A8D5, 2…

某小型校园网规划与设计要点(课程报告)

粉丝求助&#xff1a; 设计某小型校园网络&#xff0c;校园内覆盖4个大楼&#xff0c;分别教学楼&#xff0c;图书馆&#xff0c;办公室和学生宿舍楼&#xff0c;学校申请到B类私有地址为&#xff1a;172.16.8.0/21。要求&#xff1a;&#xff08;1&#xff09;不同大楼主机划分…

使用PHP管理SQL

php管理数据库 php连接数据库函数——mysqli_connect 格式&#xff1a;mysqli_connect(servername,user,pass,database) servername&#xff1a;数据库地址 user&#xff1a;数据库用户名 pass&#xff1a;数据库密码 database&#xff1a;数据库名 <?phpheader(conte…

不可变的基础架构,热部署和JVM

您是否在生产中部署和取消部署基于JVM的应用程序&#xff08;无论JVM容器/无容器&#xff09;&#xff1f; 也就是说&#xff0c;当您拥有某个应用程序或服务的新版本时&#xff0c;是否通过“取消部署”和“热部署”该应用程序的新更新版本来更改正在运行的JVM&#xff1f; 或…

android 常见分辨率(mdpi、hdpi 、xhdpi、xxhdpi )屏幕适配

http://www.tuicool.com/articles/nuyMZb 1 Android手机目前常见的分辨率 1.1 手机常见分辨率: 4:3 VGA 640*480 (Video Graphics Array) QVGA 320*240 (Quarter VGA) HVGA 480*320 (Half-size VGA) SVGA 800*600 (Super VGA) 5:3 WVGA 800*480 (Wide VGA) 16:9 FWVGA …

前端页面通过web3.eth.accounts无法获取账户信息

粉丝求助&#xff1a; /* 新版的方式 */var web3Provider;if (window.ethereum) {web3Provider window.ethereum;try {// 请求用户授权await window.ethereum.enable();} catch (error) {// 用户不授权时console.error("User denied account access")}} else if (wi…