回顾mysql
Sql语句四大类:
1.DDL语句:数据定义语言,用来定义数据库,表,列。
2.DML:数据操作 (增删改) 。
3.DCL:数据控制语言 ,用于定义访问权限。Rm -rf
4.DQL:数据查询语句, 用来查询记录。
单表查询
多表查询
1.1对1
2.多对1
3.多对多
常用类型:
Int :整形
Varchar:可变字符串 最大6w个字节。
Char :固定长度字符串。Char(2)
Date:yyyy-MM-dd
Datetime:yyyy-MM-dd hh:mm:ss
Decimal:浮点数类型
如果存储的字符串长度几乎相等,使用 char定长字符串类型。
注意:字符串类型和日期类型需要加单引号。
Not null :这个列名添加数据时不能为空。
问你某某sql语句怎么优化。
Sql语句他不是写死的。他必须搭配应用场景做相对于的修改。
1.DML语句:
1.1插入数据:
语法:
Insert into 表名(列名1,列名2,…) Values(值1,值2)
INSERT INTO student(s_id,s_name,crete_time) VALUES(7,‘黄正杰’,‘2020-03-19 10:56:00’)
Insert into 表名 Values():默认所有列都要按照顺序添加数据。
1.2删除数据:
Where:判断条件
语法:DELETE FROM 表名 where 条件
DELETE FROM student WHERE s_id=4
1.3修改数据:
UPDATE 表名 SET 列名1=值1,列名2=值2 where 条件
UPDATE student SET s_home=‘河南郑州’ WHERE s_name=‘陈长川’
2.DCL语句
2.1创建用户:
CREATE USER 用户名@localhost(ip地址) IDENTIFIED BY ‘密码’
Identified: aɪˈdentɪfaɪd
2.2给用户授权
语法:
GRANT 权限1,权限2,权限3 ON wl18301.*TO 用户名@localhost(ip)
权限:
Create:创造
GRANT :授予
Insert:新增
Delete:删除
Select:查询
Update:修改
2.3:撤销用户权限
语法:
Revoke 权限1,权限2 ON wl18301.*FORM 用户名@localhost(ip)
2.4 查看用户权限
Show grants for 用户名
2.5 删除用户;
DROP USER 用户名
3,DQL语句
语法:
Select *(查询所有的列) s_home //要查询的列名
FROM student //要查询的表
Where XXXXXXXXX //查询条件
Order by 字段 DESC(降序排序) ASC(升序排序) //排序条件
1.查询所有数据
SELECT *
FROM student;
2.查询所有人的户籍地。(查询指定列)
SELECT s_name,s_home
FROM student;
3.1条件查询
= ,!= ,<= ,>= >,<
AND:并且
OR :或者
In():查询集合
Not:非
Is null:查询所有为空值的数据
2.查询所有 籍贯在武汉 并且密码不为123456的人的户籍地
SELECT s_name,s_home
FROM student
WHERE s_home=‘湖北武汉’ AND s_password!=‘123456’
3.查询所有 籍贯为湖北孝感 并且id小于5 的人的账户密码
Select s_user, s_password
From student
Where s_home=’湖北孝感’ and s_id<5
4.查询籍贯为湖北武汉 或者 籍贯为湖北孝感的人的所有信息
SELECT *
FROM student
WHERE s_home=‘湖北武汉’ OR s_home=‘湖北孝感’
5.查询 所有 id为 1,3,5的人的所有信息
SELECT *
FROM student
WHERE s_id IN (‘1’,‘3’,‘5’)
6.查询所有 id 不是 1,3,5的人的所有信息
SELECT *
FROM student
WHERE s_id NOT IN (‘1’,‘3’,‘5’)
7.查询所有账户为空的信息。
SELECT *
FROM student
WHERE s_user IS NULL
3.2模糊查询
语法:
Select *
From 表名
Where e_name LIKE ‘值’;
Like: %:可以匹配0-n个字母
_: 可以匹配任意字符。
%值%
1.我要查询所有姓张员工的所有信息
SELECT *
FROM emp
WHERE e_name LIKE ‘张%’;
2.我要查询名字中含有金的员工的信息。
SELECT *
FROM emp
WHERE e_name LIKE ‘%金%’;
3.查询所有不重复员工的工资:
SELECT DISTINCT sal,groups
FROM emp
4.排序:
查询所有人信息,按照工资进行降序排列
SELECT *
FROM emp
ORDER BY sal DESC
查询所有人信息,按照工资进行降序排列,工资相同的情况下,按年龄进行升序排列
SELECT *
FROM emp
ORDER BY sal DESC,age ASC
如果你在sql语句里面做了计算 ±*/ 一定要给我们字段名加上IFNULL()。
查询所有人的工资(底薪+奖金)
SELECT e_name,IFNULL(sal,3000)+IFNULL(comm,0)
FROM emp
聚合函数:
MAX():最大值
MIN():最小值
CONUT():计数
SUM():求和
AVG():平均值