欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQL结构化查询语言

程序员文章站 2022-03-09 09:12:30
...

SQL是在关系型数据库上执行的数据操作,检索及维护所使用的标准语言。
定义数据(DDL),操纵数据(DML),控制数据(DCL),查询数据(DQL),事务控制(TCL)
SQL结构化查询语言

四.DDl数据定义语言

1.操作数据库的DDL

三个关键字:create,alter,drop

-- 创建数据库
create database mybase1;
-- 创建带字符集的数据库
create database mybase2 character set utf8;
-- 查看所有数据库(一定要加s)
show databases;
-- 查看当前正在使用数据库
select database();
-- 修改数据库编码
alter database mybase1 character set utf8;
-- 删除数据库
drop database [if exists] mybase1;
-- 切换数据库
use mybase2;

2.操作的DDL

-- 创建表(创建表每一句都要加一个逗号,最后一个不带逗号)
create table [if not exists] exam(
	//列名  数据类型 主键    自动增长      不为空
	id int(11) primary key auto_increment not null,
	//default是默认值
	name varchar(20) default '小花',
	//tinyint为1位短整型null为允许为空
	sunscore tinyint(1) null,
	//blob为图片类型
	photo blob
)
-- 查看所有表
show tables;
-- 显示描述表里面的内容
desc exam;
-- 删除表
drop table [if exists] exam; 
-- 修改表的字符集
alter table exam character set gbk;
-- 修改表名
rename table exam to exam1;
-- 添加列(名为sex的字段)
alter table exam add [column] sex int not null;
-- 修改列类型
alter table exam1 modify sex varchar(2);
-- 修改列名
alter table exam1 change sex xingbie varchar(3);
-- 删除列
alter table exam1 drop xingbie;
-- 复制表(只复制表的缩影和结构)

五.DML数据操纵语言

小练习

-- 插入记录
	-- 插入一条记录的部分列
	insert into exam (id,name,english,chinese,math) value(2,'张三',90,90,90);
	insert into exam (id,name,english,chinese) value(null,'张三',90,90);
	-- 插入一条记录的全部列
	insert into exam values(null,'李四',90,90,100);
	-- 插入图片,图片最好放在mysql的目录下,以免发生权限问题
	create table photo(
		stuphoto bolb
	);
	insert into photo('E:\mysql\Install\1.PNG');
-- 修改记录
	-- 修改全部记录
	update exam set name='王五',math=80;
	--修改id=5的记录
	update exam set name='孙刘',math=89 where id=5;
-- 删除记录
	-- 删除全部记录
	delete from exam;
	-- 删除部分记录
	delete from exam where id=5;

drop,delete,truncate在表操作上的区别
①.delete from exam;-- 删除表的所有内容,但不清空auto_incremenet,下次再添会把原来的自增1
②.truncate table exam;-- 删除表的所有内容,并清空auto_incremenet
③.drop table exam;-- 删除整张表

六.DCL数据控制语言

1.使用HeidiSQL设置权限
可以使用管理用户认证和权限来添加删除用户,以及设置添加删除等权限.
SQL结构化查询语言2.使用命令行来设置权限
win+R打开cmd
SQL结构化查询语言
小练习

创建用户:密码必须使用字符串,不可以不加双引号
mysql> create user aaa@qq.com identified by 'root123';
给用户授权:
mysql> grant select,drop on mysql.*to aaa@qq.com;
撤销权限://本用户不能撤销自己的权限,需要用其他用户来撤销
mysql> revoke select on mysql.* from aaa@qq.com;
删除用户:
mysql> drop user aaa@qq.com;
登录:
C:\Users\dada>mysql -uroot -proot123.
退出登录:
mysql> exit;
查看表数据:
mysql> select * from host;/mysql> select * from db;
查看表结构:
mysql> desc host;
删除表全部记录:
mysql> delete from host;//没有赋予此权限就不能使用
显示表的所有权限:
mysql> show grants for aaa@qq.com;

七.DQL数据查询语言

1.全表查询
– 全表查询: select * from表;
– 查询部分字段: select字段,字段,字段.from表;
– 过滤重复字段行: select [distinct] 列名,列名 from 表名;
– 查询字段起别名: select字段 as新字段名,字段 新字段名from表;
小练习

create table exam(
		id int(11) primary key auto_increment,
		name varchar(20),
		english int,
		chinese int
)
insert into exam values (null, '张三',85,74);
insert into exam values (null,'李四',95,90);
insert into exam values (null, '王五',89,84);
-- 查询所有记录:
	select * from exam;
-- 查询这个班级人的姓名和英语成绩:
	select name,english from exam;
-- 查询英语成绩,将重复英语成绩去掉:
	select distinct english from exam;
-- 显示这个人的名称和对应总成绩的分数:(使用as起别名,as可以省略)
	select id,name,english+chinese+math as Allscore from exam;

2.条件查询
– where语句后面可以加条件限制,条件关键字: =,>,>=, <, <=, <>
– 模糊查询like+通配符:_下划线(前面只能有一个字符),%匹配(前面可有任意多个字符)
– 使用and,or
– 使用in,not in
– between…and…(数值类型和日期类型)
– is null,is not null:空值NULL比较的时候不能使用" ="号,必须使用is null
– 查询或条件中使用表达式:当查询需要对选出的字段进行进一步计算,可以在数字列上使用算术表达式(+,-,*,/)