SQL结构化查询语言
SQL是在关系型数据库上执行的数据操作,检索及维护所使用的标准语言。
定义数据(DDL),操纵数据(DML),控制数据(DCL),查询数据(DQL),事务控制(TCL)
四.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设置权限
可以使用管理用户认证和权限来添加删除用户,以及设置添加删除等权限.
2.使用命令行来设置权限
win+R打开cmd
小练习
创建用户:密码必须使用字符串,不可以不加双引号
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
– 查询或条件中使用表达式:当查询需要对选出的字段进行进一步计算,可以在数字列上使用算术表达式(+,-,*,/)