一:创建表语法
1.create table a(字段一,字段二)
alter table a add column id=1 where name=‘张三’
drop table a;
show tables;
desc a;
注意:临时解决中文乱码:set names gbk;
二:约束
2.主键约束:被主键约束的字段中的值唯一,不能重复,也不能为null
create table a(id int primary key)
2.1:主键约束并自增:主键约束的同时数据库会自动+1
create table a(id int primary key auto_increment);
id的值插入时写null数据库库会自增
2.2非空约束:哪个字段添加了非空约束,哪个字段的值不能为null
create table b(
id int primary key auto_increment,
pwd varchar(10) not null:非空约束
);
3.唯一约束:给字段添加unique,添加后的字段以后值只能唯一
create table b(
id int primary key auto_increment,
pwm varchar(100) unique:唯一约束
)
三.查询表中的字段
#查询部门表中的部门名称:
#格式:select 部门名称 from 表名—查询部门表中的部门名称
:–什么都查 字段名:–具体的字段
SELECT * FROM dept
SELECT dname FROM dept; #查询时使用字段名代替了
SELECT dname,loc FROM dept;#查询多个字段的值时用逗号隔开
四.基础函数:lower upper length substr concat replayce ifnull
基础函数
lower(a)变小写–把a的值变小写, upper(a)变大写–把a的值变大写
SELECT dname,UPPER(dname),LOWER(dname),LOWER(‘ABC’) FROM dept
length求长度–一个字母或者数字长度为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,2) 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
判断并替换null-ifnull(a,b)–a:字段名 --b要把null替换成的值
SELECT comm ,IFNULL(comm,0) 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())
五.常见的业务中:增删改查CRUD,其中查询需求最多
1.条件查询:
1.1 distinct去重–只能放在要去重的字段名前
SELECT DISTINCT loc FROM dept
1.2 where用来引导判断条件
练习1:查询部门编号 = 40的数据
#select ? from ? where?
SELECT * FROM dept WHERE deptno=40
#练习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
#同上练习五的需求,被简化
SELECT * FROM dept WHERE deptno IN(10,20,30)
SELECT * FROM dept WHERE deptno NOT IN(10,20,30)
1.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
1.4 null数据的处理
#练习1:查询没有奖金的员工信息
SELECT * FROM emp WHERE comm IS NULL
SELECT * FROM emp WHERE comm IS NOT NULL
1.5 between …and在区间范围内的数据
SELECT * FROM emp WHERE sal >5000 AND sal<10000
SELECT * FROM emp WHERE sal BETWEEN 5000 AND 10000