一.sql数据及语言基本类型:
1.语言的分类
DDL:数据定义语言,用来定义数据库对象:数据库,表,列等。关键字:create,alter,drop等
DML:数据操作语言,用来对数据库中表的记录进行操作。关键字:insert,delete,update等
DQL:数据库查询语言,用来查询数据库中表的记录。关键字:select,from,where等
DCL:数据库控制语言,用来定义数据库的访问权限和安全级别,以创建用户
2.sql语句的通用语法
(1).sql语句可以单行或多行书写,以分号结尾
(2).可以使用空格和缩进来增强语句的可读性:基本上一个单词就一个空格
(3).MySQL数据库的SQL语句不区分大小写。
(4).注释字符有:/**/,#,--
/*我是注释*/
#我是注释
--我是注释
(5).运算符:
逻辑:and(和,表示同时需要满足两个条件),or(或,表示两个条件只需满足其一即可),not(不,常用于取反)
算数:+,-,*,/,% 分别为加,减,乘,除,取余
3.sql中的数据类型
int(整数长度):整数类型 double:小数类型 decimal(m,d):指定整数位于小数位长度的小数类型
Date:日期类型,格式位yyyy-mm-dd,包含年月日,不包含时分秒
Datetime:日期类型,格式为yyyy-mm-dd hh:mm:ss,包含时分秒
Time:日期类型,格式为 hh:mm:ss
二:重要的sql命令
1.创建数据库
create datebase 数据库名
2.修改数据库
alter table 库名 character set 编码集
3.创建新表
create table 表名(
写入字段
)注释;
4.修改表
alter table 表名 rename to 新表名
5.删除表
drop table 表名
6.查找表中数据
select 需要查询的字段 from 查找的表名 where 查找条件
7.更改表中数据
update 表名 set 需要修改的字段=修改后的字段 where 修改条件
8.从数据库中删除数据
delete from 表名 where 条件,
truncate table 表名,
truncate语句删除后将重置自增列.表结构及其字段、约束、索引保持不变,执行速度比delete语句快(删除表中所有内容)
9.从表中插入新的数据
insert into 表名(需要插入的字段名) value (需要插入的内容)
10.创建索引(搜索键)
create index (索引名) on (表名(需要创建索引的字段名))
11.删除索引
drop index (索引名) on (表名)
三、sql语法语句
1.select语句
select语句用于从数据库中选取数据
语法:
select column_id,column_name from table_name; #查询表中指定字段column_id和column_name
或
select * from table_name;#用于查询表内所有字段,*代表表找那个所有字段
2.select distinct语句
select distinct语句用于返回唯一不同的值
语法:
select distinct column_name from table_name;#查询表table_name中column_name字段且返回不同的值
3.where子句
where子句用于提取那些满足指定标准的记录
语法:
select * from column_name where country='CN'; #从表中选出国家为cn的人名
注: sql使用单引号来环绕文本值,如果是数值字段,不要使用引导
where子句中的运算符:
运算符描述: =等于 、<>不等于
注释:在SQL的一些版本中,该操作符可被写成 !=>大于、<小于、>=大于等于、<=小于等于between在某个范围内link搜索某种模式in指定针对某个列的多个可能值
where子句比如:
搜索emp等于7900的数据;
select * from emp where empno=7900;
Where +条件(筛选行) :
条件: 列,比较运算符,值
比较运算符包涵:=(等于),>(大于),<(小于),>=(大于等于) ,<=(小于等于), !=和<> 表示(不等于)
且字符串需要用单引号包裹起来,且需要区分大小写。
4.逻辑运算符
1.And:与 同时满足两个条件的值。
Select * from emp where sal > 2000 and sal < 3000;#查找sal值大于2000且小于3000的值
2.Or:或 满足其中一个条件的值
Select * from emp where sal > 2000 or comm > 500;#查询 emp 表中 SAL 大于 2000 或 COMM 大于500的值。
3.Not:非 满足不包含该条件的值。
select * from emp where not sal > 1500;#查询EMP表中 sal 小于等于 1500 的值。
逻辑运算的优先级:
() not and or
四.特殊条件:
1.空值判断: is null
Select * from emp where comm not null; 查询 emp 表中 comm 列中的不为空的值。
2.between and (在 之间的值)
Select * from emp where sal between 1500 and 3000;#查询emp表中SAL列中大于1500的小于3000的值。
注意:大于等于 1500 且小于等于 3000, 1500 为下限,3000 为上限,下限在前, 上限在后,查询的范围包涵有上下限的值。
3.in包含多个条件值
Select * from emp where sal in (5000,3000,1500); #查询EMP表SAL列中等于5000,3000,1500的值。
4.like模糊查询
Select * from emp where ename like 'M%';#查询EMP表中Ename列中有M的值,M为要查询内容中的模糊信息。
-
% 表示多个字值、_ 下划线表示一个字符;
-
M% : 为能配符,正则表达式,表示的意思为模糊查询信息为 M 开头的。
-
%M% : 表示查询包含M的所有内容。
-
%M_ : 表示查询以M在倒数第二位的所有内容。
5.AND & OR 运算符(用于基于一个以上的条件对记录进行过滤):
select * from Websites where alexa > 15 and (country='CN' OR country='USA');
---从 "Websites" 表中选取 alexa 排名大于 "15" 且国家为 "CN" 或 "USA" 的所有网站
6.ORDER BY 关键字:
ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序,ORDER BY 关键字默认按照升序对记录进行排序。如果需要按照降序对记录进行排序,可以使用 DESC 关键字,默认按照升序排列,desc则按照降序排列
语法:
select column_name,column_name from table_name
order by column_name,column_name asc|desc;
例:
--从 "Websites" 表中选取所有网站,并按照 "alexa" 列排序
select * from Websites order by alexa;
--从 "Websites" 表中选取所有网站,并按照 "alexa" 列降序排序
select * from Websites order by alexa desc;
--从 "Websites" 表中选取所有网站,并按照 "country" 和 "alexa" 列排序
select * from Websites order by country,alexa;
注:order by 多列的时候,先按照第一个第一个值排序,当第一个值相同时再按照第二个第二个值排序,order by 排列时,不写明asc desc的时候,默认是asc;
五.基本操作
insert into语句:
insert into 语句用于向表中插入新记录
语法:
insert into 语句可以有两种编写形式
第一种形式无需指定要插入数据的列名,只需提供被插入的值即可:
insert into table_name values (value1,value2,value3,...);
第二种形式需要指定列名及被插入的值:
insert into table_name (column1,column2,column3,...) values (value1,value2,value3,...);
DELETE 语句:
DELETE 语句用于删除表中的行
语法:
delete from table_name where some_column=some_value;
---表示删除表中some_column字段等于some_value的那一行数据
删除所有数据:
可以在不删除表的情况下,删除表中所有的行。不改变表结构、属性、索引:
delete from table_name;
---或
delete * from table_name;
注意:
where子句规定哪条记录或者哪些记录需要删除。如果省略了where子句,所有的记录都将被删除!