Linux——数据库(结构化查询语句SQL、数据操纵语句DML、事务控制语言TCL、数据查询语言DQL)
Linux——数据库(结构化查询语句SQL、数据操纵语句DML、事务控制语言TCL、数据查询语言DQL)
结构化查询语句SQL
create(创建)、drop(删除)、alter(修改)、truncate(清空)
SQL语句 | 描述 |
---|---|
show databases | 查看数据库 |
show table | 查看表 |
create database {库名} | 创建数据库 |
drop database {库名} | 删除数据库 |
create table{表名} ({列名} {数据类型}, {列名} {数据类型},) | 创建数据表 |
desc {表名} | 查看表的机构信息 |
select * from {表名} | 查看表内容 |
insert into {表名} values(1,'user1‘) | 表里添加列信息 |
insert into {表名} values(1,'user1‘) | 表里添加行信息 |
alter table {表名} modify {列名} {数据类型} | 更改表的列数据类型 |
alter table {表名} change {旧列名} {新列名} {数据类型} | 更改列名字及数据类型 |
alter table {旧表名} rename {新表名} | 修改表名 |
truncate table {表名} | 清空表内容 |
drop table {表名} | 删除数据表 |
例子
- 创建数据库并将数据库的字符集设为utf8
create database {库名} default character set utf8;
- 创建表
step1. 进入数据库use {库名}
step2. 创建数据表包含id、name数据类型分别为int和varcharcreate table t1(id int(3), name varchar(20));
- 表里添加行信息(数据信息)
insert into t1 values(1,'user1‘);
- 表里添加列信息(年龄类别信息)
alter table t1 add(age int(3));
- 更改列的数据类型
alter table t1 modify age varchar(2);
- 更改列名字及数据类型
alter table t1 change age change_age int(3);
- 修个表名
alter table t1 rename new_t1;
数据操纵语句DML
insert(插入)、delete(删除)、update(更新)
or、and
DML格式 | 描述 |
---|---|
insert into {表名}({列名1},{列名2}) values({数据1},{数据2}) | 插入指定列的数据 |
delete from {表名} where {列名}={数据} | 删除指定列名的指定数据 |
update {表名} set {列名}={数据} | 更新指定列的整列数据 |
update {表名} set {列名}={数据},{列名}={数据} where {列名}={数据} | 更新指定列的指定行数据 |
insert
- 顺序插入
insert into test1 values(02,'mark',null,'USA');
- 指定顺序连续插入
insert into test1(id,name,age) values(3,'alan',19),(4,'tom',18);
例子
delete
- 删除同时满足条件的
delete from test1 where id=2 and age=18;
- 删除两个条件的
delete from test1 where id=2 or age=18;
update
- 整列更改
update test1 set address='China';
- 指定行更改
update test1 set name='小红',age=16 where id=4;
事务控制语言TCL
事务的必须符合四个条件
- 原子性(Atomicity):事务要么成功,要么撤回。不可切割性。
- 一致性(Consistency):事务开始前和结束后,要保证数据的一致性。转账前账号A和账号B的钱的总数为10000,转账后账号A和账号B的前的总数应该还是10000;
- 隔离性(solation):当涉及到多用户操作同一张表时,数据库会为每一个用户开启一个事务。那么当其中一个事务正在进行时,其他事务应该处于等待状态。+保证事务之间不会受影响。
- 持久性(Durability):当一个事务被提交后,我们要保证数据库里的数据是永久改变的。即使数据库崩溃了,我们也要保证事务的完整性。
数据查询语言DQL
基本查询
-
比较查询,筛选出同时比小红,alan,tom大的人
select * from test1 where age>all(select age from test1 where name in ('小红','tom','alan'));
mysql> select * from test1 where age>all(select age from test1 where name in ('小红','tom','alan')); +------+------+------+---------+ | id | name | age | address | +------+------+------+---------+ | 33 | jack | 22 | china | +------+------+------+---------+ 1 row in set (0.06 sec)
-
范围查询,筛选年龄在10到18岁的人
select * from test1 where age between 10 and 18;
# 筛选年龄在10到18岁的人 mysql> select * from test1 where age between 10 and 18; +------+--------+------+---------+ | id | name | age | address | +------+--------+------+---------+ | 4 | 小红 | 16 | china | | 4 | tom | 18 | NULL | +------+--------+------+---------+ 2 rows in set (0.00 sec) # 筛选年龄不在10到18岁的人 mysql> select * from test1 where age not between 10 and 18; +------+------+------+---------+ | id | name | age | address | +------+------+------+---------+ | 33 | jack | 22 | china | | 3 | alan | 19 | NULL | +------+------+------+---------+ 2 rows in set (0.00 sec)
-
模糊查询,筛选%a%(a前后有任何字符的数据)或者%2(2前面有任何字符的数据)
mysql> select name,age,address from test1 where name like '%a%' or age like '%2'; +------+------+---------+ | name | age | address | +------+------+---------+ | jack | 22 | china | | alan | 19 | NULL | +------+------+---------+ 2 rows in set (0.00 sec) mysql> select name,age,address from test1 where name like '%a%' and age lik e '%2'; +------+------+---------+ | name | age | address | +------+------+---------+ | jack | 22 | china | +------+------+---------+ 1 row in set (0.00 sec)
-
排序查询,升序(ASC)、降序(DESC),默认升序;
# 年龄升序查询 mysql> select name,age,address,id from test1 order by age; +--------+------+---------+------+ | name | age | address | id | +--------+------+---------+------+ | NULL | NULL | NULL | 2 | | 小红 | 16 | china | 4 | | tom | 18 | NULL | 4 | | alan | 19 | NULL | 3 | | jack | 22 | china | 33 | +--------+------+---------+------+ 5 rows in set (0.00 sec) # 年龄降序排序 mysql> select name,age,address,id from test1 order by age DESC; +--------+------+---------+------+ | name | age | address | id | +--------+------+---------+------+ | jack | 22 | china | 33 | | alan | 19 | NULL | 3 | | tom | 18 | NULL | 4 | | 小红 | 16 | china | 4 | | NULL | NULL | NULL | 2 | +--------+------+---------+------+ 5 rows in set (0.00 sec)
-
去重查询,
select distinct {列名} from {表名};
-
组查询,
select {组列名},{聚合函数(需聚合的列名)} as {别称} from {表名} group by {组列名};
添加having条件子句
select {组列名},{聚合函数(被聚合的列名)} as {别称} from {表名} group by {组列名} having {聚合函数(被聚合的列名)}>{数值};
完整查询语句 select..from..[where..][group by..][having..][order by..]
执行顺序:from子句=>where子句=>group by子句=>having子句=>order by子句
高级关联查询
上一篇: SQL结构化查询语言
下一篇: Sql server触发器