MySQL基础

一.运算符

一种符号,它是用来进行列间或者变量之间的比较和数学运算的,分为算术运算符、赋值运算符、比较运算符、逻辑运算符 四种。

算术运算符

运算符 说    明
+ 加运算,求两个数或表达式相加的和,如6+8
- 减运算,求两个数或表达式相减的差 
* 乘运算,求两个数或表达式相乘的积 
/ 除运算,求两个数或表达式相除的商,如5/3的值为1
% 取模运算,求两个数或表达式相除的余数,如:5%3的值为2 

赋值运算符

运算符 说     明
= 把一个数或变量或表达式赋值给另一变量,如:Name='王华' 

比较运算符

运算符 说    明
AND 当且仅当两个布尔表达式都为true时,返回TRUE。
OR 当且仅当两个布尔表达式都为false,返回FALSE。
NOT 对布尔表达式的值取反 

逻辑运算符

运算符 说      明
= 等于,例如:age=23 
> 大于,例如:price>100 
< 小于 
<> 不等于
>= 大于等于
<= 小于等于
!= 不等于(非SQL-92标准 )


二.语句

插入数据行语法 :INSERT  [INTO]  表名  [(列名)] VALUES  (值列表)

例子:

insert into Students (name,SCode,SAddress,SGrade,SEmail) values ('张青裁',2,'新加坡科技园',1,'ZQC@Sohu.com') ;
注意:
1.每次插入一行数据,不能只插入半行或者几列数据,插入的数据是否有效将按照整行的完整性的要求来检验
错误示范:
<span style="font-size:12px;">INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX) VALUES ('张青裁')</span><span style="font-size:18px;">   </span>

2.每个数据值的数据类型、精度和小数位数必须与相应的列匹配
错误示范:

<span style="font-size:12px;">INSERT INTO Students (SName,SAddress,SGrade,SEmail,SSEX) VALUES ('张青裁','上海松江',ZQC,'ZQC@Sohu.com', 'ZG') 
</span>

3.不能为标识列(主键)指定值
错误示范:(SCode为主键)
INSERT INTO Students (SCode,SName,SAddress,SGrade,SEmail,SSEX) VALUES (32,'张青裁','上海松江',6,'ZQC@Sohu.com',0)

4.如果在设计表的时候就指定了某列不允许为空,则必须插入数据
错误示范:(SEmail不能为空)
INSERT INTO Students (SAddress,SGrade,SEmail,SSEX) VALUES (‘上海松江’,6, ,0)

插入多行数据
第一种方法:通过INSERT SELECT语句将现有表中的数据添加到已存在的表中
INSERT INTO <表名>(列名) SELECT <列名> FROM <源表名>

例子:

insert into AddressList (姓名,地址,电子邮件) select SName,SAddress,SEmail from Students

第二种方法:通过SELECT INTO语句将现有表中的数据添加到新表中
SELECT (列名)INTO <表名>FROM <源表名>

例子:

select Students.SName,Students.SAddress,Students.SEmail into AddressList from Students


第三种方法:通过UNION关键字合并数据进行插入
INSERT INTO <表名>(列名)
SELECT <列名> UNION
SELECT <列名> UNION
……

例子:

INSERT  STUDENTS (SName,SGrade,SSex)
SELECT '张可',7,1 UNION
SELECT '李扬',4,0 UNION
SELECT '杨晓',2,0 UNION
SELECT '汤美',3,0 UNION
SELECT '苏三东',7,1 UNION
SELECT '王立岩',3,1 UNION
SELECT '张伟',7,1 UNION
SELECT '陈刚',4,1 UNION
SELECT '王娟娟',7,0

使用UPDATE更新数据行:UPDATE 表名 SET 列名 = 更新值 [WHERE 更新条件]

例子:

update Scores set Scores = 5 where Scores <= 95


1.多条件的联合使用AND
示例:

WHERE ExamDate='2009-9-13' AND SubjectId=1 AND StudentResult<60

2.日期的比较

示例:

WHERE ExamDate='2009-9-13'
3.判断列是否为空 
示例:

WHERE Email IS NULL OR Email= ' '


使用DELETE删除数据行: DELETE [FROM]  表名 [WHERE <删除条件>]
例子:

delete from Students where SName ='张青裁'

使用TRUNCATE删除数据行:TRUNCATE  TABLE  表名

例子:

TRUNCATE TABLE Students
DELETE FROM Students
功能类似

注意:
1.表结构、列、约束等不被改动
2.不能用于有外键约束的表 
3.标识列重新开始编号


数据查询:SELECT <列名> FROM <表名> [WHERE <查询条件表达式>] [ORDER BY <排序的列名>[ASC或DESC]]       (order by 为排序,默认为 ASC。ASC:升序;DESC:降序。可以多列排序,用“,”分割)

例子:

select SCode,SName,SAddress from Students where SSEX = 0 order by SCode


查询空行

例子:

SELECT SName FROM Students WHERE SEmail IS NULL

模糊查询:使用LIKE、BETWEEN、IN进行模糊查询

通配符:与LIKE关键字一起使用

通配符 解释          示例          符合条件的值
_ 一个字符   A LIKE 'C_'  CS、Cd等 
% 任意长度的字符串 B LIKE 'CO_%'   CONST、COKE等 


BETWEEN:查询某一列中内容在特定范围内的记录

例子:(查询成绩在60-80中)

SELECT StudentID, Score FROM SCore WHERE Score BETWEEN 60 AND 80

IN:查询某一列中内容与所列出的内容列表匹配的记录

例子:(查询地址是'北京','广州','上海')

SELECT SName AS 学生姓名,SAddress AS 地址 FROM Students WHERE SAddress IN ('北京','广州','上海')

列别名

使用AS来命名列(把列名改成As后的数据):

例子:

SELECT FirstName + '.' + LastName AS 姓名 FROM Employees

注意:
1. + 连接的数据类型必须兼容
2. 如果 + 连接字符型数据,结果为字符串数据的连接
3. 如果 + 连接数值型数据,结果为数值的和
4.如果一个为字符型,一个为数值型,结果为数值型

使用=来命名列:

例子:

SELECT  姓名 = FirstName+'.'+LastName FROM Employees

聚合函数

SUM():求和

例子:

SELECT SUM(Score)  AS  学号为23的学生总分 FROM  Score WHERE  StudentID =23

AVG():求平均值

例子:

SELECT AVG(SCore) AS 及格平均成绩 FROM Score WHERE Score >=60

MAX()、MIN():求最大,最小值

例子:

SELECT AVG(SCore) AS 平均成绩, MAX(Score) AS 最高分, MIN(Score) AS 最低分 FROM Score WHERE Score >=60
注意:MAX和MIN后不能加空格

COUNT():求满足条件的语句总数

例子:

SELECT COUNT (*)  AS 及格人数 FROM Score WHERE Score>=60


分组查询语句(GROUP BY后的是分数依据):SELECT …… FROM  <表名>  WHERE  ……  GROUP BY ……

例子:

SELECT COUNT(*) AS 人数, SGrade AS 年级 FROM  Students GROUP BY SGrade


分组筛选语句(HAVING后面是筛选条件):SELECT …… FROM  <表名> WHERE …… GROUP BY …… HAVING……

例子:

SELECT COUNT(*) AS 人数,SGrade AS 年级 FROM Students GROUP BY SGrade HAVING COUNT(*)>15


多表联接查询

INNER JOIN:内联接

例子:

SELECT S.SName,C.CourseID,C.Score FROM Score AS C INNER JOIN Students AS S ON C.StudentID = S.SCode


SELECT S.SName AS 姓名, CS.CourseName AS 课程, C.Score AS 成绩 FROM Students AS S INNER JOIN Score AS C ON (S.SCode = C.StudentID) INNER JOIN Course AS CS ON (CS.CourseID = C.CourseID)

LEFT JOIN:左外联接
例子:
SELECT S.SName,C.CourseID,C.Score FROM Score AS C LEFT JOIN Students AS S ON C.StudentID = S.SCode


RIGHT JOIN:右外联接   
例子:

SELECT 图书编号,图书名称,出版社名称 FROM 图书表 RIGHT OUTER JOIN 出版社表 ON 图书表.出版社编号 = 出版社表.出版社编号









  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值