当前位置: 首页 >> MySQL >> 【数据库】Mysql 数据库sql语句例句整理 >> 正文

【数据库】Mysql 数据库sql语句例句整理

2015年11月23日 10:03:15    作者:Jiaozn    分类:MySQL     评论(0)

 SQL简介(Select和Insert)

1、SQL语句中字符串一般用单引号。

2、SQL语句是大小写不敏感的。

3、NavCat中找到执行SQL语句的地方“查询”→“新建查询”,编写SQL后点击【运行】执行SQL语句。

补充:如果只想执行NavCat中编写的一部分代码,而不是执行全部代码,只要选中要执行的代码,点击鼠标右键,选择“运行已经选择的”即可。

4、最简单的SQL:查看一个表的全部数据:select * from T_Persons

5、简单的插入数据的SQL语句:INSERT INTO T_Persons(Id,Name,Age,Gender) VALUES(5,'Jim',20,1)

Insert语句可以省略表名后的列名,但是强烈不推荐

6、如果插入的行中有些字段的值不确定,那么Insert的时候不指定那些列即可。不“允许为空”的列在插入时不能省略

7、自动递增/自增(Auto Increment):字段自增可以避免并发等问题,不要程序员代码控制自增。用自增字段在Insert的时候不用指定值。修改表结构的方法【设计表】。


Update数据更新

1、更新一个列:UPDATE T_Persons Set Age=30

2、更新多个列: UPDATE T_Persons Set Age=30,Name='tom'

3、表达式:UPDATE T_Persons Set Age=Age+1

4更新一部分数据: UPDATE T_Persons Set Age=30 where Name='tom',用where语句表示只更新Name是'tom'的行,注意SQL中等于判断用单个=,而不是==。

5、Where中还可以使用复杂的逻辑判断UPDATE T_Persons Set Age=30 where Name='tom' or Age<25,or相当于Java中的||

where (Age>20 and Age<30) or(Age=80)

6、Where中可以使用的其他逻辑运算符:or、and、not、<、>、>=、<=、!=(或<>)等


Delete数据删除

删除表中全部数据:DELETE FROM T_Persons。

Delete 也可以带where子句来删除一部分数据:DELETE FROM T_Persons WHERE Age > 20

Delete只是删除数据,表还在。(*)Drop table T_Persons


数据初始化和Select语法


SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for T_Employees
-- ----------------------------
DROP TABLE IF EXISTS `T_Employees`;
CREATE TABLE `T_Employees` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Number` varchar(20) NOT NULL,
  `Name` varchar(20) DEFAULT NULL,
  `Age` tinyint(4) NOT NULL,
  `Salary` decimal(10,2) NOT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of T_Employees
-- ----------------------------
INSERT INTO `T_Employees` VALUES ('1', 'DEV001', 'Tom', '25', '8300.00');
INSERT INTO `T_Employees` VALUES ('2', 'DEV002', 'Jerry', '28', '9300.80');
INSERT INTO `T_Employees` VALUES ('3', 'SALES001', 'John', '23', '5000.00');
INSERT INTO `T_Employees` VALUES ('4', 'SALES002', 'Kerry', '28', '6200.00');
INSERT INTO `T_Employees` VALUES ('5', 'SALES003', 'Stone', '22', '1200.00');
INSERT INTO `T_Employees` VALUES ('6', 'HR001', 'Jane', '23', '2200.88');
INSERT INTO `T_Employees` VALUES ('7', 'HR002', 'Tina', '25', '5200.36');
INSERT INTO `T_Employees` VALUES ('8', 'IT001', 'Smith', '28', '3900.00');
INSERT INTO `T_Employees` VALUES ('9', 'IT002', null, '27', '2800.00');


1、简单的数据检索 :SELECT * FROM T_Employees

2、只检索需要的列 :SELECT Number FROM T_Employees 、SELECT Name,Age FROM T_Employees

3、列别名:SELECT Number AS 编号,Name AS 姓名,Age AS Age111 FROM T_Employees  写不写AS都行

4、计算列:SELECT Number 编号,Name 姓名,Age Age111,Age+10 十年后的年龄,1+1,now() FROM T_Employees

5、使用where检索符合条件的数据:SELECT Name FROM T_Employees WHERE Salary<5000。故事:新员工的数据检索噩梦

6、还可以检索不与任何表关联的数据:select 1+1;select now();


聚合函数

1、SQL聚合函数:MAX(最大值)、MIN(最小值)、AVG (平均值)、SUM (和)、COUNT(数量)

2、大于25岁的员工的最高工资 :SELECT MAX(Salary) FROM T_Employees WHERE Age>25 

3、最低工资和最高工资:SELECT MIN(Salary),MAX(Salary) FROM  T_Employees

4、大于25岁的员工人数:SELECT COUNT(*) FROM  T_Employees  WHERE Age>25 

5、全体员工的工资总和平均工资:SELECT SUM(Salary),AVG (Salary) FROM  T_Employees


 OrderBy排序

1、ORDER BY子句位于SELECT语句的末尾,它允许指定按照一个列或者多个列进行排序,还可以指定排序方式是升序(从小到大排列,ASC)还是降序(从大到小排列,DESC) 

2、按照年龄升序排序所有员工信息的列表:SELECT * FROM  T_Employees ORDER BY Age ASC 

3、按照年龄从大到小排序,如果年龄相同则按照工资从大到小排序 :SELECT * FROM  T_Employees ORDER BY Age DESC,Salary DESC

4、RDER BY子句要放到WHERE子句之后 :SELECT * FROM T_Employees WHERE Age>23 ORDER BY Age DESC,Salary DESC 


 Like模糊匹配

通配符过滤使用LIKE 。

1、单字符匹配的通配符为半角下划线“_”,它匹配单个出现的字符。以任意字符开头,剩余部分为“erry” :SELECT * FROM T_Employees WHERE Name LIKE '_erry' 

2、多字符匹配的通配符为半角百分号“%”,它匹配任意次数(零或多个)出现的任意字符。 “k%”匹配以“k”开头、任意长度的字符串。检索姓名中包含字母“n”的员工信息 :SELECT * FROM T_Employees WHERE Name LIKE '%n%' 

3、Like性能较差,很容易造成全表扫描,谨慎使用。后面会讲数据库优化(索引等),项目中做搜索用全文检索。


null不知道

1、数据库中,一个列如果没有指定值,那么值就为null,数据库中的null表示“不知道”,而不是表示没有。因此select null+1结果是null,因为“不知道”加1的结果还是“不知道”。

2、SELECT * FROM T_Employees WHERE NAME=null ; SELECT * FROM T_Employees WHERE NAME!=null ;

都没有任何返回结果,因为数据库也“不知道”。

3、Select Name+"a" FROM T_Employees 

4、SQL中使用is null、is not null来进行空值判断: 

SELECT * FROM T_Employees WHERE NAME is null ; 

SELECT * FROM T_Employees WHERE NAME is not null ;


limit获取部分结果集

1、LIMIT关键字用来限制返回的结果集, LIMIT放在SELECT语句的最后位置,语法为“LIMIT  首行行号,要返回的结果集的最大数目” 。比如下面的SQL语句将返回Name不为空的、按照工资降序排列的从第二行开始(行号从0开始)的最多五条记录:

SELECT * FROM T_Employees

where Name is not null 

ORDER BY Salary DESC  

LIMIT 2,5

2、limit一定要放到所有的语句的最后。


Groupby分组查询

1、数据分组用来将数据分为多个逻辑组,从而可以对每个组进行聚合运算。SQL语句中使用GROUP BY子句进行分组,使用方式为“GROUP BY  分组字段”。分组语句一般和聚合函数一起使用,GROUP BY子句负责将数据分成逻辑组,而聚合函数则对每一个组进行统计计算。

2、查看公司员工有哪些年龄段的:

SELECT Age FROM T_Employees GROUP BY Age 

将Age相同的数据行放到一组,分组后的数据可以看作一个临时的结果集,而SELECT  Age语句则取出每组的Age字段的值,这样我们就得到上表的员工年龄段表了。

3、如果SELECT语句有WHERE子句,则GROUP BY子句必须放到WHERE语句的之后。

4、GROUP  BY子句将检索结果划分为多个组,每个组是所有记录的一个子集。上面的SQL例子在执行的时候数据库系统将数据分成了下面的分组:

5、分组后就可以对组内的数据采用聚合函数进行统计了:

1)计算每个分组中的员工平均工资

SELECT Age,AVG(Salary) FROM T_Employees

GROUP BY Age

2)查看每个年龄段的员工的人数:

SELECT Age,COUNT(*)  FROM T_Employees

GROUP BY Age


除非注明,发表在“Jiaozn的博客”的文章『【数据库】Mysql 数据库sql语句例句整理』版权归Jiaozn所有。 转载请注明出处为“本文转载于『Jiaozn的博客』原地址https://jiaozn.com/reed/199.html

评论

发表评论   

昵称*

E-mail*

网站