复习数据库MySQL语句(一)

创建表语句

CREATE TABLE person (id int PRIMARY KEY auto_increment,name VARCHAR(10) NOT NULL,age int  NOT NULL);
(XN1UVSN9C%WTFVC)[email protected]

插入语句

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的弥补,使条件语句可以变得动态

你可能感兴趣的:(复习数据库MySQL语句(一))