使用MySQL数据库

以下内容摘自百度
MySQL是一个关系型数据库管理系统由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。
MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。

数据库的基本操作

数据库的创建

CREATE DATABASE [IF NOT EXITS]database_name [CHARSET/CHARACTER SET +字符集] [COLLATE + 校对集];

  • 字符集是一套符和编码,数据按照指定的符和编码进行储存,常用UTF8和GBK。
  • 校对集就是字符集的排序规则。
  • 字符集和校对集有默认值:utf8,utf8_general_ci 

     数据库的删除

        DROP DATABASE database_name;

     数据库的查询

        SHOW DATABASES(LIKE 'pattern');
  • 使用like语句可以对数据库进行部分查询,LIKE 'xxx%'代表查询以xxx为开头的数据库,对于单个字符,则使用LIKE'x_语句'。所以如果要查询的数据库中含有“_”,就需要使用\_进行转义了。

    数据库的更新

     alter database + 数据库名称 + [库选项];
  • 数据库的名字是不可更改的,数据库的更新也仅限于对库选项的更新。

    数据表的创建

    CREATE TABLE [IF NOT EXISTS]table_name(column_name column_type);

CREATE TABLE IF NOT EXISTS `user`(
   `user_id` INT UNSIGNED AUTO_INCREMENT,
   `username` VARCHAR(100) NOT NULL,
   `password` VARCHAR(40) NOT NULL,
   `registerDate` DATE,
   PRIMARY KEY ( ` user_id ` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

  • 其中,我们用“,”隔开不同的属性。
  • 由于数据表需要保存在指定的数据库下,在使用CREATE TABLE语句必须先指定数据库,语句是 USE database_name.
  • 如果不想使输入的数据为NULL,就可以在column_type后使用NOT NULL,这样,如果输入NULL,就会报错了。
  • PRIMARY KEY(column_name)语句可以指定主键,设置时也可以有一个主键表,内有多个列,以","分隔
  • AUTO_INCREMENT设置自增属性,一般用于主键。
  • ENGINE设置储存引擎,CHARSET设置储存编码
  • 常用数据类型:(来自菜鸟教程的汇总表格): 

    数据类型 描述
    CHARACTER(n) 字符/字符串。固定长度 n。
    VARCHAR(n) 或
    CHARACTER VARYING(n)
    字符/字符串。可变长度。最大长度 n。
    BINARY(n) 二进制串。固定长度 n。
    BOOLEAN 存储 TRUE 或 FALSE 值
    VARBINARY(n) 或
    BINARY VARYING(n)
    二进制串。可变长度。最大长度 n。
    INTEGER(p) 整数值(没有小数点)。精度 p。
    SMALLINT 整数值(没有小数点)。精度 5。
    存储数据的范围是从-2的15次方(-32768)到2的15次方-1(32767),占用2个字节的储存空间。
    INTEGER 整数值(没有小数点)。精度 10。
    存储数据的范围是-2的31次方到2的31次方-1,占用4个字节的储存空间。
    BIGINT 整数值(没有小数点)。精度 19。
    DECIMAL(p,s) 精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数小数点后有 2 位数的数字。
    NUMERIC(p,s) 精确数值,精度 p,小数点后位数 s。(与 DECIMAL 相同)
    FLOAT(p) 近似数值,尾数精度 p。一个采用以 10 为基数的指数计数法的浮点数。该类型的 size 参数由一个指定最小精度的单一数字组成。
    REAL 近似数值,尾数精度 7。
    FLOAT 近似数值,尾数精度 16。
    DOUBLE PRECISION 近似数值,尾数精度 16。
    DATE 存储年、月、日的值。
    TIME 存储小时、分、秒的值。
    TIMESTAMP 存储年、月、日、小时、分、秒的值。
    INTERVAL 由一些整数字段组成,代表一段时间,取决于区间的类型。
    ARRAY 元素的固定长度的有序集合
    MULTISET 元素的可变长度的无序集合
    XML 存储 XML 数据

    数据表插入数据

        INSERT INTO table_name [(field1,field2,....,fieldn)] VALUES (value1,value2,....,valuen);

    数据表修改数据

        UPDATE table_name SET fieldx = valuex WHERE fieldy = valuey;

    数据表查询数据

        SELECT field1,field2..,fieldn FROM table_name WHERE field1 = value1,....field k = valuek;
  • 使用"SELECT *"则代表查询数据表中的所有列。
  • 这种查询语句可以查询数据的特定列,也可以查询某个具有特定属性值的成员。
  • 可以增加多个条件,使用AND,OR 语句

    数据表删除数据

        DELETE FROM table_name WHERE field = value;

        DELETE[*]FROM table_name;

  • 使用第一条语句,可以删除特定行。
  • 第二条语句,可以在保存table的同时删除表中的所有行。

    删除数据表

        DROP TABLE table_name;

    对结果集进行排序

        SELECT field1,..,fieldn FROM table_name ORDERD BY field1

  • 如果想要使用逆序排序,只需要在后加"DESC"即可。

    引用两个表

        SELECT field1,field2,..fieldn FROM table1,table2 WHERE table1.fieldx = table2.fieldy;

扫描二维码关注公众号,回复: 2468855 查看本文章

  • 语句中SELECT后FROM前的field不能有相同的。

    使用JOIN语句的多表查询

    INNER JOIN
        SELECT table1.field1,...,table2.fieldn FROM table1 INNER JOIN table2 ON table1.commonfield = table2.common field [ORDED BY fieldk];

  • 在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
    LEFT JOIN

        SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 

         ON table_name1.column_name=table_name2.column_name ; 

  • LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
  • 也就是说,会返回左表中的所有行,返回右表中符合要求的行。
    RIGHT JOIN

        与LEFT JOIN相反,不再赘述。

    FULL JOIN
        SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 

        ON table_name1.column_name=table_name2.column_name;

  •  连接表将包含的所有记录来自两个表,并使用NULL值作为两侧缺失匹配结果

猜你喜欢

转载自blog.csdn.net/weixin_41934068/article/details/80258541