数据库(MySQL):使用下令从零开始在Navicat创建一个数据库及其数据表(三 ...

打印 上一主题 下一主题

主题 978|帖子 978|积分 2934

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
媒介

        Navicat Premium 17 数据表需要经常清缓存,不然之前的自增的数据可能会不停存在,所以把之前的表删除重新创建是对练习数据库最简单的办法。新建数据库的下令如下:
  1. /* 创建有 自增主键的属性id,非空的属性name,唯一的属性tel,代表性别的属性sex,代表年龄的属性age,代表职位的默认为“学生”的属性position */
  2. CREATE TABLE student(
  3. id INT(4) PRIMARY KEY AUTO_INCREMENT,
  4. name VARCHAR(20) NOT NULL,
  5. tel INT(11) UNIQUE,
  6. sex char(1),
  7. age int(4),
  8. position VARCHAR(4) DEFAULT('学生'));
  9. /*添加数据,因为id是自增的position是默认的所以不需要填写*/
  10. INSERT INTO student
  11. (name,tel,sex,age)
  12. VALUES
  13. ('张三','1516666777','男',18),
  14. ('张四','1516666778','男',19),
  15. ('李三','1516666779','女',20),
  16. ('李五','1516666780','男',22),
  17. ('张三','1516666788','男',17),
  18. ('赵武','1516666789','女',23),
  19. ('不思量','1516666795','女',22),
  20. ('自难忘','1516666796','男',21),
  21. ('李明','1516666678','男',20),
  22. ('小明','1516666679','男',22),
  23. ('萧炎','1516666567','男',23),
  24. ('孙武','1516666122','男',18),
  25. ('李华','1516666123','女',19),
  26. ('孙武','1516666124','男',19);
复制代码
创建数据表结果如下:


 一. 查询一列数据或几列数据

1.1 查询一列数据

   SELECT `name` FROM student;
  在数据表 student 中查询 ‘name’ 属性
  
  下令原型:SELECT 属性名 FROM 表名;
  
  反引号:它是为了区分MYSQL的保留字与平凡字符而引入的符号,一般不影响正常使用。
  

1.2 查询多列数据

   SELECT tel,sex FROM student;
  在数据表 student 中查询 tel,sex 属性
  
  下令原型:SELECT 属性名,属性名···  FROM 表名;
  

1.3 查看全部列数据

   SELECT * FROM 表名;
  查看表中全部的数据
  1.4 查询经过计算的值

   SELECT age+10 FROM student;
  查询结果是 年事+10,是一个表达式
  
  下令原型:SELECT 表达式1,表达式2 FROM 表名;
  平凡的表达式可以理解为 属性乘1
  

二. 查询某一列重复数据

2.1 单属性数据去重

   SELECT DISTINCT `name` FROM student;
  对数据表 student 的 name 属性进行去重
  
  下令原型:SELECT DISTINCT 属性名 FROM 表名;
  

2.2  多属性数据去重

  1. INSERT INTO student (name,tel,sex,age) VALUES ('李华','1516676777','男',19);
  2. /* 插入一条数据,与第十三条数据性别不同,电话号码也不同,电话号码是禁止重复*/
复制代码
  SELECT DISTINCT `name`,sex FROM student;
  对数据表 student 的 name 属性进行去重,当两条数据都重复的时候才会去重
  
  下令原型:SELECT DISTINCT 属性名1,属性名2,属性名3... FROM 表名;
  应用在多个字段时,只有当多个字段重复才会去重
  

 2.3 去重保留全部数据

   SELECT DISTINCT * FROM student;
  对 student 数据表的 全部属性进行去重,这种情况必须要全部的数据相同才气去重
  
  SELECT DISTINCT * FROM 数据表;
  这个 * 代表全部的属性
  

三. 查询满足条件的元组

3.1 查询条件表格

查询条件关键词比力=,>,<,>=,<=,!=,<>,!>,!<; NOT+上述比力运算符范围BETWEEN AND,NOT BETWEEN AND集合IN,NOT IN字符匹配(相当于等号)LIKE,NOT LIKE空值IS NULL,IS NOT NULL多重条件(逻辑运算)AND,OR,NOT







        查询满足指定条件的元组可以通过WHERE子句实现。
3.2 等于查询

   SELECT `name` FROM student WHERE `name`='张三'
  查询数据表 student 中 name 属性等于张三的数据,并且展示他们的 name 属性
  
  下令原型:SELECT 属性名 FROM 表名 WHERE 等于条件;
  

3.3 小于查询

   SELECT name,age FROM student WHERE age<=20;
  查询年事小于等于20岁的人,并且展示name和age属性
  
  下令原型:SELECT 属性名 FROM 表名 WHERE 小于条件;
  

3.4 NOT查询

   SELECT DISTINCT `name`,age FROM student WHERE NOT age<20;
  查询年事不小于20岁的人,并且展示name和age属性
  
  下令原型:SELECT 属性名 FROM 表名 WHERE NOT 判断条件;
  

3.5 范围查询

   SELECT * FROM student WHERE age BETWEEN 19 AND 22;
  查询年事在19到22岁之间的人,包括19岁和22岁,并且展示全部的属性
  
  下令原型:SELECT 属性名 FROM 表名 WHERE 属性名 BETWEEN  包罗AND的范围区间;
  
  下图的只有一条语句的时候没有分号系统也会默认结束,但是不发起大家这样写,养成好习惯很紧张
  * 代表的是全部的属性
  

3.6 范围之外查询

   SELECT * FROM student WHERE age BETWEEN NOT 19 AND 22;
  查询年事在19到22岁之外的人,不包括19岁和22岁,并且展示全部的属性
  
  下令原型:SELECT 属性名 FROM 表名 WHERE 属性名 BETWEEN  NOT 包罗AND的范围区间;
  

3.7 集合查询

   SELECT * FROM `student` WHERE name IN ('张三','李华','小明');
  查询name 属性 中有张三,李华,小明的数据,并且展示全部的属性
  
  下令原型:SELECT 属性名 FROM 表名 WHERE IN 数据集合;
  

3.8 集合之外查询

   SELECT * FROM `student` WHERE name NOT IN ('张三','李华','小明');
  查询name 属性中不包罗张三,李华,小明任何一个的数据,并且展示全部的属性
  
  下令原型:SELECT 属性名 FROM 表名 WHERE NOT IN 数据集合;
  

3.9 字符匹配

   SELECT * FROM student WHERE name LIKE '张三';
  查询数据表 student 中 name 属性等于张三的数据,并且展示他们的 name 属性
  
  字符匹配的下令原型:SELECT 属性名 FROM 表名 WHERE 属性名 LIKE 数据;
  禁止字符匹配的下令原型:SELECT 属性名 FROM 表名 WHERE 属性名 NOT LIKE 数据;
  1. SELECT * FROM student WHERE name LIKE '张三';
  2. /* 两者是等价关系 */
  3. SELECT `name` FROM student WHERE `name`='张三'
复制代码

3.10 空值查询

  1. /* 插入含有空值的数据 */
  2. INSERT INTO student (name,tel,sex) VALUES ('张三','1516456777','男');
  3. INSERT INTO student (name,tel,age) VALUES ('空值','1516123777',18);
复制代码
插入两条含有空值的数据之后现在有十七条数据(其时电脑可能卡了,所以顺序有些错误,其他无碍)

   SELECT id,sex,name FROM student WHERE sex IS NULL;
  查询数据表 student 中 sex 属性中为空的数据,并且展示他们的 name 属性
  
  下令原型:SELECT 属性名 FROM 表名 WHERE 属性名 IS NULL;
  
  注意:查询的表格中属性的顺序由查询下令中属性的顺序决定的,如下图所示
  

3.11 数据非空查询

   SELECT id,sex,name FROM student WHERE sex IS NOT NULL;
  查询数据表 student 中 sex 属性中为非空的数据,并且展示他们的 id,sex,name 属性
  
  下令原型:SELECT 属性名 FROM 表名 WHERE  属性名 IS NOT NULL;
  

3.12 AND查询

   SELECT name,age,sex FROM student WHERE age<=20 AND sex='男';
  查询数据表 student 中 年事小于20且性别为男 的数据,并且展示他们的 name,age,sex三个属性
  
  下令原型:SELECT 属性名 FROM 表名 WHERE 判断条件1 AND 判断条件2;
  

3.13 OR查询

   SELECT name,age,sex FROM student WHERE age<=20 OR sex='男';
  查询数据表 student 中 年事小于20 大概 性别为男 的数据,并且展示他们的 name,age,sex三个属性
  
  下令原型:SELECT 属性名 FROM 表名 WHERE 判断条件1 OR 判断条件2;
  

四. 基于LIKE的模糊查询

   基于LIKE的模糊查询一般陪同着两个符号:
          百分号(%):代表恣意长度的字符,长度可以为0,也可以是长度为字符串上限的长度。例如:张%,表现查询姓张的字符串;张%三,表现查询张某三的字符串,张一三,张一二三等。
          下划线(_):代表恣意单个字符。例如:张_三表现以张开头,以三末端的长度为3的恣意字符串。张一三、张二三等。
  4.1 百分号查询

   SELECT * FROM `student` WHERE name LIKE '张%';
  查询数据表 student 中 姓张的数据,并且展示他们的 全部属性
  
  下令原型:SELECT 属性名 FROM 表名 WHERE 属性名 LIKE 含有百分号的条件;
  注意:这个时候不能用等于查询
  

 4.2 下划线查询

  1. /* 插入一条数据,作为 下划线查询 的对比 */
  2. INSERT INTO student (name,tel,sex) VALUES ('李明明','1526456777','女');
复制代码
插入一条含有空值的数据之后现在有十八条数据
   SELECT * FROM `student` WHERE name LIKE '李_';
  查询数据表 student 中 姓李且名字只有两个字 的数据,并且展示他们的 全部属性
  
  下令原型:SELECT 属性名 FROM 表名 WHERE 属性名 LIKE 含有下划线条件;
  注意:这个时候不能用等于查询
  
 4.3 混合查询


   SELECT * FROM `student` WHERE name LIKE '_明%';
  查询数据表 student 中 名字第二个字是明 的数据,并且展示他们的 全部属性
  
  下令原型:SELECT 属性名 FROM 表名 WHERE 属性名 LIKE 含有百分号和下划线的条件;
  注意:这个时候不能用等于查询
  

五.  升序降序排序

        用户可以用ORDER BY子句对查询结果按照一个或多个属性列的升序(ASC)或降序(DESC)排列,默认值为升序。
5.1 降序排序

   SELECT * FROM student ORDER BY age DESC;
  将数据表按照年事的降序进行排序
  
  下令原型:SELECT 属性名 FROM 数据表 ORDER BY 属性名 DESC;
  

5.2 升序排序

   SELECT * FROM student ORDER BY `name` ASC;
  将数据表按照姓名的升序进行排序
  
  下令原型:SELECT 属性名 FROM 数据表 ORDER BY 属性名 ASC;
  首字母大写的顺序排序
  

5.3 条件排序

   SELECT * FROM student WHERE `name`='张三' ORDER BY `name` ASC;
  将数据表中名字为张三的按照年事的升序进行排序
  
  下令原型:SELECT 属性名 FROM 数据表 WHERE 条件 ORDER BY 属性名 ASC;
  

六. 统计查询

6.1 统计有多少行

   SELECT COUNT(*) FROM student;
  查询有多少行
  
  下令原型:SELECT COUNT(*) FROM 表名;;
  

6.2 统计属性值的种类

   SELECT COUNT(DISTINCT age) FROM student;
  查询年事有几种
  
  下令原型:SELECT COUNT(DISTINCT  属性名) FROM 表名;
  PS:空值不计数
  

6.3 计算一列数据的和

   SELECT SUM(age) FROM student;
  计算全部age年龄的和
  
  下令原型:SELECT SUM(属性名) FROM 表名;
  PS:空值不能加入,并且必须是数值型
  

6.4 计算平均值

   SELECT AVG(age) FROM student;
  计算全部age年龄的平均
  
  下令原型:SELECT AVG(属性名) FROM 表名;
  PS:空值不能加入,并且必须是数值型
  

6.5 最大值

   SELECT MAX(age) FROM student;
  计算全部age年龄的最大值
  
  下令原型:SELECT MAX(属性名) FROM 表名;
  

6.6 最小值

   SELECT MIN(age) FROM student;
  计算全部age年龄的最小值
  
  下令原型:SELECT MIN(属性名) FROM 表名;
  

6.7 分组查询

        分组查询将查询结果按某一列或多列的值分组,值相等的为一组。
   SELECT name,COUNT(id) FROM student GROUP BY `name`;
  查询 name 属性种类的个数,以及对应 id 的个数
  
  下令原型:SELECT 属性名1,COUNT(属性名2) FROM 表名 GROUP BY 属性名1;
  PS:空值不能计入
  




好好吃饭

好好睡觉


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表