创建表语句
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的弥补,使条件语句可以变得动态
网友评论