找到关于数据库的6705 篇文章
6K+ 次浏览
我们也可以使用 ALTER 命令向现有表中添加多个列。其语法如下所示:语法ALTER TABLE 表名 ADD (列名1 数据类型, 列名2 数据类型,… 列名N 数据类型);示例在下面的示例中,使用 ALTER 命令,将 'Address'、'Phone' 和 'Email' 列添加到 'Student' 表中。mysql> ALTER TABLE Student ADD(Address VARCHAR(25), Phone INT, Email VARCHAR(20)); Query OK, 5 rows affected (0.38 sec) Records: 5 Duplicates: 0 Warnings: 0
160 次浏览
如果我们想在 MySQL 表中存储诸如 2 月 30 日之类的日期,则必须首先启用 ALLOW_INVALID_DATES 模式。例如,如果尝试在未启用 ALLOW_INVALID_DATES 模式的表中添加此类日期,则 MySQL 将返回如下错误:mysql> INSERT INTO date_testing(date) VALUES('2017-02-30'); ERROR 1292 (22007): Incorrect date value: '2017-02-30' for column 'Date' at row 1现在,我们需要启用 ALLOW_INVALID_DATES 模式,如下所示:mysql> SET sql_mode = 'ALLOW_INVALID_DATES'; Query OK, 0 rows affected (0.00 sec) mysql> INSERT INTO date_testing(date) VALUES('2017-02-30'); Query OK, 1 row affected (0.14 ... 阅读更多
802 次浏览
在 MySQL 中,我们可以通过将该列声明为 DEFAULT CURRENT_TIMESTAMP,在向其他列插入 NULL 值时自动将当前日期和时间插入到列中。在这种情况下,我们不能声明我们想要插入 NULL 值的列为 NOT NULL。mysql> CREATE TABLE Testing1(Name VARCHAR(20), RegStudent TIMESTAMP DEFAULT CURRENT_TIMESTAMP); Query OK, 0 rows affected (0.15 sec)以上查询将创建一个名为 'Testing1' 的表,其中包含名为 'Name'(未声明为 'NOT NULL')的列和名为 'RegDate' 的列,该列声明为 DEFAULT CURRENT_TIMESTAMP。现在,在向 Name 列插入 NULL 值时,将自动插入当前日期和时间 ... 阅读更多
2K+ 次浏览
要在 INSERT INTO 语句中不指定列名的情况下向列中插入值,必须提供与表中列数匹配的值数,同时还要注意该列的数据类型。示例在下面的示例中,我们在不指定列名的情况下插入了值。mysql> INSERT INTO student VALUES(100, 'Gaurav', 'Ph.D'); Query OK, 1 row affected (0.08 sec) mysql> SELECT * FROM student; +--------+--------+--------+ | RollNO | Name | Class | +--------+--------+--------+ | 100 | Gaurav | Ph.D | +--------+--------+--------+ ... 阅读更多
82 次浏览
这样做的原因是,MySQL 要求单元关键字为单数,而不管英语语法规则如何。如果我们尝试提供 7 days、2 hours 等间隔,则 MySQL 将产生如下语法错误:mysql> SELECT '2017-02-25 05:04:30' + INTERVAL 2 days; ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'days' at line 1
2K+ 次浏览
在 MySQL 中,我们可以通过将该列声明为 DEFAULT CURRENT_TIMESTAMP,在向其他列插入值时自动将当前日期和时间插入到列中。示例mysql> CREATE TABLE testing -> ( -> StudentName VARCHAR(20) NOT NULL, -> RegDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP -> ); Query OK, 0 rows affected (0.49 sec)以上查询将创建一个名为 'testing' 的表,其中包含名为 StudentName 的列和名为 'RegDate' 的列,该列声明为 DEFAULT CURRENT_TIMESTAMP。现在,在插入值(即 StudentName 列中的名称)时,当前日期和时间将自动插入到另一列中。mysql> INSERT ... 阅读更多
155 次浏览
当我们不提供列名和值的情况下运行 INSERT INTO 语句时,MySQL 将将 NULL 存储为表的列值。考虑下面给出的示例,我们使用以下查询创建了一个名为 'Student' 的表:mysql> CREATE TABLE Student(RollNO INT, Name VARCHAR(20), Class VARCHAR(15)); Query OK, 0 rows affected (0.17 sec)现在,我们可以运行 INSERT INTO 语句,而不提供列名和值,如下所示:mysql> INSERT INTO Student() VALUES(); Query OK, 1 row affected (0.02 sec)从下面的查询中我们可以看到,MySQL 将 NULL 存储为 ... 阅读更多
704 次浏览
我们可以使用 SHOW CREATE TABLE 查询查看现有表的 create table 语句。语法SHOW CREATE TABLE 表名;示例mysql> SHOW CREATE TABLE employee\G *************************** 1. row *************************** Table: employee Create Table: CREATE TABLE `employee` ( `Id` INT(11) DEFAULT NULL, `Name` VARCHAR(20) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec)上面的查询提供了 'Employee' 表的 CREATE TABLE 语句。
124 次浏览
如果我们想获取更多关于现有表列的详细信息,则需要使用 SHOW FULL COLUMNS 语句。考虑下面的示例,其中 SHOW FULL COLUMNS 语句已应用于 'Employee' 表,MySQL 返回的结果集包含一些额外的详细信息,例如关于表的列的排序规则、权限和注释:mysql> SHOW FULL COLUMNS FROM EMPLOYEE\G *************************** 1. row *************************** Field: Id Type: INT(11) Collation: NULL Null: YES Key: Default: NULL Extra: Privileges: select, insert, update, references ... 阅读更多