找到 4219 篇文章 关于 MySQLi
79 次查看
我们可以按如下方式计算日期:mysql> SET @year=2017, @week=15, @day=4; Query OK, 0 rows affected (0.00 sec)上述查询将分别将值 '2017'、'15'、'4' 传递给 'year'、'week' 和 'day' 变量。然后在下面查询中应用公式后,我们可以得到日期。mysql> SELECT Str_To_Date( Concat(@year,'-',@week,'-',If(@day=7,0,@day) ), '%Y-%U-%w' ) AS Date; +--------------+ | Date | +--------------+ | 2017-04-13 | +--------------+ 1 row in set (0.00 sec)
75 次查看
众所周知,MySQL 支持用于参照完整性的外键,但它不支持 CHECK 约束。但是,我们可以使用触发器来模拟它们。可以通过以下示例来说明:示例假设我们有一个名为 'car1' 的表,它可以具有固定的语法注册号,例如两个字母、一个破折号、三个数字、一个破折号、两个字母,如下所示:mysql> Create table car1 (number char(9)); Query OK, 0 rows affected (0.32 sec) mysql> Insert into car1 values('AB-235-YZ'); Query OK, 1 row affected (0.10 sec)上述值是有效的,但是什么... 阅读更多
285 次查看
我们可以按如下方式根据出生日期计算年龄(以年为单位):mysql> SET @dob = '1984-01-17'; Query OK, 0 rows affected (0.00 sec)上述查询将值 '1984-01-17' 传递给 'dob' 变量。然后在下面查询中应用公式后,我们可以得到年龄(以年为单位)。mysql> Select Date_format( From_Days( To_Days(Curdate()) - To_Days(@dob) ), '%Y' ) + 0 AS ‘Age in years; +---------------+ | ‘Age in years’| +---------------+ | 33 | +---------------+ 1 row in set (0.00 sec)
273 次查看
启用 SQL 模式为 ALLOW_INVALID_DATES 后,MySQL 也将能够在表中存储无效日期。以下示例说明了这一点:mysql> Insert into order1234(ProductName, Quantity, Orderdate) values('B',500,'2015-11-31'); Query OK, 1 row affected (0.06 sec) mysql> Select * from order1234; +-------------+----------+--------------+ | ProductName | Quantity | OrderDate | +-------------+----------+--------------+ | A | 500 | 0000-00-00 | | B | 500 | 2015-11-31 | +-------------+----------+--------------+ 2 rows in set (0.00 sec)我们可以看到 MySQL 也将无效日期插入表中。
367 次查看
MySQL 在遇到超出范围或无效日期时的响应将取决于 SQL 模式。如果我们启用了 ALLOW_INVALID_DATES 模式,则 MySQL 会将超出范围的值转换为全零(即 '0000:00:00 00:00:00'),并在不产生任何错误或警告的情况下将它们存储在表中。例如,我们可以按如下方式更改 SQL 模式,然后插入超出范围的值:mysql> set sql_mode = 'ALLOW_INVALID_DATES'; Query OK, 0 rows affected (0.00 sec) mysql> Insert into order1234(productname, quantity, orderdate) values('A', 500, '999-05-100'); Query OK, 1 row affected, 1 warning (0.13 sec) mysql> Select * from order1234; ... 阅读更多
166 次查看
众所周知,MySQL 支持用于参照完整性的外键,但它不支持 CHECK 约束。但是,我们可以使用触发器来模拟它们。可以通过以下示例来说明:示例假设我们有一个名为 'car' 的表,它可以具有固定的语法注册号,例如两个字母、一个破折号、三个数字、一个破折号、两个字母,如下所示:mysql> Create table car (number char(9)); Query OK, 0 rows affected (0.32 sec) mysql> Insert into car values('AB-235-YZ'); Query OK, 1 row affected (0.10 sec)上述值是有效的,但是什么... 阅读更多
4K+ 次查看
MySQL 允许我们在表中的多个列上添加 FOREIGN KEY 约束。条件是子表中的每个外键必须引用不同的父表。示例假设我们有一个名为 'customer2' 的表,它在字段 'cust_unq_id' 上具有 PRIMARY KEY 约束,如下所示:mysql> describe customer2; +-------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+-------------+------+-----+---------+-------+ | cust_id | int(11) | YES | | NULL | | | First_name | varchar(20) | ... 阅读更多
10K+ 次查看
这两种数据类型都以“YYYY-MM-DD HH:MM:SS”格式存储数据,并且包含日期和时间。尽管有这些相似之处,但它们存在以下差异:范围 - Datetime 数据类型支持介于 1000-01-01 00:00:00 和 9999-12-31 23:59:59 之间的日期和时间。但是 timestamp 数据类型支持介于 '1970-01-01 00:00:01' 和 '2038-01-19 08:44:07' 之间的日期和时间。大小 - Datetime 需要 5 个字节,加上 3 个字节用于存储小数秒数据。另一方面,timestamp 数据类型需要 4 个字节,加上 3 个字节用于存储小数秒数据... 阅读更多
134 次查看
AUTO_INCREMENT 意味着该列将自动获取值。为了说明这一点,我们创建了一个名为 'employees' 的表,如下所示: mysql> Show Create Table employees\G *************************** 1. row *************************** Table: employees Create Table: CREATE TABLE `employees` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Name` varchar(35) DEFAULT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 1 row in set (0.00 sec)从上述结果集中,我们可以看到列 id 被赋予了 auto-increment 选项。现在,当我们在 Name 中插入值时... 阅读更多
888 次查看
假设我们有一个名为“Order123”的表,其中包含ProductName、Quantity和OrderDate列,如下所示:
mysql> Select * from Order123;
+-------------+----------+------------+
| ProductName | Quantity | OrderDate |
+-------------+----------+------------+
| A | 100 | 2017-05-25 |
| B | 105 | 2017-05-25 |
| C | 55 | 2017-05-25 |
| D | 250 | 2017-05-26 |
| E | 500 | 2017-05-26 |
| ... 阅读更多
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP