复习数据库MySQL语句(一)

创建表语句

CREATE TABLE person (id int PRIMARY KEY auto_increment,name VARCHAR(10) NOT NULL,age int  NOT NULL);
(XN1UVSN9C%WTFVC)1X@1E3.png

插入语句

INSERT INTO person(name,age) VALUES ('tom',20);
#如果id未定义auto_increment,则需要为id填值

多值插入语句

 INSERT INTO person(name,age) VALUES ('lucy',18),('lili',18),('xiaoming',13);  

查询语句

SELECT * FROM person;

查询条件语句

SELECT * FROM person WHERE id>=3;

查询包含语句

SELECT * FROM person WHERE name LIKE "l%";              首字母是l
SELECT * FROM person WHERE name LIKE "%l";              尾字母是l
SELECT * FROM person WHERE name LIKE "%l%";             单词中包含l

范围查询语句

#年龄在13和20之间且包含13和20
SELECT * FROM person WHERE age BETWEEN 13 AND 20;       

过滤查询

 SELECT DISTINCT name FROM person;            返回不重复的姓名

更新语句/修改语句

UPDATE person set name='tomplus' WHERE id=2; 

删除语句

DELETE FROM person WHERE id=2;

多条件语句

SELECT * FROM person WHERE name LIKE 'l%' AND age>13;

范围查询

SELECT * FROM person LIMIT 3;           限制数量     输出表的前3条数据
SELECT * FROM person LIMIT 3 OFFSET 2;       输出前两条数据后的三条数据

范围查询

SELECT * FROM person WHERE age IN (15,18);       符合()内某一个元素的输出
SELECT * FROM person WHERE age=15 or age=18;             与上一句等作用

显示表的详细信息

DESC person;

创建唯一索引

创建dog表的name字段为唯一索引,索引名(自定义) name_unique
CREATE UNIQUE INDEX name_unique ON dog(name);      

多表查询

#二表查询
SELECT * FROM stu,grade WHERE stu.grade_id=grade.id;
SELECT stu.name,stu.score,grade.name,grade.type FROM stu,grade WHERE stu.grade_id=grade.id;
SELECT stu.name AS 学生名字,stu.score,grade.name AS 班级,grade.type FROM stu,grade WHERE stu.grade_id=grade.id;
#三表查询
select e.deptno,e.ename,e.sal,e.empno,d.deptno,s.* from emp as e right join dept as d on e.deptno=d.deptno inner join salgrade as s on e.sal BETWEEN LOSAL AND HISAL
select username,psw,gname,tel from (t1 left join t2 on t1.t1_id=t2.t1_id) left join t3 on t1.t1_id=t3.t1_id

内连接

inner join 只返回符合条件的行
Select A.name,B.name from A inner join B on A.id=B.id
Select A.name,B.name from A join B on A.id=B.id
结果是一样的(内连接的inner关键字可省略);

外连接(左右查询 )

 左连接   
# 返回包括左表中的所有记录和右表中联结字段相等的记录
# LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
# 左连接A、B表结果包括A的全部记录和符合条件的B的记录  
SELECT * FROM stu LEFT JOIN grade ON stu.grade_id=grade.id;
右连接
#反之
SELECT * FROM stu RIGHT JOIN grade ON stu.grade_id=grade.id;
# 也就是说 左联结B、A的结果和右联结A、B表的结果是一样的

能够增加普通索引和UNIQUE索引两种。其格式如下:

create index index_name on table_name (column_list) ;
create unique index index_name on table_name (column_list) ;

sql语句方法

AVG()                        平均值
COUNT()                      计算数量
MAX()                        最大值
MIN()                        最小值
SUM()                        求和

Group By                     通过某一项分组
Having                       where的弥补,使条件语句可以变得动态
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容