`

第一部分 INSERT SELECT UPDATE DELETE

    博客分类:
  • SQL
阅读更多

数据库是保存表和其他相关SQL结构的容器。

 

一、创建和使用数据库

CREATE DATABASE list;   # 创建数据库list
USE list;               # 使用数据库list

 二、创建表

CREATE TABLE my_contacts                  # 创建表联系人
   (
    name VARCHAR(30) NOT NULL,
    gender CHAR(1) NOT NULL DEFAULT 'M',  #'M'或'F'
    birthday DATE,                        # 1980-09-15
    phone VARCHAR(11) NOT NULL,          
    information BLOB
   );

 显示表的结构: DESC my_contacts;

删除表: DROP TABLE my_contacts;

 

MySQL支持的数据类型有:文本、数字和日期/时间类型。

 

Text类型

描述

CHAR(size)

固定长度的字符串(字母、数字特殊字符)。最多 255 个字符。

VARCHAR(size)

可变长度的字符串。括号内为最大长度。如果大于255,转为 TEXT 类型。

TINYTEXT

存放最大长度为 255 个字符的字符串。

TEXT

存放最大长度为 65,535 个字符的字符串。

BLOB

用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。

MEDIUMTEXT

存放最大长度为 16,777,215 个字符的字符串。

MEDIUMBLOB

用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。

LONGTEXT

存放最大长度为 4,294,967,295 个字符的字符串。

LONGBLOB

用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。

ENUM(x,y,z,etc.)

允许你输入可能值的列表。不存在插入的值,则插入空值最多 65535 个值。

SET

与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储一个以上的值。

<!--EndFragment-->

 

Number类型

描述

TINYINT(size)

-128 127常规。0255 无符号*。在括号中规定最大位数。

SMALLINT(size)

-3276832767 常规。65535无符号*。在括号中规定最大位数。

MEDIUMINT(size)

-83886088388607普通。0to16777215无符号*。在括号中规定最大位数。

INT(size)

-21474836482147483647常规。04294967295无符号*

BIGINT(size)

-92233720368547758089223372036854775807常规。

018446744073709551615无符号*。在括号中规定最大位数。

FLOAT(size,d)

带有浮动小数点的小数字。size最大位数。d是小数的最大位数。

DOUBLE(size,d)

带有浮动小数点的大数字。size最大位数。d是小数的最大位数。

DECIMAL(size,d)

作为字符串存储的 DOUBLE 类型,允许固定的小数点。

<!--EndFragment-->

这些整数类型拥有额外的选项 UNSIGNED。如果添加UNSIGNED属性,那么范围将从 开始。

<!--EndFragment-->

Date类型

描述

DATE()

日期。格式:YYYY-MM-DD从 '1000-01-01' 到 '9999-12-31'

DATETIME()

*日期时间。格式:YYYY-MM-DD HH:MM:SS '1000-01-01 00:00:00' 到 '9999-12-31 23:59:59'

TIMESTAMP()

*时间戳。TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式:YYYY-MM-DD HH:MM:SS从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC

TIME()

时间。格式:HH:MM:SS 从 '-838:59:59' 到 '838:59:59'

YEAR()

位或 位格式的年。1901 到 215570 到 69,表示1970 到 2069

<!--EndFragment-->

即便 DATETIME 和 TIMESTAMP 返回相同的格式,它们的工作方式很不同。在 INSERT 或 UPDATE 查询中,TIMESTAMP 自动把自身设置为当前的日期和时间。TIMESTAMP 也接受不同的格式,比如 YYYYMMDDHHMMSSYYMMDDHHMMSSYYYYMMDD 或 YYMMDD

 

三、INSERT语句

INSERT INTO my_contacts     # 省略列名,数据全部填入
VALUES
('ZhangSan','F','1990-09-09','13513513513','My Best Friend!');

INSERT INTO my_contacts     # 省略部分列名
(name,gender,phone)
VALUES
('LiSi','F','15815815815');

INSERT INTO my_contacts     # 可以改变列的顺序
(name,gender,phone,birthday,information)
VALUES
('WangEr','M','18218218218','1991-05-05','A Lovely Person!');

 四、SELECT语句

SELECT * FROM my_contacts
SELECT * FROM my_contacts WHERE name = 'ZhangSan'; #一般除数字外,其他的值都要用引号
SELECT * FROM my_contacts WHERE name>'hello';      #按字典顺序做大小比较
SELECT * FROM my_contacts WHERE year=20;
SELECT drink_name,price,rating FROM drink WHERE price<3; #运算符号有>,<,<>,=,>=,<=
SELECT drink_name FROM drink WHERE price<3 AND rating>8.0;
SELECT drink_name FROM drink WHERE price<3 OR rating>8.0;
SELECT * FROM my_contacts WHERE name<'M' AND name>='D';  #查询首字母在D和M之间的name
SELECT drink_name FROM drink WHERE rating IS NULL;       #选择rating是空的值
SELECT * FROM my_contacts WHERE name LIKE '%San';
SELECT * FROM my_contacts WHERE name = '_San';      #只有一个匹配
SELECT drink_name FROM drink WHERE price BETWEEN 2 AND 4;
SELECT drink_name FROM drink WHERE interest IN('good','pretty goog','wonderful');
SELECT drink_name FROM drink WHERE NOT price BETWEEN 2 AND 4; 
                           #NOT可与BETWEEN、LIKE、NULL一起用,一般在WHERE后面
SELECT * FROM my_contacts WHERE NOT name LIKE '%San' AND NOT name LIKE '%Jan';

 五、DELETE

 

    DELETE可以用于删除一行或者多行,根据Where子句而定,这里的Where子句跟SELECT中的Where子句用法完全一样。如上面出现的LIKE、IN、BETWEEN,这里都可以用。

DELETE FROM my_contacts;
DELETE FROM my_contacts WHERE name='ZhangSan';
DELETE FROM my_contacts WHERE name='ZhangSan'AND year=20;

 六、UPDATE

 

UPDATE my_contacts
SET gender= 'F';
WHERE name = 'ZhangSan';

UPDATE my_contacts
SET gender= 'F',years=20;
WHERE gender= 'M' AND years=21;

UPDATE my_contacts    #这里可以套用基本运算,如+、-、*、/
SET years=years+1;
WHERE gender= 'F';

 七、单引号的处理

 

SELECT * FROM my_contacts WHERE name='Grover\'s Mill';
SELECT * FROM my_contacts WHERE name='Grover''s Mill';

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics