数据库小结

1.SQL语句:结构化查询语言,分为5类

DDL 数据定义语言

DML 数据操控语言

TCL 事务控制语言

DQL 数据查询语言

DCL 数据控制语言


DDL:数据定义语言(用于建立,修改,删除数据库对象)

包括:CREATE:创建表或其他对象结构

   ALTER:修改表或其他对象的结构

   DROP:删除表或其他对象的结构

   TRUNCATE:删除表数据,保留表结构


DML:数据操作语言(用于改变数据表中的数据)

注:和事务相关,执行完后需要经过事务控制语句提交后才真正的将改变应用到数据库中。

INSERT:将数据插入到数据表中

UPDATE:更新数据表中已存在的数据

DELETE:删除数据表中的数据


TCL:事务控制语言(用来维护数据一致性的语句)

COMMIT:提交,确认已经进行的数据改变

ROLLBACK:回滚,取消已经进行的数据改变

SAVEPOINT:保存点,使当前的事务可以回退到指定的保存点,便于取消部分改变


DQL:数据查询语言(用来查询所需要的数据)

SELECT语句


DCL:数据控制语言(用于执行权限的授予和收回操作)

GRANT:授予,用于给用户或角色授予权限

REVOKE:用于收回用户或角色已有的权限

CREATE USER:创建用户


2.SQL语句命令规范

(1)系统命令大写,名称小写

(2)SQL语句用分号结束

(3)SQL语句支持折行,但不能在函数,名称或引号中折行

(4)名称不能用关键字和保留字,如果冲突,用反引号括起来


3.常用数据库命令

(1)查看数据库     SHOW DATABASES;

(2)创建数据库命令   CREATE DATABASE [IF NOT EXISTS]  数据库名  [[DEFAULT] CHARACTER SET [=] 字符集];

(3)查看数据库创建命令 SHOW CREATE DATABASE 数据库名;

(4)修改数据库的字符集 ALTER DATABASE 数据库名 [DEFAULT] CHARACTER SET [=] 字符集;

(5)删除数据库命令  DROP DATABASE [IF EXISTS] 数据库名;

(6)打开数据库  USE 数据库名;

(7)查看当前打开的数据库    SELECT DATABASE();


4.创建表结构

(1)查看表 SHOW TABLES;

(2)创建表结构

CREATE TABLE [IF NOT EXISTS]表名(
             字段名 数据类型 [字段属性|约束条件],
             字段名 数据类型 [字段属性|约束条件],
       ...
     )[ENGINE=InnoDB DEFAULT CHARSET=utf8];
说明:数据库的最小单元表,表由 行(记录Record)和列(字段Field)组成,一个表中最少有一个字段(列)可以有0记录(行)数据

(3)查看表结构
       a. DESC 表名;
       b. DESCRIBE 表名;

(4)查看创建表结构命令     SHOW CREATE TABLE 表名;


5. 对表中数据的添加和查询
      (1)添加(Insert)
        insert 表(字段1,字段2,...)
        value
        (值,值,...),(值,值,...)......; 
      (2)查询(Select)
        select * from 表名;查询所有的记录行
              说明:  * 代表所有字段


6. MySQL数据类型
     (1) 整型
       a.tinyint[(M)] unsigned|zerofill
                    说明:
                        大小:1个字节  2^8=8bit
                        范围: 
                        有符号位  -128 ~127
                        无符号位(unsigned):0~255 
     
       b.smallint[(M)] unsigned|zerofill
                    说明:
                        大小:2个字节  2^16
                        范围: 
                        有符号位  -32768 ~32767
                        无符号位(unsigned):0~65535 
       c.meduimint[(M)]unsigned|zerofill
                   说明:
                        大小:3个字节  2^24
                        范围: 
                        有符号位  -8388608 ~8388607
                        无符号位(unsigned):0~16777215
       d.int[(M)] unsigned|zerofill
                   说明:
                        大小:4个字节  2^32
                        范围: 
                        有符号位  -2147483648 ~2147483647
                        无符号位(unsigned):0~4294967295
       e.bigint[(M)] unsigned|zerofill
                 说明:
                        大小:8个字节  2^64
                        范围: 
                        有符号位 : -2^63 ~ 2^63
       
        说明: 
            字段属性
       a.unsigned 无符号位,正数
       b.zerofill:填补0,当现实的长度
                             小于指定的长度用0填补.
                            是zerofill的字段会自
                            动添加unsigned 
                            
     (2)浮点型
       a.float[(M,D)] unsigned|zerofill
                   说明:
                      大小:4个字节2^32
                      范围:单精度浮点  -3.40e38 ~ 3.40e38
                      精度:小数点 7位
       b.double[(M,D)]unsigned|zerofill
                   说明:
                      大小:8个字节2^64
                      范围:双精度浮点  -1.790e308 ~ 1.79e308
                      精度:小数点 14位
       c.decimal[(M,D)]unsigned|zerofill
                   说明:
                      定长浮点 
                      默认 M 是10位,D 是0
                      最大M是65位  D是10
            说明:
          a. float,double 存近似值,decimal
                       精确值 (货币)
          b. M指浮点数总的长度 ,D指小数位 
                      例如: float(7,2) unsigned
                              最大值  99999.99  
                              
      (3) 字符型
         a. char[(M)]:定长字符
                    说明:
                         大小:至多255字节(一个字符占一个字节)
                         特点:char(30)在MySQL中存储不足的用
                                 空格填补 例如: 'hello        '
         b. varchar[(M)]:变长字符
                    说明:
                        大小:至多65535字节 
                        特点:varchar(30)在MySQL中变长存储
                              例如:'hello'
         c. text: 至多 65535字节
         d. mediumtext:至多 16777215字节
         e. longtext:42亿左右字节
                              
             说明:
           a. char不省空间但效率高,
              varchar省空间但效率不高
                         例如: pwd char(32)
           b.varchar,char字符类型受下面的影响
             (a)varchar 至多65535字节
             (b)编码影响 
               gbk:一个字 2字节
               utf8:一个字3字节(至多21844字节)
             (c) 表结构中所有字段总数不能超过
                65535字节(21844字节)
           c. text  一般用在新闻内容字段上
     (4) 布尔类型
        a. tinyint(1)
        b. boolean
     (5) 时间日期类型
        a.time:3字节  HH:ii:ss
        b.date:4字节  YY-MM-DD
        c.year:1字节  
        d.datetime:8字节  YY-MM-DD  HH:ii:ss
        e.timestamp:时间戳类型 4字节
        说明:
               时间用整型 int 比较多。
    (6)枚举类型
       enum:至多 65535字节
            例如:  sex enum('男','女','保密');
            
  
   7.约束条件
     NOT NULL: 不能为空,必填 
     DEFAULT: 默认值
     [PRIMARY] KEY:主键,一个表中必须有
                           一个主键(编号一般是主键)
                           是主键的字段一定是NOT NULL
                           和 唯一性不重复
     UNIQUE [KEY]:唯一性不重复,一个表中
                             可以有多个唯一性字段
                (例如:username,email)
     AUTO_INCREMENT:自动增长,一般编号记录
                           自动加1,自动增长的字段一定是
                           主键
                           
   8.对表结构修改的操作
    (1) 添加新字段
     ALTER TABLE 表名
     ADD 字段名  数据类型 [字段属性|约束条件]
     [FIRST|AFTER 字段名], 
     ADD 字段名  数据类型 [字段属性|约束条件]
     [FIRST|AFTER 字段名],
     ......;
    (2) 删除字段
    ALTER TABLE 表名
    DROP 字段名,
    DROP 字段名,......;
    (3) 修改字段
    ALTER TABLE 表名
    MODIFY 字段名  数据类型 [字段属性|约束条件]
    [FIRST|AFTER 字段名];
    (4) 修改字段名 
    ALTER TABLE 表名
    CHANGE 旧字段名  新字段名  数据类型 [字段属性|约束条件]
    [FIRST|AFTER 字段名];
    
   9.帮助
    (1)? 关键字
    (2)help 关键字
    (3)\h 关键字
    
  10.对表中数据的增删改
     (1)增(Insert)
       a.不带字段的添加(从第一个字段到最后字段都要赋值)
        insert 表名
        value(值,值,值...);     
       b.带字段的添加
        insert 表名(字段1,字段2,字段3...)
        value
        (值,值,值,...),
        (值,值,值,...),......;
       c. insert ...set(只能添加一行记录)
        insert 表名 set 字段1=值,字段2=值,...;
        
     (2)删除(Delete)
       a. delete from 表名[where条件]
              说明:
           (a)如果没where条件,清空整个表数据(空表)
           (b)用delete 清空整个表数据,
              auto_increment不重置
       b. truncate 表名;  清空表数据
              说明:       
                   用truncate 清空整个表数据,
           auto_increment重置
     (3)改(Update)
       update 表名 set 字段名1=值,
             字段名1=值,...[where 条件]
            说明:
              如果 update语句没有 where 条件
              那修改对于字段中一列的值      


  11.对表中数据的查询
    (1) select * from 表名;
        说明:*代表所有字段 效率低
    (2) select 字段名1|expr|函数,
              字段名2,...from 表名;


一.对表中数据的查询
 1. select * from 表名;
 说明: *所有字段 ,效率低
 2. select 字段名1|expr|函数,
       字段名2|expr|函数...from 表名;      
 3.给字段起别名 
 select 字段1 [as] 别名, 字段2...from 表名;
 4.给表起别名
 select 字段1,字段2...from 表名 [as]别名;
 5.告诉字段来自哪个表
 select 表名|别名.字段1,字段2...from 表名 [as]别名;
 6.告诉表来自哪个数据库
 select 字段1,字段2 from 数据库名.表名;
 7.查询的完整格式
   select 字段1,字段2...from 表名
   [where 条件]
   [group by 字段]
   [having 条件]
   [order by 字段]
   [limit [$offset,]$length]
   
 8.[where 条件]:条件过滤
           条件
       (1) 比较运算符 > >= < <=
                      = != <>
       (2)[not] between ...and... (范围值)   
 
       (3) [not] in(值,值...)(不连续的某几个值)
       
       (4)逻辑运算符  and &&(与,并且), or ||(或者)
                    !(非)
       (5) [not] like '字符串%' 模糊查询
              关键符号
        _ :代表任意一个字符
        % : 代表任意字符(0个,1个,多个)
  
  9.[group by 字段] :分组
    (1)原理:将字段中相同的值分为一组,
                   并且显示一个结果(小编号),
                   一般字段显示分组的那个字段
                   或聚合函数
    (2)聚合函数
       count(字段):每组的个数
            count(*):包含null的记录
       avg(字段):每组的平均值
       max(字段):每组的最大值
       min(字段):每组的最小值
       sum(字段):每组的和
   10. [having 条件]:二次过滤
     说明:
       where条件:对字段的过滤
       having条件:对一个结果的过滤
                      一般结合group by 使用
     
   11. [order by 字段]:对字段排序
      说明:
       order by 字段  desc降序|asc升序;
   12.[limit [$offset,]$length]
      :获得前n条件记录
      说明:
      a.$offset:偏移量,起始编号,编号从0开始
      b.$length:获得记录长度
      c.Web 程序的分页原理
          偏移量 =(当前页-1)*记录长度
      $offset = ($curpage-1)*$length
      
二.多表联合查询
 1.格式
   select 字段1,字段1...from 表1
     连接类型  表2
   on 两表逻辑关系
     连接类型  表3
   on 两表逻辑关系;
 2.连接类型
    (1)内连接: inner join:查找两边中都符合的信息
 
    (2)外连接:
               左外连接:left [outer] join
                             左表的所有信息和右表中符合条件
                             的信息,当左表有信息右表没有用
                null填补 
               右外连接:right[outer] join
                             右表的所有信息和左表中符合条件
                             的信息,当右表有信息左表没有用
                null填补
                
三.约束条件(Contstaint)
  1.种类
    (1) NOT NULL 不能为空 必填
    (2) DEFAULT 默认值
    (3) [PRIMARY] KEY:主键
    (4) UNIQUE [KEY]: 唯一性
    (5) FOREIGN KEY 外键
  2. 写法:
    (1)列约束:在一个字段后面写的约束
             说明: NOT NULL, DEFAULT
                      必须是列约束
       CREATE TABLE test(
         id int unsigned PRIMARY KEY,
         name varchar(30) NOT NULL UNIQUE
       );
    (2)表约束:对一个字段或以上写约束
      CREATE TABLE test(
         id int unsigned,
         name varchar(30) NOT NULL,
         PRIMARY KEY(id),
         UNIQUE(name)
      );
    
   3.FOREIGN KEY 外键
     (1)FOREIGN KEY:一个表对多个表的
                                完整性和一致的约束。
     
     (2)格式
     CREATE TABLE cms_news(
        id int ...,
        aid,
        tid,
        FOREIGN KEY(外键列aid)
        REFERENCES 父表cms_admin(id),
        FOREIGN KEY(外键列tid)
        REFERENCES 父表cms_type(id)
        [UPDATE RESTRICT|CASCADE|SET NULL|NO ACTION]
        [DELETE RESTRICT|CASCADE|SET NULL|NO ACTION]
     );
         说明:
        a. 外键是表约束
        b. 子表中外键列一定要和父表对应的
                    字段数据类型一致 
                   例如: 如果整型,unsigned也一致
                   如果字符类型编码一致,长度可以不一样
        c. 
                  一定先有父表再有子表
                  一定先有父表记录再有子表记录
                  一定先删子表再删父表           
                  一定先删子表记录再删父表记录
        d.创建外键MySQL引擎必须是InnoDB
        e.如果没有写外键的名称,自动添加
                  索引外键名称
                  
        f.
          restrict 默认值|no action:
                  不能更新或删除父表中,子表中
                  有对应信息的记录
                  
          cascade 级联:父表更新或删除
                                子表对应也更新或删除
                                
          set null:父表更新或删除
                                  子表对应设置null值
                                  
    4.逻辑外键: 父表和子表一个表
           说明:实现无限级菜单分类


  
 
 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值