SQL基础概念及常用SQL操作语句
SQL语句
文章目录
- SQL语句
- 1.什么是SQL
- 2.SQL功能分类
- 3.SQL数据类型
- 4.DDL
- 创建数据库
- 修改数据库
- 创建学生表
- 添加一列
- 查看表的字段信息
- 修改一个表的字段类型
- 删除一列
- 修改表名
- 查看表的创建细节
- 修改表的字符集为gbk
- 修改表的列名
- 删除表
- 5.DML
- 查询表中的所有数据
- 插入操作
- 更新操作
- 删除操作
- 6.DQL
- 查询所有列
- 结果集
- 查询指定列的数据
- 条件查询
1.什么是SQL
- SQL是
Structured Query Language(结构化查询语言)
的缩写。 - SQL是专为数据库而建立的操作命令集, 是一种功能齐全的数据库语言。
- 在使用它时,只需要发出“做什么”的命令,“怎么做”是不用使用者考虑的。
2.SQL功能分类
语言 | 语言类型 | 功能 |
---|---|---|
DDL | 数据定义语言 | 用来定义数据库对象:创建库,表,列等。 |
DML | 数据操作语言 | 用来操作数据库表中的记录 |
DQL | 数据查询语言 | 用来查询数据 |
DCL | 数据控制语言 | 用来定义访问权限和安全级别 |
3.SQL数据类型
- MySQL中定义数据字段的类型对你数据库的优化是非常重要的。
- MySQL支持所有标准SQL数据数据类型。
MySQL支持多种类型,大致可以分为三类
- 数值类型
- 字符串类型
- 日期和时间类型
- 数值类型
常用数据类型
double
例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char
固定长度字符串类型; char(10) ‘abc ’
varchar
可变长度字符串类型;varchar(10) ‘abc’
text
字符串类型
blob
二进制类型
date
日期类型,格式为:yyyy-MM-dd
time
时间类型, 格式为: hh
ss
datetime
日期时间类型 yyyy-MM-dd hh
ss
- 在mysql中,字符串类型和日期类型都要用单引号括起来。‘xybh’ ‘2020-01-01’
4.DDL
创建数据库
- CREATE DATABASE 数据库名 CHARACTER SET utf8;
修改数据库
- ALTER DATABASE 数据库名 CHARACTER SET gbk;
创建学生表
添加一列
- ALTER TABLE 表名 ADD 字段名;
查看表的字段信息
- DESC 表名;
修改一个表的字段类型
- ALTER TABLE 表名 MODIFY 字段名 数据类型;
删除一列
- ALTER TABLE 表名 DROP 字段名;
修改表名
- RENAME TABLE 原始表名 TO 要修改的表名;
查看表的创建细节
- SHOW CREATE TABLE 表名;
修改表的字符集为gbk
- ALTER TABLE 表名 CHARACTER SET 字符集名称;
修改表的列名
- ALTER TABLE 表名 CHANGE 原始列名 新列名 数据类型;
删除表
- DROP TABLE 表名;
5.DML
查询表中的所有数据
- SELECT * FORM 表名;
- DML是对表中的数据进行增删改查的操作
插入操作
- INSERT INTO 表名(列名1, 列名2…) VALUES (列值1, 列值2);
- 注意事项:
列名与列值的类型,个数,顺序要一一对应。
值不要超出列定义的长度。
插入的日期和字符一样,都使用引号括起来。
批量插入 INSERT INTO 表名(列名1, 列名2…) VALUES(列值1, 列值2…),(列值1, 列值2);
更新操作
- UPDATE 表名 SET 列名1=列值1, 列名2=列值2。。。 WHERE 列名=值
把所有学生的分数改为90
UPDATE students SET score=90;
把姓名为zs的学生分数改为60
UPDATE students SET score=60 WHERE NAME=‘zs’;
把姓名为李四的年龄改为20和分数改为70
UPDATE students SET age=20,score=70 WHERE name=‘ls’;
把wc的年龄在原来基础上加1岁
UPDATE students SET age=age+1 WHERE name=’wc;
删除操作
- DELETE FROM 表名 [WHERE 列名=值];
- TRUNCATE TABLE 表名;
DELETE与TRUNCATE的区别
- DELETE删除表中的数据, 表结构还在;删除后的数据可以找回
- TRUNCATE删除是把表直接DROP掉, 然后再创建一个同样的新表。删除的数据不能找回。执行速度比DELETE快
6.DQL
查询所有列
- SELECT * FROM 表名;
结果集
- 数据库执行DQL语句不会对数据进行改变, 而是让数据库发送结果集给客户端。
结果集
- 通过查询语句查询出来的数据以表的形式展示我们称为这个表的虚拟结果集。存放在内存中。
- 查询返回的结果集是一张虚拟表。
查询指定列的数据
- SELECT 列名1, 列名2… FROM 表名;
条件查询
- 条件查询就是在查询时给出WHERE子句, 在WHERE子句中可以使用一些运算符及关键字
条件查询运算符及关键字
=(等于)、!=(不等于)、<>(不等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于);
BETWEEN…AND;值在什么范围
IN(set); 固定范围值
IS NULL;(为空) IS NOT NULL(不为空)
AND:与 OR:或 NOT:非
使用
查询性别为男,并且年龄为20的学生记录
SELECT * FROM students WHERE gender=‘男’ AND age=20;
查询学号为1001 或者 名为zs的记录
SELECT * FROM students WHERE id =‘1001’ OR name=‘zs’;
查询学号为1001,1002,1003的记录
SELECT * FROM students WHERE id=‘1001’ OR id=‘1002’ OR 1001=‘1003’;
SELECT * FROM students WHERE id IN(‘1001’,‘1002’,‘1003’);
SELECT * FROM students WHERE id NOT IN (‘1001’,‘1002’,‘1003’);查询年龄为null的记录
SELECT * FROM students WHERE age IS NULL;
查询年龄在18到20之间的学生记录
SELECT * FROM students WHERE age>=18 AND age<=20;
SELECT * FROM students WHERE age BETWEEN 18 AND 20;查询性别非男的学生记录
SELECT * FROM students WHERE gender !=‘男’;
查询姓名不为null的学生记录
SELECT * FROM students WHERE name IS NOT NULL;
还没有评论,来说两句吧...