数据库的基本操作
数据库的创建
CREATE DATABASE [IF NOT EXITS]database_name [CHARSET/CHARACTER SET +字符集] [COLLATE + 校对集];
- 字符集是一套符和编码,数据按照指定的符和编码进行储存,常用UTF8和GBK。
- 校对集就是字符集的排序规则。
- 字符集和校对集有默认值:utf8,utf8_general_ci
数据库的删除
DROP DATABASE database_name;数据库的查询
SHOW DATABASES(LIKE 'pattern');- 使用like语句可以对数据库进行部分查询,LIKE 'xxx%'代表查询以xxx为开头的数据库,对于单个字符,则使用LIKE'x_语句'。所以如果要查询的数据库中含有“_”,就需要使用\_进行转义了。
数据库的更新
alter database + 数据库名称 + [库选项];- 数据库的名字是不可更改的,数据库的更新也仅限于对库选项的更新。
数据表的创建
CREATE TABLE [IF NOT EXISTS]table_name(column_name column_type);CREATE TABLE IF NOT EXISTS `user`(
`user_id` INT UNSIGNED AUTO_INCREMENT,
`username` VARCHAR(100) NOT NULL,
`password` VARCHAR(40) NOT NULL,
`registerDate` DATE,
PRIMARY KEY ( ` user_id ` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
- 其中,我们用“,”隔开不同的属性。
- 由于数据表需要保存在指定的数据库下,在使用CREATE TABLE语句必须先指定数据库,语句是 USE database_name.
- 如果不想使输入的数据为NULL,就可以在column_type后使用NOT NULL,这样,如果输入NULL,就会报错了。
- PRIMARY KEY(column_name)语句可以指定主键,设置时也可以有一个主键表,内有多个列,以","分隔
- AUTO_INCREMENT设置自增属性,一般用于主键。
- ENGINE设置储存引擎,CHARSET设置储存编码
常用数据类型:(来自菜鸟教程的汇总表格):
数据类型 描述 CHARACTER(n) 字符/字符串。固定长度 n。 VARCHAR(n) 或
CHARACTER VARYING(n)字符/字符串。可变长度。最大长度 n。 BINARY(n) 二进制串。固定长度 n。 BOOLEAN 存储 TRUE 或 FALSE 值 VARBINARY(n) 或
BINARY VARYING(n)二进制串。可变长度。最大长度 n。 INTEGER(p) 整数值(没有小数点)。精度 p。 SMALLINT 整数值(没有小数点)。精度 5。
存储数据的范围是从-2的15次方(-32768)到2的15次方-1(32767),占用2个字节的储存空间。INTEGER 整数值(没有小数点)。精度 10。
存储数据的范围是-2的31次方到2的31次方-1,占用4个字节的储存空间。BIGINT 整数值(没有小数点)。精度 19。 DECIMAL(p,s) 精确数值,精度 p,小数点后位数 s。例如:decimal(5,2) 是一个小数点前有 3 位数小数点后有 2 位数的数字。 NUMERIC(p,s) 精确数值,精度 p,小数点后位数 s。(与 DECIMAL 相同) FLOAT(p) 近似数值,尾数精度 p。一个采用以 10 为基数的指数计数法的浮点数。该类型的 size 参数由一个指定最小精度的单一数字组成。 REAL 近似数值,尾数精度 7。 FLOAT 近似数值,尾数精度 16。 DOUBLE PRECISION 近似数值,尾数精度 16。 DATE 存储年、月、日的值。 TIME 存储小时、分、秒的值。 TIMESTAMP 存储年、月、日、小时、分、秒的值。 INTERVAL 由一些整数字段组成,代表一段时间,取决于区间的类型。 ARRAY 元素的固定长度的有序集合 MULTISET 元素的可变长度的无序集合 XML 存储 XML 数据
数据表插入数据
INSERT INTO table_name [(field1,field2,....,fieldn)] VALUES (value1,value2,....,valuen);
数据表修改数据
UPDATE table_name SET fieldx = valuex WHERE fieldy = valuey;数据表查询数据
SELECT field1,field2..,fieldn FROM table_name WHERE field1 = value1,....field k = valuek;- 使用"SELECT *"则代表查询数据表中的所有列。
- 这种查询语句可以查询数据的特定列,也可以查询某个具有特定属性值的成员。
- 可以增加多个条件,使用AND,OR 语句
数据表删除数据
DELETE FROM table_name WHERE field = value;DELETE[*]FROM table_name;
- 使用第一条语句,可以删除特定行。
- 第二条语句,可以在保存table的同时删除表中的所有行。
删除数据表
DROP TABLE table_name;
对结果集进行排序
SELECT field1,..,fieldn FROM table_name ORDERD BY field1
- 如果想要使用逆序排序,只需要在后加"DESC"即可。
引用两个表
SELECT field1,field2,..fieldn FROM table1,table2 WHERE table1.fieldx = table2.fieldy;
- 语句中SELECT后FROM前的field不能有相同的。
使用JOIN语句的多表查询
INNER JOIN
SELECT table1.field1,...,table2.fieldn FROM table1 INNER JOIN table2 ON table1monfield = table2mon field [ORDED BY fieldk];- 在表中存在至少一个匹配时,INNER JOIN 关键字返回行。
LEFT JOIN
SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2
ON table_name1.column_name=table_name2.column_name ;
- LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
- 也就是说,会返回左表中的所有行,返回右表中符合要求的行。
RIGHT JOIN
与LEFT JOIN相反,不再赘述。
FULL JOIN
SELECT column_name(s) FROM table_name1 FULL JOIN table_name2ON table_name1.column_name=table_name2.column_name;
- 连接表将包含的所有记录来自两个表,并使用NULL值作为两侧缺失匹配结果
更多推荐
使用MySQL数据库
发布评论