以下内容摘自百度 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;

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

    使用JOIN语句的多表查询

    INNER JOIN
        SELECT table1.field1,...,table2.fieldn FROM table1 INNER JOIN table2 ON table1monfield = table2mon 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值作为两侧缺失匹配结果

更多推荐

使用MySQL数据库