zoukankan      html  css  js  c++  java
  • mySql基础

     
    sudo find / -name php.ini
    如果没找到
    cd /Private/etc
    可以找到php.ini.default
    cp php.ini.default php.ini
    复制一份
     
    2017-03-23T03:03:00.557711Z 1 [Note] A temporary password is generated for root@localhost: nRWip6C+C3q&
     
    If you lose this password, please consult the section How to Reset the Root Password in the MySQL reference manual.
     
    现在你就可以通过mysql -uroot -p登录mysql了,会让你输入密码,就是pic3上的>fj...
    登录成功后,你可以通过下面的命令修改密码
    SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
     mysqladmin -u root -p create RUNOOB
    以上命令执行成功后会创建 MySQL 数据库 RUNOOB。
    [root@host]# mysqladmin -u root -p drop RUNOOB
    Enter password:******
    执行以上删除数据库命令后,会出现一个提示框,来确认是否真的删除数据库:
    create database db;
    [root@host]# mysql -u root -p
    Enter password:******
    mysql> use RUNOOB;
    Database changed
    mysql>
    执行以上命令后,你就已经成功选择了 RUNOOB 数据库,在后续的操作中都会在 RUNOOB 数据库中执行。
    注意:所有的数据库名,表名,表字段都是区分大小写的。所以你在使用SQL命令时需要输入正确的名称。
    以下为创建数据表 runoob_tbl 实例:
    root@host# mysql -u root -p
    Enter password:*******
    mysql> use RUNOOB;
    Database changed
    mysql> CREATE TABLE runoob_tbl(
    -> runoob_id INT NOT NULL AUTO_INCREMENT,
    -> runoob_title VARCHAR(100) NOT NULL,
    -> runoob_author VARCHAR(40) NOT NULL,
    -> submission_date DATE,
    -> PRIMARY KEY ( runoob_id )
    -> );
    Query OK, 0 rows affected (0.16 sec)
    mysql>
    注意:MySQL命令终止符为分号 (;) 。
    以下实例删除了数据表runoob_tbl:
    root@host# mysql -u root -p
    Enter password:*******
    mysql> use RUNOOB;
    Database changed
    mysql> DROP TABLE runoob_tbl
    Query OK, 0 rows affected (0.8 sec)
    mysql>
    将想 runoob_tbl 表插入三条数据:
    root@host# mysql -u root -p password;
    Enter password:*******
    mysql> use RUNOOB;
    Database changed
    mysql> INSERT INTO runoob_tbl
    ->(runoob_title, runoob_author, submission_date)
    ->VALUES
    ->("Learn PHP", "John Poul", NOW());
    Query OK, 1 row affected (0.01 sec)
    mysql> INSERT INTO runoob_tbl
    ->(runoob_title, runoob_author, submission_date)
    ->VALUES
    ->("Learn MySQL", "Abdul S", NOW());
    Query OK, 1 row affected (0.01 sec)
    mysql> INSERT INTO runoob_tbl
    ->(runoob_title, runoob_author, submission_date)
    ->VALUES
    ->("JAVA Tutorial", "Sanjay", '2007-05-06');
    Query OK, 1 row affected (0.01 sec)
    mysql>
    注意: 使用箭头标记(->)不是SQL语句的一部分,它仅仅表示一个新行,如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写SQL语句,SQL语句的命令结束符为分号(;)。

    MySQL 查询数据

    MySQL 数据库使用SQL SELECT语句来查询数据。
    你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据。

    语法

    以下为在MySQL数据库中查询数据通用的 SELECT 语法:
    SELECT column_name,column_name
    FROM table_name
    [WHERE Clause]
    [OFFSET M ][LIMIT N]
    查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
    SELECT 命令可以读取一条或者多条记录。
    你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
    你可以使用 WHERE 语句来包含任何条件。
    你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。
    你可以使用 LIMIT 属性来设定返回的记录数。

    通过命令提示符获取数据

    以下实例我们将通过 SQL SELECT 命令来获取 MySQL 数据表 runoob_tbl 的数据:

    语法

    以下是 UPDATE 命令修改 MySQL 数据表数据的通用SQL语法:
    UPDATE table_name SET field1=new-value1, field2=new-value2
    [WHERE Clause]
    你可以同时更新一个或多个字段。
    你可以在 WHERE 子句中指定任何条件。
    你可以在一个单独表中同时更新数据。
    当你需要更新数据表中指定行的数据时 WHERE 子句是非常有用的。
    通过命令提示符更新数据
    以下我们将在 SQL UPDATE 命令使用 WHERE子句来更新runoob_tbl表中指定的数据:

    实例

    以下实例将更新数据表中 runoob_id 为 3 的 runoob_title 字段值:
    root@host# mysql -u root -p password;
    Enter password:*******
    mysql> use RUNOOB;
    Database changed
    mysql> UPDATE runoob_tbl
    -> SET runoob_title='Learning JAVA'
    -> WHERE runoob_id=3;
    Query OK, 1 row affected (0.04 sec)
    Rows matched: 1 Changed: 1 Warnings: 0

    mysql>

    从命令行中删除数据

    这里我们将在 SQL DELETE 命令中使用 WHERE 子句来删除MySQL数据表runoob_tbl所选的数据。

    实例

    以下实例将删除 runoob_tbl 表中 runoob_id 为3 的记录:
    root@host# mysql -u root -p password;
    Enter password:*******
    mysql> use RUNOOB;
    Database changed
    mysql> DELETE FROM runoob_tbl WHERE runoob_id=3;
    Query OK, 1 row affected (0.23 sec)

    mysql>
    使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
    你可以添加 WHERE...LIKE 子句来设置条件。

    在命令提示符中使用 ORDER BY 子句

    以下将在 SQL SELECT 语句中使用 ORDER BY 子句来读取MySQL 数据表 runoob_tbl 中的数据:

    实例

    尝试以下实例,结果将按升序排列
    root@host# mysql -u root -p password;
    Enter password:*******
    mysql> use RUNOOB;
    Database changed
    mysql> SELECT * from runoob_tbl ORDER BY runoob_author ASC;
    +-----------+---------------+---------------+-----------------+
    | runoob_id | runoob_title | runoob_author | submission_date |
    +-----------+---------------+---------------+-----------------+
    | 2 | Learn MySQL | Abdul S | 2007-05-24 |
    | 1 | Learn PHP | John Poul | 2007-05-24 |
    | 3 | JAVA Tutorial | Sanjay | 2007-05-06 |
    +-----------+---------------+---------------+-----------------+
    3 rows in set (0.00 sec)

    mysql> SELECT * from runoob_tbl ORDER BY runoob_author DESC;
    +-----------+---------------+---------------+-----------------+
    | runoob_id | runoob_title | runoob_author | submission_date |
    +-----------+---------------+---------------+-----------------+
    | 3 | JAVA Tutorial | Sanjay | 2007-05-06 |
    | 1 | Learn PHP | John Poul | 2007-05-24 |
    | 2 | Learn MySQL | Abdul S | 2007-05-24 |
    +-----------+---------------+---------------+-----------------+
    3 rows in set (0.00 sec)

    mysql>
    接下来我们使用 GROUP BY 语句 将数据表按名字进行分组,并统计每个人有多少条记录:
    mysql> SELECT name, COUNT(*) FROM   employee_tbl GROUP BY name;
    +--------+----------+
    | name | COUNT(*) |
    +--------+----------+
    | 小丽 | 1 |
    | 小明 | 3 |
    | 小王 | 2 |
    +--------+----------+
    3 rows in set (0.01 sec)
    使用MySQL的INNER JOIN(也可以省略 INNER 使用 JOIN,效果一样)来连接以上两张表来读取runoob_tbl表中所有runoob_author字段在tcount_tbl表对应的runoob_count字段值:
    mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
    +-----------+---------------+--------------+
    | runoob_id | runoob_author | runoob_count |
    +-----------+---------------+--------------+
    | 1 | John Poul | 1 |
    | 3 | Sanjay | 1 |
    +-----------+---------------+--------------+
    2 rows in set (0.00 sec)
    以上 SQL 语句等价于:
    mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b WHERE a.runoob_author = b.runoob_author;
    +-------------+-----------------+----------------+
    | runoob_id | runoob_author | runoob_count |
    +-------------+-----------------+----------------+
    | 1 | John Poul | 1 |
    | 3 | Sanjay | 1 |
    +-------------+-----------------+----------------+
    2 rows in set (0.01 sec)
    mysql>
    查找数据表中 runoob_count 列是否为 NULL,必须使用IS NULL和IS NOT NULL,如下实例:
    mysql> SELECT * FROM tcount_tbl 
    -> WHERE runoob_count IS NULL;
    +-----------------+----------------+
    | runoob_author | runoob_count |
    +-----------------+----------------+
    | mahnaz | NULL |
    | Jen | NULL |
    +-----------------+----------------+
    2 rows in set (0.00 sec)
    mysql> SELECT * from tcount_tbl
    -> WHERE runoob_count IS NOT NULL;
    +-----------------+----------------+
    | runoob_author | runoob_count |
    +-----------------+----------------+
    | mahran | 20 |
    | Gill | 20 |
    +-----------------+----------------+
    2 rows in set (0.00 sec)

    删除,添加或修改表字段

    如下命令使用了 ALTER 命令及 DROP 子句来删除以上创建表的 i 字段:
    mysql> ALTER TABLE testalter_tbl  DROP i;
    如果数据表中只剩余一个字段则无法使用DROP来删除字段。
    MySQL 中使用 ADD 子句来想数据表中添加列,如下实例在表 testalter_tbl 中添加 i 字段,并定义数据类型:
    mysql> ALTER TABLE testalter_tbl ADD i INT;
    你需要指定新增字段的位置,可以使用MySQL提供的关键字 FIRST (设定位第一列), AFTER 字段名(设定位于某个字段之后)。
    尝试以下 ALTER TABLE 语句, 在执行成功后,使用 SHOW COLUMNS 查看表结构的变化:
    ALTER TABLE testalter_tbl DROP i;
    ALTER TABLE testalter_tbl ADD i INT FIRST;
    ALTER TABLE testalter_tbl DROP i;
    ALTER TABLE testalter_tbl ADD i INT AFTER c;
    FIRST 和 AFTER 关键字只占用于 ADD 子句,所以如果你想重置数据表字段的位置就需要先使用 DROP 删除字段然后使用 ADD 来添加字段并设置位置。

    修改字段类型及名称

    如果需要修改字段类型及名称, 你可以在ALTER命令中使用 MODIFY 或 CHANGE 子句 。
    例如,把字段 c 的类型从 CHAR(1) 改为 CHAR(10),可以执行以下命令:
    mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);

    ALTER TABLE 对 Null 值和默认值的影响

    当你修改字段时,你可以指定是否包含只或者是否设置默认值。
    以下实例,指定字段 j 为 NOT NULL 且默认值为100 。
    mysql> ALTER TABLE testalter_tbl 
    -> MODIFY j BIGINT NOT NULL DEFAULT 100;
    如果你不设置默认值,MySQL会自动设置该字段默认为 NULL。

    修改字段默认值

    你可以使用 ALTER 来修改字段的默认值,尝试以下实例:
    mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
    mysql> SHOW COLUMNS FROM testalter_tbl;
    +-------+---------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+-------+
    | c | char(1) | YES | | NULL | |
    | i | int(11) | YES | | 1000 | |
    +-------+---------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    你也可以使用 ALTER 命令及 DROP子句来删除字段的默认值,如下实例:
    mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
    mysql> SHOW COLUMNS FROM testalter_tbl;
    +-------+---------+------+-----+---------+-------+
    | Field | Type | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+-------+
    | c | char(1) | YES | | NULL | |
    | i | int(11) | YES | | NULL | |
    +-------+---------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    Changing a Table Type:
    修改数据表类型,可以使用 ALTER 命令及 TYPE 子句来完成。尝试以下实例,我们将表 testalter_tbl 的类型修改为 MYISAM :
    注意:查看数据表类型可以使用 SHOW TABLE STATUS 语句。
    mysql> ALTER TABLE testalter_tbl ENGINE = MYISAM;;
    mysql> SHOW TABLE STATUS LIKE 'testalter_tbl'G
    *************************** 1. row ****************
    Name: testalter_tbl
    Type: MyISAM
    Row_format: Fixed
    Rows: 0
    Avg_row_length: 0
    Data_length: 0
    Max_data_length: 25769803775
    Index_length: 1024
    Data_free: 0
    Auto_increment: NULL
    Create_time: 2007-06-03 08:04:36
    Update_time: 2007-06-03 08:04:36
    Check_time: NULL
    Create_options:
    Comment:
    1 row in set (0.00 sec)

    修改表名

    如果需要修改数据表的名称,可以在 ALTER TABLE 语句中使用 RENAME 子句来实现。
    尝试以下实例将数据表 testalter_tbl 重命名为 alter_tbl:
    mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

    使用 ALTER 命令添加和删除主键

    主键只能作用于一个列上,添加主键索引时,你需要确保该主键默认不为空(NOT NULL)。实例如下:
    mysql> ALTER TABLE testalter_tbl MODIFY i INT NOT NULL;
    mysql> ALTER TABLE testalter_tbl ADD PRIMARY KEY (i);

    MySQL 临时表

    MySQL 临时表在我们需要保存一些临时数据时是非常有用的。临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间。
    临时表在MySQL 3.23版本中添加,如果你的MySQL版本低于 3.23版本就无法使用MySQL的临时表。不过现在一般很少有再使用这么低版本的MySQL数据库服务了。
    MySQL临时表只在当前连接可见,如果你使用PHP脚本来创建MySQL临时表,那没当PHP脚本执行完成后,该临时表也会自动销毁。
    如果你使用了其他MySQL客户端程序连接MySQL数据库服务器来创建临时表,那么只有在关闭客户端程序时才会销毁临时表,当然你也可以手动销毁。

    实例

    以下展示了使用MySQL 临时表的简单实例,以下的SQL代码可以适用于PHP脚本的mysql_query()函数。
    mysql> CREATE TEMPORARY TABLE SalesSummary (
    -> product_name VARCHAR(50) NOT NULL
    -> , total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00
    -> , avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00
    -> , total_units_sold INT UNSIGNED NOT NULL DEFAULT 0
    );
  • 相关阅读:
    常用的dos命令
    java环境的配置
    javascript面向对象个人理解
    js如何获取样式?
    springboot新建项目遇到Whitelabel Error Page
    CSS 隐藏页面元素的 几 种方法总结
    优美动听的葫芦丝名曲
    大前端资料合集
    CSS实现背景透明,文字不透明(兼容所有浏览器)
    文字上下无缝滚动效果
  • 原文地址:https://www.cnblogs.com/tian-sun/p/7405449.html
Copyright © 2011-2022 走看看