mysql表的操作

mysql表的操作

表的创建命令需要:

  • 表的名称
  • 字段名称
  • 定义每个字段(类型、长度等)

具体语法

通用创建语法

CREATE TABLE table_name (column_name column_type);
复制代码

一个具体例子:

create table tutorials_tbl(
   tutorial_id INT NOT NULL AUTO_INCREMENT,
   tutorial_title VARCHAR(100) NOT NULL,
   tutorial_author VARCHAR(40) NOT NULL,
   submission_date DATE,
   PRIMARY KEY ( tutorial_id )
);
复制代码

一些常用约束,

NOT NULL ---非空

AUTU_INCREMENT ----自增(适用于int)

PRIMARY KEY ---主键

MySQL删除表

通用语法

DROP TABLE table_name ;
复制代码

MySQL插入数据

想要将数据插入到MySQL表,需要使用SQL INSERT INTO命令。 可以通过用mysql>提示符或通过使用像PHP脚本将任何数据插入到MySQL表。

通用语法

INSERT INTO table_name ( field1, field2,...fieldN )
                       VALUES
                       ( value1, value2,...valueN );
复制代码

select查询语句

通用语法:

SELECT field1, field2,...fieldN 
FROM table_name1, table_name2...
[WHERE Clause]
[OFFSET M ][LIMIT N]
复制代码

CAUTION:

  • 可以使用分隔的一个或多个逗号从多个表,以及使用WHERE子句包括各种条件,但WHERE子句是SELECT命令的可选部分
  • 可以在一个SELECT命令指定读取一个或多个字段
  • 可以指定星号(*)代替选择的字段。在这种情况下,将返回所有字段
  • 可以指定任意的条件在 WHERE 子句后面
  • 可以使用OFFSET指定一个偏移量,SELECT从那里开始返回记录。默认情况下 offset 的值是 0
  • 可以使用LIMIT属性限制返回的数量

where子句

通用语法:

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
复制代码
  • 可以使用逗号分隔一个或多个表,以及WHERE子句包括各种条件,但WHERE子句只是SELECT命令的可选部分
  • 可以指定使用任何条件在WHERE子句中
  • 可以指定一个以上的条件在使用AND或OR运算符中
  • WHERE子句可以用DELETE 或 UPDATE的SQL命令一起,也可以指定一个条件使用。

WHERE 子句就相当于一个if条件语句,用来比较定值的字段值在Mysql表中是否可用。如果从外部给定值等于mysql中的可用值,那么返回该行

从一个表中提取所选的行,尤其使用mysql联接的where子句是非常有用的。

操作符描述示例
=检查两个操作数的值是否相等,如果是,则条件变为真。(A = B) 不为 true
!=检查两个操作数的值是否相等,如果值不相等,则条件变为真。(A != B) 为 true.
>检查左操作数的值是否大于右操作数的值,如果是,则条件为真。(A > B) 不为 tru
<检查左操作数的值是否小于右操作数的值,如果是,则条件为真。(A < B) 为 true.
>=检查左操作数的值是否大于或等于右操作数的值,如果是,则条件为真。(A >= B) 不为 true.
<=检查左操作数的值是否小于或等于右操作数的值,如果是,则条件变为真。(A <= B) 为 true.

update查询

用来修改现有数据

通用语法:

php UPDATE table_name SET field1=new-value1, field2=new-value2[WHERE Clause]	
复制代码

CAUTION:

  • 完全可以更新一个或多个字段。
  • 可以指定使用任何条件在WHERE子句中。
  • 可以一次更新一个表中的值。

delete查询

通用语法:

DELETE FROM table_name [WHERE Clause]
复制代码

CAUTION:

  • 如果WHERE子句没有指定,则所有MySQL表中的记录将被删除。
  • 可以指定使用任何条件在WHERE子句中。
  • 可以一次删除一个表中的所有记录。

like子句

=号可以用来精确匹配,like可以用来进行模糊匹配

通用语法:

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'
复制代码

CAUTION:

  • 可以指定使用任何条件在WHERE子句中
  • 可以使用LIKE子句在WHERE子句中
  • 可以使用LIKE子句代替等号(=)
  • 当LIKE连同%符号使用,那么它就会像一个元字符的搜索
  • 可以指定一个以上的条件使用AND或OR运算符
  • WHERE... LIKE子句可以使用SQL命令的DELETE 或 UPDATE ,也可以指定一个条件

Order By子句

通用语法:

SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]
复制代码

CAUTION:

  • 可以排序返回所列出提供的任何字段的结果
  • 可以在多个字段排序结果
  • 可以使用关键字ASC或DESC来执行升序或降序排序。默认情况下,按升序排列
  • 可以使用WHERE ... LIKE子句以通用的方式放置条件

NULL值

不能直接=NULL来比较

  • IS NULL: 如果列的值为NULL,运算结果返回 true
  • IS NOT NULL: 如果列的值不为NULL,运算结果返回 true
  • <=>: 运算符比较值,(不同于=运算符)即使两个空值它返回 true

基本的正则表达式

连同REGEXP运算符使用

模式什么样的模式匹配
^开始的一个字符串
$结束的一个字符串
.任意单个字符
[...]方括号中列出的任何字符
[^...]任何字符方括号之间不会被列出
p1|p2|p3交替;匹配的任何模式 p1, p2, 或 p3
*前一个元素的零个或多个实例
+前面元素的一或多个实例
{n}前一个元素的n个实例
{m,n}前一个元素的 m 到 n 个实例

eg.

在这里,列出一些的理解。考虑有一个表称为 person_tbl,它是有一个 name 字段:

  • 查询查找所有以 “st” 开头的名字:
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
复制代码
  • 查询找到所有以 'ok' 结尾的名字
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
复制代码
  • 查询查找其中包含 'mar' 所有的名字
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
复制代码
  • 查询查找以元音 'ok' 结尾的所有名称
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';
复制代码

ALTER命令

当想改变表名,MySQL的ALTER命令非常有用, 在添加或删除任何表字段到现有列在表中。

让我们开始创建一个表为 testalter_tbl。

root@host# mysql -u root -p password;
Enter password:
mysql> use test;
Database changed
mysql> create table testalter_tbl
    -> (
    -> i INT,
    -> c CHAR(1)
    -> );
Query OK, 0 rows affected (0.05 sec)
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i     | int(11) | YES  |     | NULL    |       |
| c     | char(1) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
复制代码

删除,添加或重新定义列

假设想要从上面MySQL的表中删除一个现有列,那么使用ALTER命令以及DROP子句如下:

mysql> ALTER TABLE testalter_tbl  DROP i;
复制代码

如果在表中列是唯一的一个,那么DROP将无法正常工作。

要添加列,使用ADD并指定列定义。下面的语句将存储到 i 列:testalter_tbl:

mysql> ALTER TABLE testalter_tbl ADD i INT;
复制代码

发出这条语句后,testalter将包含当第一次创建表时的两列, 但不会有完全一样的结构。这是因为新的列被添加到表中时,默认排在最后一列。因此,即使 i 列原来是 mytbl 的第一列,但现在它是最后一列。

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)
复制代码

若要指示列在表中的特定位置,要么使用FIRST把它放在第一列或AFTER col_name 来指定新的列应放置col_name之后。 试试下面的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)它。

更改列定义或名称

要改变列的定义,使用MODIFY 或CHANGE 子句以及ALTER命令。 例如, 要改变字段 c 从 CHAR(1) 修改为 CHAR(10), 那么可以这样做:

mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
复制代码

CHANGE语法可能有点不同。CHANGE关键字后的名称是要修改的列,然后指定新的定义,其中包括新的名称。试试下面的例子:

mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
复制代码

如果现在使用CHANGE转换i列从BIGINT为INT,但不改变列名,该语句执行预期:

mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
复制代码

ALTER TABLE影响Null和缺省值属性

当使用 MODIFY 或 CHANGE修改列,还可以指定该列是否能为NULL值以及它的默认值。事实上,如果你不这样做,MySQL也会自动分配这些属性值。

下面是一个例子,这里 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)
复制代码

更改表类型

可以通过使用ALTER命令以及TYPE子句修改表的类型。试试下面的例子,将 testalter_tbl 的类型更改为MyISAM 表类型。

若想要知道一个表的当前类型,那么可使用 SHOW TABLE STATUS 语句。

mysql> ALTER TABLE testalter_tbl TYPE = 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: 2015-06-03 18:35:36
    Update_time: 2015-06-03 18:35: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;
复制代码

转载于:https://juejin.im/post/5bc018b46fb9a05d31553307

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值