执行顺序:select –>where –> group by–> having–>order by
数据操作语言(DML)
SELECT
-从数据库表中检索数据UPDATE
-更新数据库表中的数据DELETE
-删除数据库表中的数据INSERT INTO
-在数据库表中插入数据
数据定义语言(DDL)
CREATE DATABASE
-创建一个新的数据库ALTER DATABASE
-修改数据库CREATE TABLE
-创建一个新表ALTER TABLE
-修改(更改)数据库表DROP TABLE
-删除表CREATE INDEX
-创建索引(搜索关键字)DROP INDEX
-删除索引
创建数据库
create database 数据库名;
drop 命令删除数据库
drop database 数据库名;
选择数据库
use 数据库名;
创建表
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
删除表
drop table table_name ;
插入数据
insert into runoob_tbl
(runoob_title, runoob_author, submission_date)
values
("学习 PHP", "菜鸟教程", NOW());
更新数据
UPDATE runoob_tbl SET runoob_title='学习 C++' WHERE runoob_id=3;
删除数据
DELETE FROM runoob_tbl WHERE runoob_id=3;
like子句
SELECT * from runoob_tbl WHERE runoob_author LIKE '%COM';
UNION 操作符
SELECT country FROM Websites
UNION //值不重复
SELECT country FROM apps
ORDER BY country;
SELECT country FROM Websites
UNION ALL //值重复
SELECT country FROM apps
ORDER BY country;
排序 ORDER BY
SELECT * from runoob_tbl ORDER BY submission_date ASC;
ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列。
分组 GROUP BY
SELECT name, COUNT(*) FROM employee_tbl GROUP BY name;
连接
- INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a INNER JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
等价于
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a, tcount_tbl b WHERE a.runoob_author = b.runoob_author;
- LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录。
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a LEFT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
- RIGHT JOIN(右连接): 与 LEFT JOIN 相反,用于获取右表所有记录,即使左表没有对应匹配的记录。
SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a RIGHT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author;
ALTER命令(修改数据表名或者修改数据表字段时)
删除字段
ALTER TABLE testalter_tbl DROP i;
添加字段
ALTER TABLE testalter_tbl ADD i INT;
修改类型和名称
ALTER TABLE testalter_tbl MODIFY c CHAR(10);
NULL 值处理
- IS NULL: 当列的值是 NULL,此运算符返回 true。
- IS NOT NULL: 当列的值不为 NULL, 运算符返回 true。
- <=>: 比较操作符(不同于 = 运算符),当比较的的两个值相等或者都为 NULL 时返回 true。
事务
-
原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
-
一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
-
隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
-
持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。