MySql笔记2


SQL分类

  • DDL: 数据定义语言, 包括: 数据库向和表相关的SQL
  • DML: 数据操作语言, 包括: 增删改查
  • DQL: 数据查询语言, 只包括查询 select
  • TCL: 事务控制语言, 包含和事务相关的内容
  • DCL: 数据控制语言, 包含用户管理,权限分配相关SQL

*.sql 批处理文件

  • 把老师的emp.zip解压出来得到一个emp.sql文件, 把这个文件放到某个盘的根目录 比如 D盘根目录, 然后在命令行执行以下指令
  • 格式: source 路径; 举例: source d:/emp.sql;
  • 测试:
  • show databases; 检查里面是否多了一个empdb;
  • show tables; 会出现两个表 emp 和dept
  • select * from emp; 检查里面的数据
  • 如果出现乱码执行 set names utf8;

数据类型

  • 整数: int(m)和bigint(m) , bigint相当于Java中的long, m代表显示长度,m=5 存18 得到00018, 需要结合zerofill关键字使用
  • 举例: create table t1(age int(5) zerofill);
  • insert into t1 values(18);
  • select * from t1;
  • 浮点数: double(m,d) m代表总长度, d代表小数长度 m=5,d=3 23.123
  • 举例: create table t2(price double(5,3));
  • insert into t2 values(54.321);
  • insert into t2 values(54.332211);
  • insert into t2 values(5433.2211); //会报错或出现99.999
  • 字符串:
  • char(m): 固定长度, m=5 存"abc" 占5个字符长度, 执行效率略高,当存储内容长度固定时使用,比如:性别 m最大值255
  • varchar(m):可变长度, m=5 存"abc" 占3个字符长度,更节省存储空间,m最大值65535, 长度在255以内的建议使用
  • text(m):可变长度, m最大值65535 , 建议长度大于255时使用
  • 日期:
  • date:保存年月日
  • time:保存时分秒
  • datetime:保存年月日时分秒,默认值null
  • timestamp(时间戳举例1970年1月1日的毫秒数):保存年月日时分秒,默认值为当前系统时间
  • 测试:
  • create table t3(t1 date,t2 time,t3 datetime,t4 timestamp);
  • insert into t3 values(“2021-11-22”,“10:38:20”,null,null);
  • insert into t3 values(null,null,“2021-11-22 10:38:20”,null);

主键约束

  • 主键: 表示数据唯一性的字段称为主键
  • 约束: 创建表时,给表字段添加的限制条件
  • 主键约束:限制主键的值 唯一且非空.
  • 举例: create table t4(id int primary key,name varchar(20));
  • insert into t4 values(1,‘aaa’);
  • insert into t4 values(1,‘bbb’); 报错 重复数据
  • insert into t4 values(null,‘ccc’); 报错 不能为null

主键约束+自增

  • 自增规则:从历史最大值+1

create table t5(id int primary key auto_increment,name varchar(20));
insert into t5 values(null,‘aaa’);
insert into t5 values(null,‘bbb’);
insert into t5 values(10,‘ccc’);
insert into t5 values(null,‘ddd’);
delete from t5 where id>=10;
insert into t5 values(null,‘eee’);

  • truncate table t5; //把表删除 并重新创建 此时计数器才会清零

去重distinct

  • 查询员工表中有哪几种不同的工作?
  • select distinct job from emp;
  • 查询员工表中有哪几个不同的部门id?
  • select distinct dept_id from emp;

is null 和 is not null

  • 查询没有上级领导的员工姓名
  • select name from emp where manager is null;
  • 查询有上级领导的员工姓名
  • select name from emp where manager is not null;

and和or

  • 多个条件同时满足时使用and
  • 多个条件满足一个就可以时 使用or
  • 查询1号部门工资高于2000的员工信息
  • select * from emp where dept_id=1 and sal>2000;
  • 查询3号部门的员工或者工资等于5000的员工信息
  • select * from emp where dept_id=3 or sal=5000;
  • 查询孙悟空和猪八戒的员工信息
  • select * from emp where name=“孙悟空” or name=“猪八戒”;

比较运算符 > < >= <= = !=和<>

  1. 查询不是程序员的姓名和工资

select name,sal from emp where job!=“程序员”;
select name,sal from emp where job<>“程序员”;


两者之间between x and y 包含x和y

  1. 查询工资在2000到3000之间的员工信息

select * from emp where sal between 2000 and 3000;
select * from emp where sal not between 2000 and 3000; 范围取反


in关键字

  • 当查询某个字段的值为多个值的时候使用in
  1. 查询工资为3000,1500,5000的员工信息

select * from emp where sal=3000 or sal=1500 or sal=5000;
select * from emp where sal in(3000,1500,5000);

  1. 查询孙悟空,猪八戒和白骨精的信息

select * from emp where name in(‘孙悟空’,‘猪八戒’,‘白骨精’);
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值