当前位置:首页 » 《关注互联网》 » 正文

cgb2108-day02_cgblpx的博客

21 人参与  2022年01月26日 10:52  分类 : 《关注互联网》  评论

点击全文阅读


文章目录

    • 一,作业
      • --1,创建表
      • --2,插入数据
    • 二,使用Sqlyog工具
      • --1,创建库
      • --2,创建表
      • --3,创建记录
    • 三,字段约束
      • --1,主键约束
      • --2,非空约束
      • --3,唯一约束
    • 四,基础函数
      • --1,概述
      • --2,测试
    • 五,条件查询
      • --1,测试

一,作业

–1,创建表

C:\Users\WangYiBo>mysql -uroot -proot
mysql> show databases;
mysql> use cgb210801;
mysql> show tables;
mysql> create table dept(
    -> deptno int,
    -> dname varchar(20),
    -> loc varchar(13)
    -> );
Query OK, 0 rows affected (0.01 sec)
mysql> create table emp(
    -> empno int,
    -> ename varchar(10),
    -> job varchar(10),
    -> mgr int,
    -> hiredate datetime,
    -> sal double,
    -> comm numeric(8,2),
    -> deptno int
    -> );
Query OK, 0 rows affected (0.01 sec)

–2,插入数据

mysql> set names gbk; #防止中文乱码
mysql> INSERT INTO dept VALUES(10,'accounting','一区');
mysql> INSERT INTO dept VALUES(20,'research','二区');
mysql> INSERT INTO dept VALUES(10,'operations','二区');
mysql> INSERT INTO emp VALUES(100,'jack','副总',NULL,'2002-05-1',90000,NULL,1);
mysql> INSERT INTO emp VALUES(200,'tony','总监',100,'2015-02-02',10000,2000,2);
mysql> INSERT INTO emp VALUES(300,'hana','经理',200,'2017-02-02',8000,1000,2);
mysql> INSERT INTO emp VALUES(400,'leo','员工',300,'2019-02-22',3000,200.12,2);
mysql> INSERT INTO emp VALUES(500,'liu','员工',300,'2019-03-19',3500,200.58,2);

二,使用Sqlyog工具

–1,创建库

右键 – 创建库 – 输入数据库的名字/选字符集utf8 – 创建

–2,创建表

选中Tables – 右键 – 新建表 – 填写字段名称/字段类型/字段长度 – 创建 – 输入表名 – 确定

–3,创建记录

可以自己写SQL语句来执行,也可以直接利用工具在表中双击录入数据并保存

三,字段约束

–1,主键约束

哪个字段添加了主键约束,哪个字段就是一张表里的唯一的主键.
约束了字段的值,必须唯一且不能为空
主键自动递增策略: 主键的值交给了数据库去管理,数据库会查到当前记录中的最大值+1.

CREATE TABLE a(
  id INT PRIMARY KEY 
)
#1.主键约束,给字段添加PRIMARY KEY 
#特点是:字段值必须唯一 + 值不能为null
INSERT INTO a VALUES(10)#成功
INSERT INTO a VALUES(10)#不成功,因为10已经存在
INSERT INTO a VALUES(NULL)#不成功,不能插入null
#2.主键自增策略:是指主键的值不需要程序员数,
#交给数据库自增,给主键添加 AUTO_INCREMENT
CREATE TABLE b(
  id INT PRIMARY KEY AUTO_INCREMENT
)

–2,非空约束

哪个字段添加了非空约束,哪个字段的值不能为null

#3.非空约束,给字段添加 not null
#特点是:字段的值必须不能为null
CREATE TABLE c(
  id INT PRIMARY KEY AUTO_INCREMENT,
  pwd VARCHAR(10) NOT NULL
)
#第一个null是id的值,id是主键自动递增就不用程序员赋值了,
#数据库会自动+1
INSERT INTO c VALUES(NULL,'123456')#成功,pwd有值
INSERT INTO c VALUES(NULL,NULL)#不成功,pwd不能是null

–3,唯一约束

哪个字段添加了唯一约束,哪个字段的值就必须唯一

#4.唯一约束,给字段添加unique
#特点是:值必须唯一
CREATE TABLE d(
 id INT PRIMARY KEY AUTO_INCREMENT,
 nick VARCHAR(100) UNIQUE
)

四,基础函数

–1,概述

类似于java中的方法,也有()作为标记,主要也是用来提高SQL的效率
可能有些函数的使用需要传递参数
包括: ???

–2,测试

#查询部门表中的部门名称
#select 部门名称 from 表名 
SELECT * FROM dept
SELECT dname FROM dept #查询时使用字段名代替了*
SELECT dname,loc FROM dept #查询多个字段的值时用逗号隔开
#基础函数
#upper(a)把a的值变大写,lower(a)把a的值变小写
SELECT dname,UPPER(dname),LOWER('ABC'),LOWER(dname) FROM dept
#length(a)把a的值求长度,一个字母/数字长度为1,一个汉字长度为3(utf8)
SELECT ename,LENGTH(ename),job,LENGTH(job) FROM emp
#substr(a,b,c)-a是字段名b是截取的开始位置c是截取的长度
SELECT ename,SUBSTR(ename,2),SUBSTR(ename,2,3) FROM emp 
#concat(a,b,c)-a是字段名b是想要拼接的内容c是想要拼接的内容
SELECT ename,CONCAT(ename,123,'abc') FROM emp
#replace(a,b,c)-a是字段名b是要被替换的字符c是新数据
SELECT dname,REPLACE(dname,'o','666') FROM dept
#ifnull(a,b)-a是字段名b是要把null替换成的值
SELECT comm,IFNULL(comm,1000) FROM emp
#对小数的处理:round四舍五入取整 ceil向上取整 floor向下取整
SELECT comm,ROUND(comm),CEIL(comm),FLOOR(comm) FROM emp
#对日期的处理:now获取当前系统时间year获取年month获取月day获取天
SELECT NOW(),YEAR(NOW()),MONTH(NOW()),DAY(NOW())
#对日期的处理:HOUR获取时MINUTE获取分SECOND获取秒
SELECT NOW(),HOUR(NOW()),MINUTE(NOW()),SECOND(NOW())



五,条件查询

–1,测试

#常见的业务中:增删改查CRUD,其中查询需求最多
#条件查询:
#1.distinct把数据去重
SELECT DISTINCT loc FROM dept
#2.where用来引导判断条件
#select ? from ? where ?
#练习1:查询部门编号=40的数据
SELECT * FROM dept WHERE deptno=40
SELECT * FROM dept WHERE deptno=40000
#练习2:查询部门编号>10的数据
SELECT * FROM dept WHERE deptno>10
SELECT * FROM dept WHERE 1=1 #条件永远成立
#练习3:查询部门编号>10并且地址在二区的数据
SELECT * FROM dept WHERE deptno>10 AND loc='二区'
#练习4:查询部门编号>10或者地址在二区的数据
SELECT * FROM dept WHERE deptno>10 OR loc='二区'
#练习5:查询部门编号=10的或者=20的或者=30的数据
SELECT * FROM dept WHERE 
		deptno=10 OR deptno=20 OR deptno=30
#同上的需求,被简化--in子句
SELECT * FROM dept WHERE deptno IN(10,30)#查deptno=10 or deptno=30的
SELECT * FROM dept WHERE deptno NOT IN(10,20,30)

#3.like模糊查询 %是通配符,通配0~n个字符
#练习1:查询按照员工名字以l开头员工信息
SELECT * FROM emp WHERE ename LIKE 'l%' #以l开头
#练习2:查询按照员工名字包含o 的员工信息
SELECT * FROM emp WHERE ename LIKE '%o%' #中间包含o
#练习3:查询按照员工名字以a结尾 的员工信息
SELECT * FROM emp WHERE ename LIKE '%a' #以a结尾 

#4.null数据的处理
#练习1:查询没有奖金的员工信息
SELECT * FROM emp WHERE comm IS NULL
#练习2:查询有奖金的员工信息
SELECT * FROM emp WHERE comm IS NOT NULL

#5.between...and在区间范围内的数据
#练习1:查询工资范围在5000~10000内的员工信息
SELECT * FROM emp WHERE sal>5000 AND sal<10000 #(5000,10000)
SELECT * FROM emp WHERE sal BETWEEN 5000 AND 10000 #[5000,10000]


点击全文阅读


本文链接:http://zhangshiyu.com/post/33929.html

字段  约束  查询  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1