cgb2108-day02 你的名字 2022-09-13 01:58 178阅读 0赞 ### 文章目录 ### * * 一,作业 * * \--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]
相关 cgb2108-day07 文章目录 一,改造JDBC释放资源 \--1,完善工具类 \--2,修改测试类 二,HTML 绝地灬酷狼/ 2022年09月14日 15:27/ 0 赞/ 169 阅读
相关 cgb2108-day01 文章目录 一,数据库 \--1,概述 \--2,安装 \--3,数据库结构 二, 雨点打透心脏的1/2处/ 2022年09月12日 13:57/ 0 赞/ 135 阅读
相关 CGBTN2108_DAY02复习 DAY02 复习 1 Java的标识符 1. 由字母 数字 下划线 美元符号 组成 2. 不能以数字开头 3. 严格区分大小写 4. 见名之意,并且不要使用 逃离我推掉我的手/ 2021年09月09日 14:02/ 0 赞/ 335 阅读
还没有评论,来说两句吧...