SQL语句

SQL语句

一、运行MySQL

命令提示符下输入mysql -u root -p,然后输入口令,如果一切正确,会连接到MySQL服务器,同时提示符变为mysql

输入exit退出MySQL命令行。注意,MySQL服务器仍在后台运行。

二、关系模型

主键是关系表中记录的唯一标识。主键的选取非常重要:主键不要带有业务含义,而应该使用BIGINT自增或者GUID类型。主键也不应该允许NULL

可以使用多个列作为联合主键,但联合主键并不常用。

关系数据库通过外键可以实现一对多、多对多和一对一的关系。外键既可以通过数据库来约束,也可以不设置约束,仅依靠应用程序的逻辑来保证。

添加外键

1
2
3
4
5
ALTER TABLE students
ADD CONSTRAINT fk_class_id
FOREIGN KEY (class_id)
REFERENCES classes (id);
// 外键约束的名称为fk_class_id(名称可以任意);指定class_id作为外键,classes (id)指定了这个外键将关联到classes表的id列(即classes表的主键)

删除外键约束

1
2
ALTER TABLE students
DROP FOREIGN KEY fk_class_id;

注意:删除外键约束并没有删除外键这一列。删除列是通过DROP COLUMN ...实现的。

三、查询数据

基本查询

要查询数据库表的数据,我们使用如下的SQL语句:

1
SELECT * FROM <表名>

SELECT是关键字,表示将要执行一个查询,*表示“所有列”,FROM表示将要从哪个表查询,本例中是students表。

条件查询

SELECT语句可以通过WHERE条件来设定查询条件,查询结果是满足查询条件的记录。

1
SELECT * FROM <表名> WHERE <条件表达式>

条件表达式可以用:(字符串,需要用单引号括起来)

  1. <条件1> AND <条件2>,表示满足条件1并且满足条件2

  2. <条件1> OR <条件2>,表示满足条件1或者满足条件2

  3. NOT <条件>,表示“不符合该条件”的记录

组合三个或者更多的条件,就需要用小括号()表示如何进行条件运算

如果不加括号,条件运算按照NOTANDOR的优先级进行,即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
2
SELECT id, score points, name FROM students;
-- score列重命名为points

四、 修改数据

INSERT

INSERT语句的基本语法是:

1
2
3
INSERT INTO <表名> (字段1, 字段2, ...) VALUES (值1, 值2, ...);
-- 查询并观察结果:
SELECT * FROM <表名>;

注意,字段顺序不必和数据库表的字段顺序一致,但值的顺序必须和字段顺序一致。

UPDATE

UPDATE语句的基本语法是:

1
UPDATE <表名> SET 字段1=值1, 字段2=值2, ... WHERE ...;

例子:

1
2
3
4
-- 更新id=1的记录
UPDATE students SET name='大牛', score=66 WHERE id=1;
-- 查询并观察结果:
SELECT * FROM students WHERE id=1;
  1. 更新字段时可以使用表达式
  2. 如果WHERE条件没有匹配到任何记录,UPDATE语句不会报错,也不会有任何记录被更新
  3. UPDATE语句可以没有WHERE条件

DELETE

DELETE语句的基本语法是:

1
DELETE FROM <表名> WHERE ...;

例子:

1
2
3
4
-- 删除id=5,6,7的记录
DELETE FROM students WHERE id>=5 AND id<=7;
-- 查询并观察结果:
SELECT * FROM students;

实用SQL语句

MySQL SELECT