MySQL

数据库指:长期存储在计算机内,有组织的,可共享的数据集合。
数据模型的三要素是:数据结构(静态特征),数据操作(动态特征)和·完整性约束条件。
数据库系统是由硬件,软件,数据构成的。
数据库类型可以分别为三类,分别是层次模型数据库,网状模型数据库,关系模型数据库。
MySQL是一种目前非常流行的关系型数据库管理系统,关系型数据库管理系统就是管理关系型数据库,并将数据组织为相关的行和列的系统。
SQL的语句可以分为四类,分别是数据定义语句,数据操作语句,数据控制语句,事务处理语句。


数据库的特点:实现了数据独立性,实现了数据共享,减少了数据冗余度,实现了数据的集中控制,维护了数据完整性。
MYSQL的优势:运行速度快,具有高效的查询速度;
对于大多数个人免费;
支持 Linux、Mac OS、Windows等多种操作系统;
为C,C++,Python,Java,Perl,PHP,Ruby 和.NET等多种编程语言提供了API;
支持多线程,充分利用了 CPU 资源;
既能作为一个单独的应用程序应用在客户端/服务器网络环境中,也能作为一个库嵌入到其他软件中;
支持多种存储引擎;
可复制全局事务标识,支持自我修复式集群。

MySQL的登录密码;
mysql-uroot-p1234

展示数据库:SHOW DATABASES
创建数据库:CREATE DATABASE
判断数据库是否存在,如没有则创建,如存在,不报错。:CREATE DATABASE IF NOT EXISTS
删除数据库:DROP DATABASE
选择数据库:USE
查看数据库:SHOW DATABASES;

查看数据库中的所有表:SHOW TABLES;
存储引擎:SHOW ENGINES \G
查看mysql默认存储引擎:SHOW VARIABLES LIKE
建表:CREATE TABLE (表名)(
查看表:SELCT * FROM (表名);
查看表结构:DESC (表名);

设置主键约束:PRIMARY KEY
设置自增约束:AUTO_INCREMENT
设置非空约束:NOT NULL
设置唯一约束:UNIQUE
设置无符号约束:UNSIGNED
设置默认约束:DEFAULT
设置外键约束:CONSTRAINT key_name FOREIGN KEY(child_col_name)
        REFERENCES parent_table_name(parent_col_name)
设置存储引擎:)ENGINE=(引擎名)
查看建表语句:SHOW CREATE TABLE
查看表基本结构:DESCRIBE
修改表名:ALTER TABLE (表名) RENAME (表名);
修改字段数据类型:ALTER TABLE (表名)MODIFY (字段)(数据类型)
修改字段名:ALTER TABLE (表名) CHANGE (字段) (值)(数据)
添加字段:ALTER TABLE (表名) ADD (字段)(数据)
删除字段:ALTER TABLE (表名) DROP (字段)
修改字段顺序:ALTER TABLE (表名) MODIFY (字段) FIRST|AFTER (字段)
修改存储引擎:ALTER TABLE (表名) ENGINE=(引擎)
删除没有被关联的表:DROP TABLE IF EXISTS (表名),(表名)
删除其他表被关联的主表:ALTER TABLE (表名) DROP FOREIGN KEY (外键名)

第六章

插入数据

指定字段及其值:INSERT INTO (表名) (字段)VALUES(值)
不指定字段只列出字段值:INSERT INTO (表名) VALUES(值)
向表中指定字段插入数据:INSERT INTO (表名)(字段) VALUES(值)
同时插入多条数据:INSERT INTO (表名)(字段) VALUES(值)

将g表中的数据插入到c表中
将其他表中的数据插入到表中:INSERT INTO (c表名)(字段)SELECT (字段) FROM (g表名)

修改数据
将c表中的num值统一改为0
修改所有数据:UPDATE (表名c) SET (字段 num)= (数据 0)
修改d表中的tyoe值为“书籍”,num值修改为“10”
修改指定数据:UPDATE (表名) SET(字段num)= (数据 10) WHERE (字段tyoe)=(数据   “书籍”)  
将id值小于5的员工的num值加1
修改指定数据:UPDATE (表名) SET sum=sum+1 WHERE id<5

删除数据
删除所有数据:DELETE FROM (表名)
删除指定数据:DELETE FROM (表名) WHERE (字段)
删除c表中id值大于5
DELETE FRPM (表名c) WHERE id<5

单表数据记录查询

查询所有字段:SELECT * FROM (表名)
查询指定字段:SELECT (字段) FROM (表名)
使用 "="符号查询
从c表中查询id值为1的记录
查询指定记录:SELECT * FROM (表名c) WHERE (字段id)=(数据1)
使用 ">="符号查询
从c表中查询num值大于等于100的值
查询指定记录:CELECT * FROM (表名c) WHERE (字段num)>=(数据100)
多条件查询
使用AND关键字查询
从b表中查询price值大于50,并且id值大于3的记录
SELECT * FROM (表名b) WHERE(字段price)>(数据50) AND (字段id)>(数据3)
使用OR关键字查询
SELECT * FROM (表名b) WHERE(字段type)>(数据"书籍") OR (字段type)>(数据"书籍")
使用IN关键字查询
查询c表中id值为1和3的记录
SELECT * FROM (表名c) WHERE (字段id) IN (数据1,3)
IN关键字还可以和NOT关键字配合使用,作用是查询字段不在指定集合中的记录
查询c表中id值不为1和3的记录
SELECT * FROM (表名c) WHERE (字段id) NOT IN (数据1,3)
查询空值
查询c表中num值为NULL的记录
SELECT * FROM (表名c) WHERE (字段num)IS NULL
IS NULL 也可以和NOT关键字配合使用,用于查询字段值不为NULL的记录
查询c表中num值不为NULL的记录
SELECT * FROM (表名c) WHERE (字段num)IS NOT NULL
查询c表中num值不等于100的记录
SELECT * FROM (表名c) WHERE (字段num)<>100

查询结果不重复
查询c表中字段type的值
SELECT (字段type) FRPOM c

范围查询
NYLQS提供BETWEEN AND 关键字,用于查询字符值在某个范围的记录
查询c表中price值为2.5到50的商品名称价格
SELECT (商品名称name),(价格price) FROM (表名c) WHERE (字段price) BETWEEN (数据2.5) AND (数据50)

字符匹配查询
通配符“%”
查询goods表中name值以“果”开头的记录
SELECT * FROM (表名goods) WHERE (商品名称name) LIKE '果%'
通配符“_”
查询goods表中name值以“西”开头,“西”后有两个字符的记录
SELECT * FROM (表名goods) WHERE (商品名称name) LIKE '西__'

排序查询
单字段排序
查询goods表中id、name和add_time字段的数据,并按照add_time字段值进行排序
SELECT id,name,add_time FROM (表名good) ORDER BY add_time
多字段排序
查询goods表中所有记录,并按照price和name字段值进行排序
SELECT * FROM (表名goods) ORDER BY price,name
降序排序
将goods表中所有记录查询出来,并按照price字段降序排序
SELECT * FROM (表名goods) ORDER BY price DESC

限制查询结果的数量
将goods表中的前3条记录查询出来
SELECT * FROM (表名goods) LIMIT 3

聚合函数和分组数据记录查询
使用聚合函数查询

COUNT()函数
用于统计数据记录条数,用于返回表中记录的条数,或者符合特定条件的记录条数
COUNT(*):计算表中总的记录数,不管表字段中是否包含NULL值
COUNT(col_name):计算表中指定字段的记录数,在具体统计时将忽略NULL值
查询goods表中总的记录条数
SELECT COUNT(*) AS goods_num FROM goods

SUM()函数
是一个求总和的函数,用于返回指定字段值的总和,或符合特定条件的指定字段值总和,在具体计算时将忽略NULL值
使用方法:SUM(col_name)
查询goods表中商品库存的总和
SELECT SUM(num) goods_num FROM goods

AVG()函数
是通过计算返回的行数和每一行数据的和,得到指定列数据的平均值,在具体计算是将忽略NULL值。AVG()函数与GROUP BY一起使用,可以计算每个分组的平均值
查询goods表中每个商品类别的平均价格
SELECT type,AVG(price) FROM goods GPOUP BY type

MAX()函数和MIN()函数
查询goods表中商品的最高价格和最低价格
SELECT MAX(price) maxpri,MIN(price) minpri FROM goods

分组查询
简单分组查询
将GROUP BY 关键字与聚合函数 COUNT() 一起使用,可以查询每组的数量
将goods表中的记录按照type字段(食品类别) 进行分组,并统计每组的数量
SELECT type,count(*) FROM goods GROUP BY type 

将goods表中的记录按照type 字段进行分组,并显示没组中的商品名称
SELECT type,group_coucat(name) FROM goods GROUP BY type

使用HAVING 过滤分组后数据
GROUP BY 和 HAVING 一起使用,可以指定显示记录所需满足的条件,作业满足条件的分组才会被显示
将goods表中的记录按照type字段分组并统计每组的数量,然后只取商品数量大于1的分组
SELECT type,count(*) FROM goods GROUP BY type HAVING COUNT(*)>1

使用多个字段进行分组
使用 GROUP BY 不止可以按照一个字段进行分组,还可以按多个字段进行分组,分组层次从左往右,即先按第1个字段进行分组,然后对第1个字段值相同的记录,再根据第2个字段进行分组,以此类推
将goods表中的记录按照type和num字段进行分组并统计,显示那个分组中商品类别、库存、商品名称和商品数量
SELECT type,num,group_concat(name),count(name) FROM goods GROUP BY type,num

连接查询
内连接查询
普通内连接查询
在staff表和section表之间使用内连接查询,从staff表中查询staff_id(员工ID)、name(姓名)、sex(性别) 和phone_number(手机号),从section表中查询section_title(部门名称)

两个表都有相同数据类型的字段section_id,可以通过该字段建立联系。为此,首先选择数据库staff,然后执行内连接查询语句
SELECT staff_id,name,sex,section_title,phone_number
FROM staff INNER JOIN section
ON staff.section_id=section.section_id

自连接查询
内连接查询中有一特殊的查询,称为自连接查询,它是指连接查询中涉及的两张表在物理上是同一张表,但逻辑上可以看成两张表,语法如下:
SELECT table_alias1.*,table_alias2.* FROM table_name AS table_alias1
INNER JOIN table_name AS table_alias2 ON condition
意义是:将一张表分别命名为table_alias1和table_alias2,然后使用这两个表名进行自连接查询


外连接查询


运算符

算术运算符
是mysql中最基本的运算符,主要用于执行数值运算。

运算符        作用
+                执行加法运算,用于获得一个或多个值的和
 -                执行减法运算,用于从一个值中减去另一个值
 *                执行乘法运算,得到两个或多个值的乘积
/(DIV)              执行除法运算,用一个值除以另一个值得到商
%(MOD)         执行求余运算,用一个值除以另一个值得到余数

执行SQL语句,获取各种算术运算结果
SELECT 4+2,4-2,4*2,4\2,4&3
在除法运算和求余运算中,如果除数为0将是非法运算,返回结果为NULL
SELECT 6\0,9%0
运算符不仅可以直接操作数值,还可以操作表中的字段

根据月薪值,计算8.1节创建的c表中员工的年薪
SELECT name AS 员工姓名,money AS 薪资,money*12 AS 年薪 FROM c

比较运算符
作用是将表达式中的两个操作数进行比较,比较结果为真,则返回1,为假则返回0,结果不确定则返回NULL


运算符                    作用
=(<=>)                       等于
<                        小于
>                        大于
<=                              小于等于
>=                       大于等于
<> (!=)                       不等于
BETWEEN AND     判断一个值是否在两个值之间
IN                       判断一个值是否在某个集合中
IS NULL                    判断一个值是否为NULL
LIKE                          通配符匹配,判断一个值是否包含某个字符
REGEXP                  正则表达式匹配


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值