美文网首页
复习数据库MySQL语句(一)

复习数据库MySQL语句(一)

作者: 隐墨留白 | 来源:发表于2018-11-05 21:33 被阅读0次

    创建表语句

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

    相关文章

      网友评论

          本文标题:复习数据库MySQL语句(一)

          本文链接:https://www.haomeiwen.com/subject/rukexqtx.html