安装MySQL和使用 Navicat 连接数据库。
新建一张学生表student
,列分别是id
、名称name
、年龄age
、学生信息info
。
建表语句:
CREATE TABLE IF NOT EXISTS `student` (`id` INT AUTO_INCREMENT,`name` VARCHAR (100) NOT NULL,`age` INT NOT NULL,`info` VARCHAR (40) NOT NULL,PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ENGINE=InnoDB
设置存储引擎,CHARSET
指定编码格式
向表中插入数据:
INSERT INTO `student` (id,name,age,info) VALUES (1,'user1',18,'大一新生');
INSERT INTO `student` (id,name,age,info) VALUES (2,'user2',20,'毕业生');
INSERT INTO `student` (id,name,age,info) VALUES (3,'user3',27,'社会人士');
INSERT INTO `student` (id,name,age,info) VALUES (4,'user4',17,'高三学子');
1. select
关键字
SQL都是由许多关键字(keyword)组成的语句,关键字是数据库的保留字,用户不能将其当做建表的表名、字段等;表中的数据检索使用select关键字作为开头进行查询数据库表的信息。
2. 检索单个字段
SELECT name FROM student;user1
user2
user3
user4
3. SQL语句注意点
- 多SQL语句一起执行使用分号
;
隔开; - 拼写语句时表的关键字建议使用大写,表的字段和表名使用小写;
- 为了容易阅读,建议将SQL分成多行;
- SQL语言也是使用英文字母,不要开中文,以免造成符号错误不容易被发现;
- SQL语句默认不区分大小写
- SQL语句表名或字段名可以不加引号,如果加引号需要用 ` 而不能用单双引号;
- SQL语句字段名对应的value值使用单双引号都可以。
4. 检索多个字段
SELECT name,age FROM student;user1 18
user2 20
user3 27
user4 17
5. 检索所有字段
SELECT * FROM student;1 user1 18 大一新生
2 user2 20 毕业生
3 user3 27 社会人士
4 user4 17 高三学子
- 通配符
*
表示返回表中的所有列,不是必须不建议使用通配符,会影响数据库性能。
6. distinct
去重
distinct
表示区分,指检索出来的行是唯一(去重),其放在列的最前面;
如果使用了关键字distinct
,其作用于后面的所有列。
- 添加一列已存在的数据:
INSERT INTO `student` (id,name,age,info) VALUES (5,'user4',17,'高三学子');
- 然后查询
SELECT DISTINCT name,age FROM student;user1 18
user2 20
user3 27
user4 17
- user4被过滤一条
7. 限制条数
access 和 sql server:
SELECT TOP 2 FROM student;
TOP 2
表示限制返回前2行
postgresql、SQLLite、和MySQL:
SELECT name FROM student LIMIT 2;
-
LIMIT 2
表示限制返回前2行 -
执行结果:
user1 user2
DB2:
SELECT name FROM student FETCH FIRST 2 ROWS ONLY;
FETCH FIRST 2 ROWS ONLY
表示只抓取前2行数据
8. 偏移
SELECT name FROM student LIMIT 1 OFFSET 1;
-
表示查询列名称来自学生表 限制条数1,偏移值1;
-
意思就是查询学生表中的第二行数据;
-
offset
表示跳跃或者偏移 -
执行结果:
user2
MySQL和MariaDB简化形式:
SELECT name FROM student LIMIT 1,2;
-
表示查询字段名称来自学生表,限制2条,偏移1条;
-
注意顺序
-
执行结果:
user2 user3