SQL基础语法操作详解
Posted 开到荼蘼223's
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL基础语法操作详解相关的知识,希望对你有一定的参考价值。
什么是SQL?
SQL (Structured Query Language)即“结构化查询语言”,是一种针对于关系型数据库的操作语言,常见关系型数据库由mysql、Oracle、SQL Server等。
SQL语言分类
- DDL(Data Definition Language):即数据定义语言,主要用来定义数据库的对象:库、表、列等。
- DQL(Data Query Language):数据查询语言,主要用来查询数据。
- DML(Data Manipulation Language):数据操作语言,用来定义数据库记录。
- DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别。
SQL基础语法
- SQL语法中关键字不区别大小写,建议使用大写
- 可以用空格和缩进来来增强语句的可读性
- SQL语句可以单行或多行书写,以分号结尾
SQL基本操作
创建数据库
CREATE DATABASE 数据库名;
该方法是创建未创建的数据库如果这个数据已经存在会报错
删除数据库
DROP DATABASE 数据库名;
查看当前所有数据库
SHOW DATABASES;
切换数据库
USE 数据库名;
显示数据库下的所有表格
SHOW TABLES;
使用该指令前应当先切换数据库
创建表
create table 表名( 列名 列数据类型, 列名 列数据类型, ...... )
显示表结构
desc 表名;
查看当前数据库
select database();
修改数据库编码
ALTER DATABASE 数据库1 CHARACTER SET utf8;
修改数据库mydb1的编码为utf8
强调
路径分隔符
- Windows 系统路径分隔符 \\
- Linux 系统路径分隔符 /
数据类型
MySQL与Java、C一样,也有数据类型,MySQL中数据类型主要应用在列上。
常用类型:
- int:整型;
- double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
- decimal:泛型型,在表单线方面使用该类型,因为不会出现精度缺失问题;
- char:固定长度字符串类型;(当输入的字符不够长度时会补空格);
- varchar:固定长度字符串类型(当输入的字符不够长度时不会补空格);
- text:字符串类型;
- blob:字节类型;
- date:日期类型,格式为:yyyy-MM-dd;
- time:时间类型,格式为:hh:mm:ss
- timestamp:时间戳类型;
操作表
创建表
CREATE TABLE 表名(
列名 列类型,
列名 列类型,
......
);
创建person表
CREATE TABLE person(
sno int,
name varchar(10),
gender varchar(2),
age int,
birthdat date
);
查看表结构
DESC 表名;
删除表
DROP TABLE 表名;
修改表
添加列 给person表添加class列
ALTER TABLE person ADD(class VARCHAR(10));
修改列的数据类型 修改person表中gender数据类型修改为CHAR(2)
ALTER TABLE person MODIFY gender CHAR(2);
修改列名 修改person表中gender列为sex
ALTER TABLE person CHANGE gender sex CHAR(2);
删除列 删除person表的class列
ALTER TABLE person DROP class;
修改表名称 修改person表名称为stu
ALTER TABLE person RENAME TO stu;
插入数据
INSERT INTO 表名(列名1,列名2, …) VALUES(值1, 值2);
给stu表的sid name age gender列添加数据
INSERT INTO stu(sid, name,age,gender) VALUES('1001', '李明, 23, 'male');
当没有指定要插入的列,表示按创建表时列的顺序插入所有列的值
INSERT INTO 表名 VALUES(值1,值2,…);
创建一个stu表并向里面插入数据
CREATE TABLE stu (
sid CHAR(6),
name VARCHAR(50),
age INT,
gender VARCHAR(50)
);
INSERT INTO stu VALUES('S_1001', 'liuYi', 35, 'male');
INSERT INTO stu VALUES('S_1002', 'chenEr', 15, 'female');
INSERT INTO stu VALUES('S_1003', 'zhangSan', 95, 'male');
INSERT INTO stu VALUES('S_1004', 'liSi', 65, 'female');
INSERT INTO stu VALUES('S_1005', 'wangWu', 55, 'male');
INSERT INTO stu VALUES('S_1006', 'zhaoLiu', 75, 'female');
INSERT INTO stu VALUES('S_1007', 'sunQi', 25, 'male');
INSERT INTO stu VALUES('S_1008', 'zhouBa', 45, 'female');
INSERT INTO stu VALUES('S_1009', 'wuJiu', 85, 'male');
INSERT INTO stu VALUES('S_1010', 'zhengShi', 5, 'female');
INSERT INTO stu VALUES('S_1011', 'xxx', NULL, NULL);
注意:所有字符串数据必须使用单引用来引用
修改数据
UPDATE 表名 SET 列名1=值1, … 列名n=值n [WHERE 条件];
删除数据
删除stu表中sid为1001这一项
DELETE FROM stu WHERE sid= '1001';
这里的where是可选的,表示条件,即给满足条件的列修改数据
DELETE FROM 表名 [WHERE 条件];
TRUNCATE TABLE 表名;
TRUNCATE和DELETE都可以删除表的所有记录,但原理不同。DELETE的效率没有TRUNCATE高,TRUNCATE是先DROP TABLE,再CREATE TABLE,而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的。
数据查询
数据库执行DQL语句不会对数据进行改变,而是让数据库发送结果集给客户端。
select 列名 --> 要查询的列名称
from 表名 --> 要查询的表名称
where 条件 --> 行条件
group by 分组列 --> 对结果分组
having 分组条件 --> 分组后的行条件
order by 排序列 --> 对结果分组
limit 起始行, 行数 --> 结果限定
基础查询
查询所有列
SELECT * FROM 表名;
* :通配符,表示所有列
查询指定列
SELECT 列名1, 列名2, …列名n FROM 表名;
条件查询
条件查询就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符
= != <> < <= > >=
between...and... 在两个值之间
in(集合) 在集合范围内
is NULL 是否为空值
or 或关系
and 与关系
NOT 取反
查询性别为女,并且年龄小于50的记录
SELECT * FROM stu
WHERE gender='female' AND age<50;
查询学号不是S_1001,S_1002,S_1003的记录
SELECT * FROM stu
WHERE sid NOT IN('S_1001','S_1002','S_1003');
模糊查询
SELECT 字段 FROM 表 WHERE 某字段 Like 条件;
其中关于条件,SQL 提供了两种匹配模式
% 表示0或多个字符
_ 表示任意单个字符
查询姓名以“陈”开头的学生记录
SELECT *
FROM stu
WHERE name LIKE '陈%';
字段控制查询
去除重复记录(两行或两行以上记录中系列的上的数据都相同),例如stu表中name字段就存在相同的记录,去掉重复用DISTINCT
SELECT DISTINCT class FROM stu;
另外 IFNULL(列名,值) 可以将Null转换成指定的值
AS可以给列添加别名
统计表中的记录数
SELECT count(*) as '总记录数' FROM stu;
排序
对查询结果进行排序 关键字是 order by
select 列 from 表名 [where 条件] order by 列名 asc/desc 升序/降序;
默认为升序
聚合函数
- count(列名) 统计指定列不为NULL的记录行数
- max(列名)/min(列名) 计算制定列的最大值和最小值
- sum(列名) 求和
- avg(列名) 求平均值
以上是关于SQL基础语法操作详解的主要内容,如果未能解决你的问题,请参考以下文章