SQL语句
数据库
数据库的作用
存储和管理数据的仓库,本质上是一个文件系统,还是以文件的方式存在服务器的电脑上
什么是SQL
Structured Query Language 结构化查询语言
SQL作用
是一种所有关系型数据库的查询规范,不同的数据库,只要是关系型的数据库都支持,只不过不同的数据库SQL语句有一些区别,有一些其特有的语言;
MySQL的语法
每条语句以分号结尾,如果在SQLyog中不是必须加的。 SQL中不区分大小写,关键字中认为大写和小写是一样的,但是推荐大写;
3种注释
--空格 注释内容 单行注释
/* */ 多行注释
# 这是mysql特有的注释方式
SQL语句的分类
DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create, drop,alter 等
DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删改。关键字:insert, delete, update 等
DQL(Data Query Language)数据查询语言
用来查询数据库中表的记录(数据)。关键字:select, where 等
DCL(Data Control Language)数据控制语言(了解)
用来定义数据库的访问权限和安全级别,及创建用户。关键字:GRANT, REVOKE 等
SQL语句的相关操作 重点
DDL 建库/建表
CRUD操作 C()Create 创建 R Retrieve 查询 U(Update):修改 D(Delete):删除 使用数据库:use 数据库名称;
操作数据库
创建数据库
判断是否存在,如果不存在则创建数据库 create database if not exists 数据库名
创建数据库并指定字符集为 gbk CREATE DATABASE 数据库名 CHARACTER SET 字符集
查看数据库
查看所有数据库 show databases ;
查看某个数据库的定义信息 show create database 数据库名
修改数据库
修改数据库默认的字符集 ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 字符集;
删除数据库
删除数据库 DROP DATABASE 数据库名
使用数据库
查看正在使用的数据库 SELECT DATABASE()
使用/切换数据库 USE 数据库名
操作表
创建表
创建表的格式 CREATE TABLE 表名 ( 字段名 1 字段类型 1, 字段名 2 字段类型 2 );
MySQL常使用的数据类型
int 整型
double 浮点型 例如 score double(5,2)需要指定小数一共几位,小数点后面保留几位
varchar 字符串型 设置某字段为字符串是需要指定字符串的长度, 例如: name varchar(32)
data 日期类型,格式为yyyy-MM-dd 只有年月日
datetime 包含年月日时分秒 yyyy-MM-dd HH:mm:ss
timestamp 时间错类型,包含年月日时分秒 yyyy-MM-dd HH:mm:ss 如果将来不给这个字段赋值,或赋值为null则默认使用当前的系统时间
查看表
查看数据库中所有的表 show tables;
查看表结构 desc 表名
查看创建表的SQL语句 show create table 表名
快速创建一个表结构相同的表
create table 新表名 like 旧表名
删除表
drop table if exists 表名
修改表
在表中添加一列 alter table 表名 add 列名 类型;
修改列的类型 alter table 表名 modify 列名 新的类型;
修改列的名字 alter table 表名 change 旧列名 新列名 类型;
删除列 alter table 表名 drop列名
修改表名修改字符集 rename table 表名 to 新表名 set 字符集
DML 对表中数据进行增删改
插入(添加)数据
所有的/部分的数据写出来 insert into表名 ( 字段名 1, 字段名 2, 字段名 3…)values ( 值 1, 值 2, 值 3); 注:没有添加数据的字段会使用null
更新(修改)数据
不带条件修改数据 UPDATE 表名 SET 字段名= 值;
带条件修改数据 UPDATE 表名 SET 字段名= 值 WHERE 字段名= 值;
删除表中的数据
删除表记录 DELETE FROM 表名 [WHERE 条件表达式]
使用 truncate 删除表中所有记录 TRUNCATE TABLE 表名;
truncate 和 delete 的区别 truncate 相当于删除表的结构,再创建一张表 delete是表中有多少数据就会重复循环删除多少次
DQL 查询表中数据
简单查询
查询表所有行和列的数据 SELECT * FROM 表名
指定列的别名进行查询 SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名
对列和表同时指定别名 SELECT 字段名 1 AS 别名, 字段名 2 AS 别名... FROM 表名 AS
表使用别名的原因:用于多表查询操作
清除重复值
查询指定列并且结果不出现重复数据 SELECT DISTINCT 字段名 FROM 表名
查询的结果参与运算
某列数据和固定值运算 SELECT 列名 1 + 固定值 FROM 表名
某列数据和其他列数据参与运算 SELECT 列名 1 + 列名 2 FROM 表名; select *,(math+english) 总成绩 from student;
条件查询
为什么要条件查询 如果没有查询条件,则每次查询所有的行。实际应用中,一般要指定查询的条件。对记录进行过滤
条件查询的语法 SELECT 字段名 FROM 表名 WHERE 条件
比较运算符
> 、< 、<= 、>= 、= 、<>
BETWEEN...AND 在一个范围之内,如:between 100 and 200 相当于条件在 100 到 200 之间,包头又包尾 select * from student3 where english between 75 and 90;
IN( 集合)集合表示多个值,使用逗号分隔 in 里面的每个数据都会作为一次条件,只要满足条件的就会显示 select * from student3 where id in(1,3,5);
LIKE ' 张%' 模糊查询
IS NULL 查询某一列为 NULL 的值,注:不能写=NULL
逻辑运算符
and 或 && 与,SQL 中建议使用前者,后者并不通用。 or 或 || 或 not 或 ! 非
通配符
% 匹配任意多个字符串
_ 匹配一个字符
DCL
管理MySQL中用户的权限
JavaWeb:使用Java语言开发互联网项目 可以理解用Java语言开发网站
|
|