黑马程序员技术交流社区

标题: SQL语句 [打印本页]

作者: 梦想的小草    时间: 2016-9-2 21:24
标题: SQL语句
SQL语句分类:
    1. 数据定义语言:DDL(data definition language),用来定义数据库对象:数据库,表,列等.关键字:create,alter,drop等(了解).
        1.1 数据库:
            1).创建数据库格式:
                creata database 数据库名;
                create database 数据库名 charcter set 字符集;
            2).查看数据库:
                show databases; -- 查看所有数据库
                show create database 数据库名; -- 查看某个数据库
            3).删除数据库:
                drop database 数据库名;
            4).切换数据库:
                use 数据库名;
            5).查看正在使用的数据库:
                select database();
        1.2 表:
            1).创建表格式:
                create table 表名(字段名 类型(长度) 约束,...);
                主键约束:用于标识当前记录的字段.非空唯一.在字段后加primary key;
                create table 表名(字段名 类型 primary key,...);
            2).删除主键:
                alter table 表名 drop primary key;
            3).主键自动增长:一般主键是自增长的字段,不需要指定。
                实现添加自增长语句,主键字段后加auto_increment(只适用MySQL)


    2. 数据操作语言:DML(data Manipulation language),用来对数据库表中的记录进行更新.关键字:insert into, delete, update等(掌握).
        2.1 插入表记录:
            insert into 表 (列名1,列名2...) values (值1,值2...);
            insert into 表 values (值1,值2...); -- 当添加所有字段时
            注意:
                插入的数据应与字段的数据类型相同
                数据的大小应该在列的长度范围内
                数据位置必须与被加入列的排列位置相对应。
                除了数值类型外,其它的字段类型的值必须使用引号引起。
                如果要插入空值,可以不写字段,或者插入 null。        
                对于自动增长的列在操作时,直接插入null值即可。

        2.2 修改表记录:
            update 表名 set 字段名 = 值,字段名 = 值,...;
            update 表名 set 字段名 = 值,... where 条件;
            注意:
                列名的类型与修改的值要一致.
                修改值得时候不能超过最大长度.
                值如果是字符串或者日期需要加’’.

        2.3 删除记录:
            delete from 表名 [where 条件];
            delete table 表名;
            面试题:
                删除表中所有记录使用delete from 表名; 还是用truncate table 表名;
                删除方式:
                    delete 一条一条删除,不清空auto_increment记录数。
                    truncate 直接将表删除,重新建表,auto_increment将置为零,从新开始。

    3. 数据控制语言:DCL(Data control language),用来定义数据的访问权限和安全级别.及创建用户(了解).

    4. 数据查询语言:DQL(Data COntrol language),用来查询数据库中表的记录.关键字:select, from ,where , haveing等(掌握).
        4.1 查询指定字段信息:
            select 字段1,字段2... from 表名;
            查询所有字段:
            select * from 表名;
            注意:
                使用"*"在练习学习过程中可以使用,在实际开发中,不推荐使用.原因,要查询的字段信息不明确,若字段数量很多,会导致查询速度很慢。
        4.2 distinct 用于出去重复记录:
            select distinct 字段 from 表名;
        4.3 别名查询:
            select * from 表名 as 别名;或select * from 表名 别名;
            select 字段名 as 别名,... from 表名; as也可省略;
        4.4 在SQL语句操作中可以对列运算在现实
            select pname,price+10000 from prod;
        4.5 条件查询:select 字段 from where 条件;
            例:
                /*查询金额大于1000元的记录*/
                SELECT * FROM zhangwu  WHERE money > 1000;
                /*name不等于吃饭支出(不包含null值)*/
                SELECT * FROM zhangwu WHERE NAME <> '吃饭支出';
                /*支出等于:打麻将支出*/
                SELECT * FROM zhangwu WHERE NAME = '打麻将支出';

                /*查询所有金额在1000 -- 8000之间的所有数据*/
                SELECT * FROM zhangwu WHERE money BETWEEN 1000 AND 8000;-- 经常用于金额、日期的查询;

                /*查询id = 1,3,4,7*/
                SELECT * FROM zhangwu WHERE id = 1 OR id = 3 OR id = 4 OR id = 7;
                SELECT * FROM zhangwu WHERE id IN(1,3,4,7);

                /*查询name中包含:麻将字样的记录。通配符:%:通配0个或多个字符;_通配一个字符*/
                SELECT * FROM zhangwu WHERE NAME LIKE '%饭%';

                /*查询name为null的记录*/
                SELECT * FROM zhangwu WHERE NAME IS NULL;

                /*查询name为吃饭支出的,money大于1000元的记录*/
                SELECT * FROM zhangwu WHERE NAME = '吃饭支出' AND money > 1000;

                /*查询name为吃饭支出的,或者money 大于1000元的记录*/
                SELECT * FROM zhangwu WHERE NAME = '吃饭支出' OR money > 1000;

                /*查询money 不是1000元的*/
                SELECT * FROM zhangwu WHERE money <> 1000;
                SELECT * FROM zhangwu WHERE NOT money = 1000;







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2