zoukankan      html  css  js  c++  java
  • 数据库入门及SQL基本语法

    1.创建数据库

    create database [if not exitsts] 数据库名;

    1.  分号表示SQL语句的结尾,不能缺少
    2.  SQL 对大小写不敏感!
    3.  []中的内容可有可无
    4.  IF NOT EXISTS意为:如果不存在

    使用数据库:use 数据库名

    删除数据库:drop database 数据库名

    注意:

    MySQL不会给任何提醒

    数据库一旦删掉,数据库中存储的所有数据也将一同被删除,且不能恢复

    查看数据库:SHOW   DATABASES;

    bbs:用户数据库(用户创建的数据库)

    其他是系统自带的数据库

    1、系统数据库

    2、样本和示例数据库

    information_schema   提供了访问数据库元数据(元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等)的方式

    MySQL     mysql的核心数据库.主要负责存储数据库的用户、权限设置、关键字等MySQL需要使用的控制和管理信息

    performance_schema    主要用于收集数据库服务器性能参数(系统数据库不可以随意操作

    Sys   Sys库的数据源自performance_schema(目标是把performance_schema的复杂度降低,让DBA更快的了解DB的运行情)

     

     

     

    数据库对象

    数据库对象是数据库里已定义的、用于存储或引用数据的对象

     

    定义:数据表是用来表示和储存数据对象之间关系的二维数组的集合

    表名:数据表的名字

    记录:记录是指对应于表中一行数据的一条完整信息

    字段:字段是记录中不可分割的、具有独立含义的最小数据单位

    学号

    姓名

    性别

    年龄

    出生日期

    123416

    张三

    19

    1990-4-5

    123417

    李四

    18

    1991-4-6

    123418

    李爽

    19

    1990-11-12

    MySQL数据类型是指字段中存储的数据的类型。

    MySQL常用数据类型:

    1. 数值类型
    2. 字符串类型
    3. 日期和时间类型

    注意:

    数据表每个字段都要指定数据类型

    数据类型决定了MySQL存储它们的方式和可选择运算的运算符。

    数值类型

    1.整数类型

    2.浮点数类型

     类型

    说明

    存储需求

    取值范围

    宽度M默认值

    tinyint[(M)]

    很小的整数

    1字节

    有符值: -27 ~ 27-1  

    无符号值:0 ~ 28-1                                

    4

    smallint[(M)]

    小的整数

    2字节

    有符值:  -215 ~ 215-1  

    无符号值:  0 ~ 216-1       

    6

    mediumint[(M)]

    中等大小整数

    3字节

    有符值:  -223 ~ 223-1  

    无符号值:  0 ~ 224-1       

    9

    int[(M)]

    标准整数

    4字节

    有符值: -231 ~ 231-1  

    无符号值:0 ~ 232-1       

    11

    bigint[(M)]

    大整数

    8字节

    有符值: -263 ~263-1

    无符号值:0 ~264-1       

    20

     

     

     

     类型

    说明

    取值范围

    存储需求

    Float[(M,N)]

    单精度浮点数

    ±1.1754351e -38

    4字节

    Double[(M,N)]

    双精度浮点数

    ±2.2250738585072014e -308

    8字节

    decimal[(M,N)]

    字符串形式的浮点数

    依赖M和N的值

    依赖M和N的值

    字符串类型

    文本字符串(char、varchar、tinytext、text、mediumtext、longtext)

     类型

    说明

    最大长度

    char[(M)]

    固定长字符串,检索快但费空间,

    255字节

    varchar(M)

    可变字符串

    65535字节

    text

    文本串(不能设置默认值)

    65535字节

    日期和时间类型

     类型

    说明

    取值范围

    DATE

    YYYY-MM-DD,日期格式

    1000-01-01~ 9999-12-31

    TIME

    Hh:mm:ss ,时间格式

    -838:59:59~838:59:59

    DATETIME

    YY-MM-DD hh:mm:ss 

    1000-01-01 00:00:00  

    9999-12-31 23:59:59

    TIMESTAMP

    YYYYMMDDhhmmss格式表示的时间戳

    197010101000000 ~2037年的某个时刻

    YEAR

    YYYY格式的年份值

    1901~2155

    特殊值

    NULL值

    理解为“没有值”或“未知值”

    不要用NULL进行算术运算,结果仍为NULL

    SQL语句

    定义:SQL是用于关系数据库管理和数据操作的标准计算机语言

    SQL分类:

    名称

    解释

    命令

    DDL

    (数据定义语言)

      定义和管理数据对象,如数据库,数据表等

    CREATE、DROP、ALTER

    DML

    (数据操作语言)

    用于操作数据库对象中所包含的数据

    INSERT、UPDATE、DELETE

    DQL

    (数据查询语言)

    用于查询数据库数据

    SELECT

    DCL

    (数据控制语言)

    用来管理数据库,包括管理权限及数据更改

    GRANT、REVOKE

    创建表语法(CREATE属于DDL)

     CREATE   TABLE [ IF NOT EXISTS ]    `表名`   (

      `字段名1`    数据类型 [属性],

      `字段名2`    数据类型 [属性],        … …   

     `字段名n`    数据类型 [属性]  ) 

    ) ;

     

    案例:

     

     

    存储引擎和数据表基本操作

    定义:存储引擎是给数据库提供数据存储、处理和保护等核心服务的程序(出于速度和安全性的要求,选取合理的存储引擎。)

    举例:

    设有张马虎,李小心两人,都是地铁口的自行车管理员.

    每天都有很多人来存取自行车,张马虎的管理方式是:来存自己存,不记录存的是什么车,取时交5毛,也不检查取的是否是自己的车.

    李小心呢,则在存取自己车时,记录存车人的特征与自行车的特征,当人来取钱车,还要小心核一下,人与车的特征是否对应

     

    思考:

    张马虎和李小心谁对业务的处理速度更高?

    二者谁对自行车管理更安全?

     

    数据库对同样的数据,有着不同的存储方式和管理方式在mysql中,称为存储引擎

     

    分类:

    Mysql存储引擎特点:

    MySQL的核心就是存储引擎。

    MySQL中不同表可以指定不同存储引擎。

    不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。

    功能

    InnoDB

    MyISAM

    支持事务和行级锁

    YES

    NO

    支持外键

    YES

    NO

    支持全文索引

    NO

    YES

    存储位置

    非内存

    非内存

    注意:MySQL5.5后的默认存储引擎为InnoDB

     

    扩展:

     

    存储引擎的选择:

    文章,新闻等安全性要求不高的,选myisam

    订单,资金,账单,火车票等对安全性要求高的,可以选用innodb

    对于临时中转表,可以用memory型 ,速度最快

     

    字符集:

    目的:考虑多语言与移植的问题,选取合理的字符集.

    一句话说字符集,字符集就是一个字符<->二进制字节的映射表

    字符集是一套符号和编码的规则,不论是在 oracle 数据库还是在 mysql 数据库,都存在字符集的选择问题,而且如果在数据库创建阶段没有正确选择字符集,那么可能在后期需要更换字符集,而字符集的更换是代价比较高的操作,也存在一定的风险,所以,我们推荐在应用开始阶段,就按照需求正确的选择合适的字符集,避免后期不必要的调整。

     

    字符集的选择:

    1:节省空间

    建议在能够完全满足应用的前提下,尽量使用小的字符集。

    因为更小的字符集意味着能够节省空间、

    减少网络传输字节数,同时由于存储空间的较小间接的提高了系统的性能。

    有很多字符集可以保存汉字,比如 utf8、gb2312、gbk、gb18030 等等,

    但是常用的是gb2312 和 gbk。

    2:兼容性

    因为 gb2312 字库比 gbk 字库小,有些偏僻字(例如:洺)不能保存,因此

    在选择字符集的时候一定要权衡这些偏僻字在应用出现的几率以及造成的影响,

     

    3:在互联网上,国际化的趋势不可避免,且存储空间已经越来海量化,

    因此推荐用utf8,如果开发内网系统,如内部OA等,可以考虑GBK。

     

    设置存储引擎和指定数据表编码格式

     CREATE   TABLE [ IF NOT EXISTS ]    `表名`   (

      `字段名1`    数据类型 [属性],

      `字段名2`    数据类型 [属性],       

        … …   

     `字段名n`    数据类型 [属性]  

    ) [ 存储引擎 ] [ 表字符集 ];

     

    案例:

    CREATE TABLE  test(

    id int

    ) ENGINE=MyISAM

    CREATE TABLE  test(

    id int

    ) ENGINE=InnoDB,CHARSET=utf8

        

    加入注释案例:

    CREATE   TABLE  student  (

     s_id   int (5)  UNSIGNED  COMMENT   ‘学号’

     #省略其他字段

    ) ENGINE=InnoDB,CHARSET=utf8,COMMENT ‘学生表’;

       

    查看数据库中的表  show tables;

    显示表结构   DESC 表名

    删除表语法(DROP属于DDL)   DROP  TABLE  [ IF  EXISTS ]   表名

    注意:

    IF EXISTS 为可选,判断是否存在该数据表

    如删除不存在的数据表会抛出错误

    千万不能删除系统数据库中的表

     

    小结:

    mysql入门

    1.数据库是持久存储有组织可共享数据的容器

     

    2.数据库管理系统是操作和管理数据库的软件系统

     

    3.关系(型)数据库是以关系模型为基础的、由多张能互相联接的二维表组成的数据库

     

    4.MySQL是MySQL AB公司开发的,开源、免费的关系型数据库管理系统

    5.表是用来表示和储存数据对象之间关系的二维数组的集合

     

    6.存储引擎是给数据库提供数据存储、处理和保护等核心服务的程序

     

    7.SQL语言是一种用于查询和修改关系数据库的语言

     

    数据库的基本操作:

    创建数据库   -----

         CREATE  DATABASE    [IF NOT  EXISTS]   数据库名;

    删除数据库   

         DORP DATABASE  [IF EXISTS] 数据库名;

    查看数据库信息   

         SHOW   DATABASES;

    查看数据库中表

          SHOW TABLES;

    使用数据库   

         USE  数据库名;

     

    表的基本操作

    创建表 -------

     

          CREATE   TABLE   `表名`   (字段名    数据类型 [属性]… …  ) ;

    查看表结构   

          DESC 表名

    删除表

          DROP  TABLE  [ IF  EXISTS ]   表名;

     

     

  • 相关阅读:
    github添加ssh
    包围盒的计算以及物体移动到世界坐标中心
    123
    mysql
    建站步骤
    深度遍历和广度遍历
    Js特殊字符转义之htmlEscape()方法
    参数命名风格转换
    http 206
    js 实现快速排序
  • 原文地址:https://www.cnblogs.com/wendyluo/p/13358031.html
Copyright © 2011-2022 走看看