SQL简单介绍
前面我们已经介绍过,通过编写命令的方式实现对数据库的操作,这个以字符串的形式存在的命令被称为查询(Query).。当我们编写这些Query的时候,这些语句就被称为SQL语句。SQL代表结构化查询语言(Structured Query Language)。SQL是用于访问数据库的标准化语言。SQL语句主要分为以下三种类型的语句:
数据操作语句 (Data Manipulation Language,DML)
这个就是我们接下来将主要介绍的重点了,主要包括了【SELECT】,【INSERT】,【UPDATE】,【DELETE】语句。
数据定义语句 (Data Definition Language ,DDL)
这个前面我们已经接触非常多的对于表,索引,视图等使用的【CREATE】,【DROP】,【ALTER】等语句。
数据控制语句 (Data Control Language ,DCL)
这个就是我们前面在用户管理时接触到的【GRANT】,【REVOKE】;还有我们后面高级教程中事物处理即将使用到的【COMMIT】,【BEGIN】,【COMMIT】,【ROLLBACK】等语句。
这里只需要对于SQL的分类有个大概的了解就可以了。不需要大家深入了解。
SQL语句使用规则(监视器)
规则一:SQL语句必须有结束符
其实在前面我们已经对于在监视器中敲SQL命令y有了一个比较深刻的感觉了。通常的SQL语句是必须以【;】作为语句的结束符,如果在输入SQL语句的时候忘记输入了结束符,监视器会认为用户尚未输入完成,会自动跳到下一行继续等待用户输入,这个时候只需要将结尾符补上即可。当然,结尾不仅仅只有【;】还有【G】这种形式,具体的使用情况前面我们也已经进行了举例说明。
规则二:保留关键字不区分大小写关键字
保留关键字是SQL事先定义好了的,如我们之前已经提到的【SELECT】,【ALTER】等就属于关键字的范围。在SQL语句中这些关键字是不区分大小写的。但是为了让SQL语句更加方便阅读和理解,我们通常:以大写的形式表达预留的关键字,以小写的形式表示数据库,表,和列名。同时,当我们在创建表,列时,尽量要避免我们的命名与保留字重复或者冲突,以免造成不可预知的错误,这样错误的排查将变得十分的困难,我也将在后面贴出MySQL5.7版本的预留关键字,大家可以大致了解一下。
规则三:可自由地加入空白或者换行符
一个SQL语句可以作为一行来编写,但是当我们编写比较复杂的SQL语句的时候,就会发现变得异常的麻烦,所以SQL就加入了这一特点。但是需要注意的是在一个关键字的中间加入空格或者换行符是不允许的。
例如:
mysql> sel
-> ect * from user;
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 ‘sel
ect * from user’ at line 1
规则四:使用【- -】或者【/*…*/】注释
【- -】主要是用于单行注释,【/*…*/】主要是进行多行注释
MySQL5.7的保留关键字一览表
| 关键字 | 关键字 | 关键字 |
|---|---|---|
| ACCESSIBLE (R) | ACCOUNT ACTION | |
| ADD (R) | AFTER | AGAINST |
| AGGREGATE | ALGORITHM | ALL (R) |
| ALTER (R) | ALWAYS | ANALYSE |
| ANALYZE (R) | AND (R) | ANY |
| AS (R) | ASC (R) | ASCII |
| ASENSITIVE (R) | AT | AUTOEXTEND_SIZE |
| AUTO_INCREMENT | AVG | AVG_ROW_LENGTH |
| BACKUP | BEFORE (R) | BEGIN |
| BETWEEN (R) | BIGINT (R) | BINARY (R) |
| BINLOG | BIT | BLOB (R) |
| BLOCK | BOOL | BOOLEAN |
| BOTH (R) | BTREE | BY (R) |
| BYTE | CACHE | CALL (R) |
| CASCADE (R) | CASCADED | CASE (R) |
| CATALOG_NAME | CHAIN | CHANGE (R) |
| CHANGED | CHANNEL[C] | CHAR (R) |
| CHARACTER (R) | CHARSET | CHECK (R) |
| CHECKSUM | CIPHER | CLASS_ORIGIN |
| CLIENT | CLOSE | COALESCE |
| CODE | COLLATE (R) | COLLATION |
| COLUMN (R) | COLUMNS | COLUMN_FORMAT |
| COLUMN_NAME | COMMENT | COMMIT |
| COMMITTED | COMPACT | COMPLETION |
| COMPRESSED | COMPRESSION并[d] | CONCURRENT |
| CONDITION (R) | CONNECTION | CONSISTENT |
| CONSTRAINT (R) | CONSTRAINT_CATALOG | CONSTRAINT_NAME |
| 1CONSTRAINT_SCHEMA | CONTAINS | CONTEXT |
| CONTINUE (R) | CONVERT (R) | CPU |
| CREATE (R) | CROSS (R) | CUBE |
| CURRENT | CURRENT_DATE (R) | CURRENT_TIME (R) |
| CURRENT_TIMESTAMP (R) | CURRENT_USER (R) | CURSOR (R) |
| CURSOR_NAME | DATA | DATABASE (R) |
| DATABASES (R) | DATAFILE | DATE |
| DATETIME | DAY | DAY_HOUR (R) |
| DAY_MICROSECOND (R) | DAY_MINUTE (R) | DAY_SECOND (R) |
| DEALLOCATE | DEC (R) | DECIMAL (R) |
| DECLARE (R) | DEFAULT (R) | DEFAULT_AUTH |
| DEFINER | DELAYED (R) | |
| DELETE (R) | DESC (R) | DESCRIBE (R) |
| DES_KEY_FILE | DETERMINISTIC (R) | DIAGNOSTICS |
| DIRECTORY | DISABLE | DISCARD |
| DISK | DISTINCT (R) | DISTINCTROW (R) |
| DIV (R) | DO | DOUBLE (R) |
| DROP (R) | DUAL (R) | DUMPFILE |
| DUPLICATE | DYNAMIC | EACH (R) |
| ELSE (R) | ELSEIF (R) | ENABLE |
| ENCLOSED (R) | ENCRYPTION[e] | END |
| ENDS | ENGINE | ENGINES |
| ENUM | ERROR | ERRORS |
| ESCAPE | ESCAPED (R) | EVENT |
| EVENTS | EVERY | EXCHANGE |
| EXECUTE | EXISTS (R) | EXIT (R) |
| EXPANSION | EXPIRE | EXPLAIN (R) |
| EXPORT | EXTENDED | EXTENT_SIZE |
| FALSE (R) | FAST | FAULTS |
| FETCH (R) | FIELDS | FILE |
| FILE_BLOCK_SIZE[F] | FILTER[G] | FIRST |
| FIXED | FLOAT (R) | FLOAT4 (R) |
| FLOAT8 (R) | FLUSH | FOLLOWS[H] |
| FOR (R) | FORCE (R) | FOREIGN (R) |
| FORMAT | FOUND | FROM (R) |
| FULL | FULLTEXT (R) | FUNCTION |
| GENERAL | GENERATED[i](R) | GEOMETRY |
| GEOMETRYCOLLECTION | GET (R) | GET_FORMAT |
| GLOBAL | GRANT (R) | GRANTS |
| GROUP (R) | GROUP_REPLICATION[j] | HANDLER |
| HASH | HAVING (R) | HELP |
| HIGH_PRIORITY (R) | HOST | HOSTS |
| HOUR | HOUR_MICROSECOND (R) | HOUR_MINUTE (R) |
| HOUR_SECOND (R) | IDENTIFIED | IF (R) |
| IGNORE (R) | IGNORE_SERVER_IDS | IMPORT |
| IN (R) | INDEX (R) | INDEXES |
| INFILE (R) | INITIAL_SIZE | INNER (R) |
| INOUT (R) | INSENSITIVE (R) | INSERT (R) |
| INSERT_METHOD | INSTALL | INSTANCE[K] |
| INT (R) | INT1 (R) | INT2 (R) |
| INT3 (R) | INT4 (R) | INT8 (R) |
| INTEGER (R) | INTERVAL (R) | INTO (R) |
| INVOKER | IO | IO_AFTER_GTIDS (R) |
| IO_BEFORE_GTIDS (R) | IO_THREAD | IPC |
| IS (R) | ISOLATION | ISSUER |
| ITERATE (R) | JOIN (R) | JSON[1] |
| KEY (R) | KEYS (R) | KEY_BLOCK_SIZE |
| KILL (R) | LANGUAGE | LAST |
| LEADING (R) | LEAVE (R) | LEAVES |
| LEFT (R) | LESS | LEVEL |
| LIKE (R) | LIMIT (R) | LINEAR (R) |
| LINES (R) | LINESTRING | LIST |
| LOAD (R) | LOCAL | LOCALTIME (R) |
| LOCALTIMESTAMP (R) | LOCK (R) | LOCKS |
| LOGFILE | LOGS | LONG (R) |
| LONGBLOB (R) | LONGTEXT (R) | LOOP (R) |
| LOW_PRIORITY (R) | MASTER | MASTER_AUTO_POSITION |
| MASTER_BIND (R) | MASTER_CONNECT_RETRY | MASTER_DELAY |
| MASTER_HEARTBEAT_PERIOD | MASTER_HOST | MASTER_LOG_FILE |
| MASTER_LOG_POS | MASTER_PASSWORD | MASTER_PORT |
| MASTER_RETRY_COUNT | MASTER_SERVER_ID | MASTER_SSL |
| MASTER_SSL_CA | MASTER_SSL_CAPATH | MASTER_SSL_CERT |
| MASTER_SSL_CIPHER | MASTER_SSL_CRL | MASTER_SSL_CRLPATH |
| MASTER_SSL_KEY | MASTER_SSL_VERIFY_SERVER_CERT (R) | MASTER_TLS_VERSION |
| MASTER_USER | MATCH (R) | MAXVALUE (R) |
| MAX_CONNECTIONS_PER_HOUR | MAX_QUERIES_PER_HOUR | MAX_ROWS |
| MAX_SIZE | MAX_STATEMENT_TIME[n] | MAX_UPDATES_PER_HOUR |
| MAX_USER_CONNECTIONS | MEDIUM | MEDIUMBLOB (R) |
| MEDIUMINT (R) | MEDIUMTEXT (R) | MEMORY |
| MERGE | MESSAGE_TEXT | MICROSECOND |
| MIDDLEINT (R) | MIGRATE | MINUTE |
| MINUTE_MICROSECOND (R) | MINUTE_SECOND (R) | MIN_ROWS |
| MOD (R) | MODE | MODIFIES (R) |
| MODIFY | MONTH | MULTILINESTRING |
| MULTIPOINT | MULTIPOLYGON | MUTEX |
| MYSQL_ERRNO | NAME | NAMES |
| NATIONAL | NATURAL (R) | NCHAR |
| NDB | NDBCLUSTER | NEVER[O] |
| NEW | NEXT | NO |
| NODEGROUP | NONBLOCKING[P] | NONE |
| NOT (R) | NO_WAIT | NO_WRITE_TO_BINLOG (R) |
| NULL (R) | NUMBER | NUMERIC (R) |
| NVARCHAR | OFFSET | OLD_PASSWORD[Q] |
| ON (R) | ONE | ONLY |
| OPEN | OPTIMIZE (R) | OPTIMIZER_COSTS[r](R) |
| OPTION (R) | OPTIONALLY (R) | OPTIONS |
| OR (R) | ORDER (R) | OUT (R) |
| OUTER (R) | OUTFILE (R) | OWNER |
| PACK_KEYS | PAGE | PARSER |
| PARSE_GCOL_EXPR[S] | PARTIAL | PARTITION (R) |
| PARTITIONING | PARTITIONS | PASSWORD |
| PHASE | PLUGIN | PLUGINS |
| PLUGIN_DIR | POINT | POLYGON |
| PORT | PRECEDES[T] | PRECISION (R) |
| PREPARE | PRESERVE | PREV |
| PRIMARY (R) | PRIVILEGES | PROCEDURE (R) |
| PROCESSLIST | PROFILE | PROFILES |
| PROXY | PURGE (R) | QUARTER |
| QUERY | QUICK | RANGE(R) |
| READ (R) | READS (R) | READ_ONLY |
| READ_WRITE (R) | REAL (R) | REBUILD |
| RECOVER | REDOFILE | REDO_BUFFER_SIZE |
| REDUNDANT | REFERENCES (R) | REGEXP (R) |
| RELAY | RELAYLOG | RELAY_LOG_FILE |
| RELAY_LOG_POS | RELAY_THREAD | RELEASE (R) |
| RELOAD | REMOVE | RENAME (R) |
| REORGANIZE | REPAIR | REPEAT (R) |
| REPEATABLE | REPLACE (R) | REPLICATE_DO_DB[U] |
| REPLICATE_DO_TABLE[V] | REPLICATE_IGNORE_DB[W] | REPLICATE_IGNORE_TABLE[X] |
| REPLICATE_REWRITE_DB[Y] | REPLICATE_WILD_DO_TABLE[Z] | REPLICATE_WILD_IGNORE_TABLE[AA] |
| REPLICATION | REQUIRE (R) | RESET |
| RESIGNAL (R) | RESTORE | RESTRICT (R) |
| RESUME | RETURN (R) | RETURNED_SQLSTATE |
| RETURNS | REVERSE | REVOKE (R) |
| RIGHT (R) | RLIKE (R) | ROLLBACK |
| ROLLUP | ROTATE[AB] | ROUTINE |
| ROW | ROWS | ROW_COUNT |
| ROW_FORMAT | RTREE | SAVEPOINT |
| SCHEDULE | SCHEMA (R) | SCHEMAS (R) |
| SCHEMA_NAME | SECOND | SECOND_MICROSECOND (R) |
| SECURITY | SELECT (R) | SENSITIVE (R) |
| SEPARATOR (R) | SERIAL | SERIALIZABLE |
| SERVER | SESSION | SET (R) |
| SHARE | SHOW (R) | SHUTDOWN |
| SIGNAL (R) | SIGNED | SIMPLE |
| SLAVE | SLOW | SMALLINT (R) |
| SNAPSHOT | SOCKET | SOME |
| SONAME | SOUNDS | SOURCE |
| SPATIAL (R) | SPECIFIC (R) | SQL (R) |
| SQLEXCEPTION (R) | SQLSTATE (R) | SQLWARNING (R) |
| SQL_AFTER_GTIDS | SQL_AFTER_MTS_GAPS | SQL_BEFORE_GTIDS |
| SQL_BIG_RESULT (R) | SQL_BUFFER_RESULT | SQL_CACHE |
| SQL_CALC_FOUND_ROWS (R) | SQL_NO_CACHE | SQL_SMALL_RESULT (R) |
| SQL_THREAD | SQL_TSI_DAY | SQL_TSI_HOUR |
| SQL_TSI_MINUTE | SQL_TSI_MONTH | SQL_TSI_QUARTER |
| SQL_TSI_SECOND | SQL_TSI_WEEK | SQL_TSI_YEAR |
| SSL (R) | STACKED | START |
| STARTING (R) | STARTS | STATS_AUTO_RECALC |
| STATS_PERSISTENT | STATS_SAMPLE_PAGES | STATUS |
| STOP | STORAGE | STORED[ac](R) |
| STRAIGHT_JOIN (R) | STRING | SUBCLASS_ORIGIN |
| SUBJECT | SUBPARTITION | SUBPARTITIONS |
| SUPER | SUSPEND | SWAPS |
| SWITCHES | TABLE (R) | TABLES |
| TABLESPACE | TABLE_CHECKSUM | TABLE_NAME |
| TEMPORARY | TEMPTABLE | TERMINATED (R) |
| TEXT | THAN | THEN (R) |
| TIME | TIMESTAMP | TIMESTAMPADD |
| TIMESTAMPDIFF | TINYBLOB (R) | TINYINT (R) |
| TINYTEXT (R) | TO (R) | TRAILING (R) |
| TRANSACTION | TRIGGER (R) | TRIGGERS |
| TRUE (R) | TRUNCATE | TYPE |
| TYPES | UNCOMMITTED | UNDEFINED |
| UNDO (R) | UNDOFILE | UNDO_BUFFER_SIZE |
| UNICODE | UNINSTALL | UNION (R) |
| UNIQUE (R) | UNKNOWN | UNLOCK (R) |
| UNSIGNED (R) | UNTIL | UPDATE (R) |
| UPGRADE | USAGE (R) | USE (R) |
| USER | USER_RESOURCES | USE_FRM |
| USING (R) | UTC_DATE (R) | UTC_TIME (R) |
| UTC_TIMESTAMP (R) | VALIDATION | VALUE |
| VALUES (R) | VARBINARY (R) | VARCHAR (R) |
| VARCHARACTER (R) | VARIABLES | VARYING (R) |
| VIEW | VIRTUAL[ae](R) | WAIT |
| WARNINGS | WEEK | WEIGHT_STRING |
| WHEN (R) | WHERE (R) | WHILE (R) |
| WITH (R) | WITHOUT[AF] | WORK |
| WRAPPER | WRITE (R) | X509 |
| XA | XID[AG] | XML |
| XOR (R) | YEAR | YEAR_MONTH (R) |
| ZEROFILL (R) |