一般软件开发人员涉及到数据库,比较多的是数据的增删改查;毕竟我们不是数据库管理人员(数据库的高级优化,灾难性的回复等);
SQL介绍
全称:Structured Query Language 中文名称:结构化查询语言;
功能:是一种定义,操作,管理关系数据库的句法。大多数关系型数据库都支持;
组成:DQL:数据查询语言;DML:数据操作语言;DDL:数据定义语言;DCL:数据控制语言;TPL:事务处理语言;CCL:指针控制语言;
数据库
定义:存储数据仓库
特点:数据共享,相对安全;
数据库模型分类:关系型数据库是主流,层状型数据库,网状型数据库;
数据库管理系统(DBMS)
常见关系型数据库管理系统(DBMS):Oracle、MySql、SQLite、SQL Server、Access、DB2、Informix、Prostgre SQL
注意:通常我们说的MySql数据库其实是MySql数据库管理系统
MySql中的SQL语句
首先要安装MySql软件,安装之后才能在CMD命令行中或者其他数据库可视化工具中使用SQL语句操作数据;
以下内容都是CMD命令行中使用SQL语句;cmd进入命令行,输入命令:mysql -u 用户名 -p 密码 进入mysql客户端;
DDL:数据库和表的创建
全拼:Data Definition Language 数据定义语言,主要是创建数据库和表的结构;关键字:Create Alter Drop Truncate
数据库的操作
1,创建数据库
create database test;#注意要有分号,数据库名test
2,查看创建数据库的语句
show create database test;
3,查看创建的数据库
#查询所有创建的数据库
show databases;
4,使用数据库
#使用某个数据库
use test;
5,删除数据库
drop database test;
6,创建数据库并指定字符集
create database test character set gbk;
7,查看数据库中所有的校验规则
show collation;
8,查看数据库中部分校验规则
show collation like '%gb%'; #like模糊查询
9,设置校验规格和字符集
create database mydb character set gbk collate gbk_bin;
10,修改字符集
alter database mydb character set utf8; #注意不要写成utf-8了
MySql中数据类型:bit, tinyint, bool 或者 boolean,smallint, int , bigint, float, double, char, varchar, blob或longblob, text, data/datatime/timestamp;
表的操作
1,创建表
use mydb; #进入要创建表的数据库
create table test(id int,name varchar(20)); #表名test
2,查看创建表的语句
show create table test;
3,创建表并指定字符集
create table test2(id int ,name varchar(20)) character set utf8;
4,插入数据
insert into test2(id,name) values(22,'你好');
#简写 insert test2 values(33,'妹子'); 省略字段,意味着所有字段都必须给值(自增自减除外)
如果报错可能是没有设置Mysql客户端字符集,设置客户端字符集
set character_set_client = gbk; #设置客户端字符集为gbk
5,查询表中的数据
select * from test2;
如果显示的中文还是乱码,可是没有设置Mysql客户端结果集的字符集
set character_set_results = gbk;
6,更新数据
update test2 set name = '张三' where id =22; #把id =22行中的name 的值改为:张三
6.1,将表中所有的name字段改为:王五;
update test2 set name = '王五';
6.2,修改多个字段
update test2 set name = '张三', id = 1 where id =22;
7,删除数据
delete from test2 where id =22; #删除id=22的数据
7.1,删除所有数据
delete from test2 ;
7.2,删除所有记录
truncate table test2;
8,更改表的结构
alter table t1 add time varchar(20); #添加一个time列
8.1,删除某列
alter table t1 drop column time;
8.2,查看表的结构
desc t1;
9,删除表
drop table test2;
DQL
全拼:Database Query Language 中文名:数据查询语言
作用:查询数据
1,查看所有数据
select * from t1; # 其中t1是表名 *代表所有的字段
2,查看某条数据,一般根据id查询,因为id一般唯一;
select * from t1 where id = 5; #查询id=2的这条记录
3,查询id在 2 - 5之间的数据
select * from t1 where id>=2 and id<=5 ;
或者
select * from t1 where id between 2 and 5;#包括2和5
4,参看所有的某个字段的数据;
select name from t1;
5,参看所有的某些字段的数据;
select id,name from t1; # id,name查询的字段名 t1表名
6,模糊查询
表达式:select * from 表名 where 字段名 like 字段表达式 (%表示任意字符数,_表示任意的一个字符,[ ] 表示在某个区间)
6.1,查询名字以‘张’开头的数据
select * from t1 where name like '张%';
6.2,查询名字中含有‘赵’,且名字的长度是3
select * from t1 where name like '赵__' or name like '_赵_'or name like '__赵' ; #注意下划线的个数
7,查询表中名字(某个字段)不同的记录
select distinct name from t1;
8,查询表中(某些字段)不同的记录
select distinct name,id from t1; # 查询id 和 name 都不相同的记录
9,字段可以有表达式
select id +10 ,name from t1; #查询出id是加10后的
10,给字段起别名
select id as '序号' , name as '名字' from t1;
或者:省略as
select id '序号' , name '名字' from t1;
11,几个int 数据类型的字段可以加减算法
select id, a + b + c from t2;
12,查询中in关键字使用 in:查询在in列表中的值
select * from t1 where address in('北京','上海');
13,排序(order by)
13.1,升序排序
select * from t2 order by a asc; #asc代表升序 可以省略,默认是升序
13.2,降序
select * from t2 order by a desc; #desc代表降序