SQL语句
一、运行MySQL
命令提示符下输入mysql -u root -p
,然后输入口令,如果一切正确,会连接到MySQL服务器,同时提示符变为mysql
。
输入exit
退出MySQL命令行。注意,MySQL服务器仍在后台运行。
二、关系模型
主键
是关系表中记录的唯一标识。主键的选取非常重要:主键不要带有业务含义,而应该使用BIGINT自增或者GUID类型。主键也不应该允许NULL
。
可以使用多个列作为联合主键,但联合主键并不常用。
关系数据库通过外键
可以实现一对多、多对多和一对一的关系。外键既可以通过数据库来约束,也可以不设置约束,仅依靠应用程序的逻辑来保证。
添加外键
1 | ALTER TABLE students |
删除外键约束
1 | ALTER TABLE students |
注意:删除外键约束并没有删除外键这一列。删除列是通过DROP COLUMN ...
实现的。
三、查询数据
基本查询
要查询数据库表的数据,我们使用如下的SQL语句:
1 | SELECT * FROM <表名> |
SELECT
是关键字,表示将要执行一个查询,*
表示“所有列”,FROM
表示将要从哪个表查询,本例中是students
表。
条件查询
SELECT语句可以通过WHERE
条件来设定查询条件,查询结果是满足查询条件的记录。
1 | SELECT * FROM <表名> WHERE <条件表达式> |
条件表达式可以用:(字符串,需要用单引号括起来)
<条件1> AND <条件2>
,表示满足条件1并且满足条件2<条件1> OR <条件2>
,表示满足条件1或者满足条件2NOT <条件>
,表示“不符合该条件”的记录
组合三个或者更多的条件,就需要用小括号()
表示如何进行条件运算
如果不加括号,条件运算按照NOT
、AND
、OR
的优先级进行,即NOT
优先级最高,其次是AND
,最后是OR
。加上括号可以改变优先级。
条件 | 表达式举例1 | 表达式举例2 | 说明 |
---|---|---|---|
使用<>判断不相等 | score <> 80 | name <> ‘abc’ | |
使用LIKE判断相似 | name LIKE ‘ab%’ | name LIKE ‘%bc%’ | %表示任意字符,例如’ab%’将匹配’ab’,’abc’,’abcd’ |
投影查询
使用SELECT *
表示查询表的所有列,使用SELECT 列1, 列2, 列3
则可以仅返回指定列,这种操作称为投影。
SELECT
语句可以对结果集的列进行重命名。
例:
1 | SELECT id, score points, name FROM students; |
四、 修改数据
INSERT
INSERT
语句的基本语法是:
1 | INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...); |
注意,字段顺序不必和数据库表的字段顺序一致,但值的顺序必须和字段顺序一致。
UPDATE
UPDATE
语句的基本语法是:
1 | UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...; |
例子:
1 | -- 更新id=1的记录 |
- 更新字段时可以使用表达式
- 如果
WHERE
条件没有匹配到任何记录,UPDATE
语句不会报错,也不会有任何记录被更新 UPDATE
语句可以没有WHERE
条件
DELETE
DELETE
语句的基本语法是:
1 | DELETE FROM <表名> WHERE ...; |
例子:
1 | -- 删除id=5,6,7的记录 |