sql语句学习教程02_sql查询语句_sql语法_sql数据类型
1.数据库表
一个数据库通常包含一个或多个表。每个表有一个名字标识(例如:"fgedu"),表包含带有数据的记录(行)。
以MySQL为列 的 itpuxdb 数据库中创建了 fgedu 表,用于存储网站记录。
我们可以通过以下命令查看 "fgedu" 表的数据:
mysql> use itpuxdb;
Database changed
mysql> set names utf8;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM fgedu;
+----+--------------+---------------------------+-------+---------+
| id | name | url | alexa | country |
+----+--------------+---------------------------+-------+---------+
| 1 | 风哥教程 | http://www.fgedu.net | 8888 | CN |
+----+--------------+---------------------------+-------+---------+
1 rows in set (0.01 sec)
解析
use itpuxdb; 命令用于选择数据库。
set names utf8; 命令用于设置使用的字符集。
SELECT * FROM fgedu; 读取数据表的信息。
上面的表包含1条记录和5个列(id、name、url、alexa 和country)。
重要事项
一定要记住,SQL 对大小写不敏感!
2.SQL 语句后面的分号?
某些数据库系统要求在每条 SQL 命令的末端使用分号。在我们的教程中不使用分号。
分号是在数据库系统中分隔每条 SQL 语句的标准方法,这样就可以在对服务器的相同请求中执行一条以上的语句。
如果您使用的是 MS Access 和 SQL Server 2000,则不必在每条 SQL 语句之后使用分号,不过某些数据库软件要求必须使用分号。
3.SQL DML 和 DDL
可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。
SQL (结构化查询语言)是用于执行查询的语法。但是 SQL 语言也包含用于更新、插入和删除记录的语法。
查询和更新指令构成了 SQL 的 DML 部分:
SELECT - 从数据库表中获取数据
UPDATE - 更新数据库表中的数据
DELETE - 从数据库表中删除数据
INSERT INTO - 向数据库表中插入数据
SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。
SQL 中最重要的 DDL 语句:
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
4.SQL常用语法
SQL SELECT语句
SELECT column1, column2....columnN
FROM table_name;
SQL DISTINCT子句
SELECT DISTINCT column1, column2....columnN
FROM table_name;
SQL WHERE子句
SELECT column1, column2....columnN
FROM table_name
WHERE CONDITION;
SQL AND/OR子句
SELECT column1, column2....columnN
FROM table_name
WHERE CONDITION-1 {AND|OR} CONDITION-2;
SQL IN子句
SELECT column1, column2....columnN
FROM table_name
WHERE column_name IN (val-1, val-2,...val-N);
SQL BETWEEN子句
SELECT column1, column2....columnN
FROM table_name
WHERE column_name BETWEEN val-1 AND val-2;
SQL Like子句
SELECT column1, column2....columnN
FROM table_name
WHERE column_name LIKE { PATTERN };
SQL ORDER BY子句
SELECT column1, column2....columnN
FROM table_name
WHERE CONDITION
ORDER BY column_name {ASC|DESC};
SQL GROUP BY子句
SELECT SUM(column_name)
FROM table_name
WHERE CONDITION
GROUP BY column_name;
SQL COUNT子句
SELECT COUNT(column_name)
FROM table_name
WHERE CONDITION;
SQL HAVING子句
SELECT SUM(column_name)
FROM table_name
WHERE CONDITION
GROUP BY column_name
HAVING (arithematic function condition);
SQL CREATE TABLE语句
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);
SQL DROP TABLE语句
DROP TABLE table_name;
SQL CREATE INDEX语句
CREATE UNIQUE INDEX index_name
ON table_name ( column1, column2,...columnN);
SQL DROP INDEX语句
ALTER TABLE table_name
DROP INDEX index_name;
SQL DESC语句
DESC table_name;
SQL TRUNCATE TABLE语句
TRUNCATE TABLE table_name;
SQL ALTER TABLE语句
ALTER TABLE table_name {ADD|DROP|MODIFY} column_name {data_ype};
SQL ALTER TABLE(rename)语句
ALTER TABLE table_name RENAME TO new_table_name;
SQL INSERT INTO语句
INSERT INTO table_name( column1, column2....columnN)
VALUES ( value1, value2....valueN);
SQL UPDATE语句
UPDATE table_name
SET column1 = value1, column2 = value2....columnN=valueN
[ WHERE CONDITION ];
SQL DELETE语句
DELETE FROM table_name
WHERE {CONDITION};
SQL CREATE DATABASE语句
CREATE DATABASE database_name;
SQL DROP DATABASE语句
DROP DATABASE database_name;
SQL USE语句
USE database_name;
SQL COMMIT语句
COMMIT;
SQL ROLLBACK语句
ROLLBACK;
5.数据类型
SQL数据类型是指定任何对象的数据类型的属性。 每列,变量和表达式在SQL中都有相关的数据类型。 在创建表时可以使用这些数据类型。 也可以根据需要为表的列(字段)选择合适的数据类型。在数据库中,表的每列都具有特定的数据类型。 数据类型指定列(字段)可以容纳的数据类型,例如字符串,数值和日期时间值。
MySQL中定义数据字段的类型对你数据库的优化是非常重要的。
MySQL支持多种类型,风哥教程中列表的MYSQL类型大致可以分为三类:数值、日期/时间和字符串(字符)类型。
1)数值类型
MySQL支持所有标准SQL数值数据类型。
这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL和NUMERIC),以及近似数值数据类型(FLOAT、REAL和DOUBLE PRECISION)。
关键字INT是INTEGER的同义词,关键字DEC是DECIMAL的同义词。
BIT数据类型保存位字段值,并且支持MyISAM、MEMORY、InnoDB和BDB表。
作为SQL标准的扩展,MySQL也支持整数类型TINYINT、MEDIUMINT和BIGINT。下面的表显示了需要的每个整数类型的存储和范围。
BINARY 和 VARBINARY 类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字符串而不要非二进制字符串。也就是说,它们包含字节字符串而不是字符字符串。这说明它们没有字符集,并且排序和比较基于列值字节的数值值。
BLOB 是一个二进制大对象,可以容纳可变数量的数据。有 4 种 BLOB 类型:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB。它们区别在于可容纳存储范围不同。