数据库基础3 SQL语言

数据库基础3 SQL语言

通用语法

  1. 可以单行或多行书写,以分号结尾。
  2. SQL语句可以使用空格缩进来增强可读性
  3. 不区分大小写
  4. 注释 使用# 或者 – 当同行注释

SQL分类

主要四类

分类全称说明
DDLDefinition数据定义语言,定义数据库对象
DMLManipulation数据操作语言,增删改
DQLQuery数据查询语言,查询表中记录
DCLControl数据控制语言,创建用户,控制访问权限

DDL

数据库操作

● 查询
show databases;
select database();
● 创建
create database if not exists **;

● 删除
drop database [if exists] **;
● 使用
use **;

表操作-查询

● 查询当前数据库所有表
show tables;
● 查询表结构
desc table_name;
● 查询表的建表语句
show create table table_name ;

表操作-创建

create table name(
name 数据类型,

)

表操作-数据类型

● 数值类型

类型大小有符号范围无符号范围
TINYINT1byte(-128,127)(0,255)
SMALLINT2byte(-32768,32767)
MEDIUMINT3byte(-8388608,8388607)
INT4byte
BIGINT8byte(-263,263-1)
FLOAT4byte
DOUBLE8byte
DECIMAL依赖于M精度(全数位数)和D标度(小数位数)

● 字符串类型

分类类型大小(bytes)描述
字符串类型 CHAR 0-255 定长字符串
VARCHAR 0-65535 变长字符串,但是性能较差
TINYCHAR 0-255 不超过255字符的二进制数据
TINYTEXT 0-255 短文本字符串
BLOB 0-65535长文本数据
TEXT 0-65535 长文本数据
MEDIUMBLOB 0-16777215中等长度文本数据
MEDIUMTEXT 0-16777215 中等长度文本数据
LONGBLOBT0-4294967295 极大文本数据
LONGTEXT 0-4294967295 极大文本数据

● 日期时间类型

类型大小范围格式描述
DATE31000-01-01 至 9999-12-31日期值
TIME3-839:59:59 至 839:59:59
YEAR11901- 2155
DATETIME81000-01-01 00:00:00 ----- 9999-12-31 23:59:59混合日期和时间值
TIMESTEP41970-01-01 00:00:00 ----- 2038-01-19 03:14:07时间戳

birthday date

案例 根据需求创建表

设计一张员工信息表,要求如下:

  1. 编号
  2. 员工工号
  3. 员工姓名
  4. 性别
  5. 年龄
  6. 身份证号码
  7. 入职时间
create table emp(
  id int comment 'identity number',
  work_id varchar(10) ,
  name varchar(10),
  gender char(1),
  age tinyint unsigned,
  idcard char(18) comment'身份证号',
  entrydate date comment '入职时间'
);

表操作-修改

● 添加字段

ALTER TABLE 表名 ADD 字段名 类型(长度) [COMMENT 注释] [约束];

● 修改数据类型

ALTER TABLE 表名 MODIFY 新字段名 类型(长度); 

● 修改字段名和字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度); 

● 删除字段

ALTER TABLE 表名 DROP 字段名; 

● 修改表名

  ALTER TABLE 旧表名 RENAME TO 新表名;

表操作-删除

● 删除表

DROP TABLE [IF EXISTS] 表名;

● 删除指定表,并重新创建表

TRUNCATE TABLE 表名;

删除表时,表中数据都会被删除。

DML

介绍

对数据库中表中的数据记录进行增删改
● 添加数据 INSERT
● 修改数据 UPDATE
● 删除数据 DELETE

添加数据

● 给指定字段添加数据

INSERT INTO 表名 (字段名1,...) VALUES (值1,...);

● 给全部数据添加数据

INSERT INTO 表名 VALUES (值1,...);

● 批量添加数据

INSERT INTO 表名 (字段名1,...) VALUES (值1,...),(值1,...);
INSERT INTO 表名 VALUES (值1,...),(值1,...);

注意:
● 插入数据时,指定的字段顺序需要与值的顺序一一对应
● 字符串和日期型数据应该包含在引号中
● 插入数据大小,应该在字段的规定范围内。

修改数据

删除数据

– 插入与修改字段数据类型

INSERT INTO employee (id, work_id, name, gender, age, idcard, entrydate, username)
    VALUES (1,'332','lIHUA','m',23,'1411231664825645548','2010-09-10','laoli');
select * from employee;
alter table employee change gender gender char(1) character set utf8 ;
alter table employee change name name varchar(10) character set utf8 ;
insert into employee
    VALUES (4,'034','庄sir','男',28,'1411231664825656478','2010-09-10','laocao'),
           (5,'035','黄sir','男',28,'1411231664985656478','2010-09-10','laohuang');

-- 更新
update employee set name = '庄仔',gender = '女'  where id = 4;
update employee set entrydate = '2009-01-02';

-- 删除符合条件数据
delete from employee where employee.gender = '女';
-- 删除所有员工
delete from employee;

DQL

介绍

DQL是数据查询语句,用来查询数据库中表的记录。
查询关键字:SELECT
语法

SELECT  字段列表
FROM    表名列表
WHERE    条件列表
GROUP BY  分组字段列表
HAVING    分组后条件列表
ORDER BY  排序字段列表
LIMIT     分页查询
基本查询
条件查询

● 语法
● 条件

比较运算符:

大于小于等于
BETWEEN … AND …
IN
LIKE
IS NULL

逻辑运算符:

AND
OR
NOT

聚合函数 (count 、max、min、avg、sum)

count 、max、min、avg、sum

分组查询

group by
● 分组之前过滤使用 where ,分组之后过滤使用having
● where 不能对聚合函数进行判断,having可以

排序查询

order by

-- 排序查询
-- 1.根据薪水对员工进行升序排序  ## 默认升序
select * from employees order by salary asc;
-- 2.根据入职时间,降序排序
select * from employees order by hiredate desc;
-- 3.根据薪水升序排序,若相同按照入职时间降序排序
select * from employees order by salary asc, hiredate desc ;
分页查询

LIMIT 起始索引, 查询记录数;
● 起始索引从0开始,起始索引 = (页码 - 1) * 每页显示记录数。
● 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
● 如果查询的是第一页可以省略。简写为 limit 10

执行顺序

首先执行 from
之后执行where 条件
之后执行 group by
之后查看select
之后看按什么排序 order by
最后执行分页顺序 limit

DCL

介绍

数据控制语句,管理数据库用户,控制数据库的访问权限。

管理用户

  1. 查询用户
USE mysql;
SELECT * FROM user;
  1. 创建用户
-- 创建用户  itcast , 只能在当前主机访问, 密码 123456
create user 'itcast'@'localhost' identified by '123456'; ## 默认没有权限
-- 创建用户 heima, 可以在任意主机访问数据库, 密码 wsdheima
create user 'heima'@'%' identified by 'wsdheima';
  1. 修改用户密码
-- 修改密码 heima 为 123456
alter user 'heima'@'%' identified with mysql_native_password by '13246';
  1. 删除用户
-- 删除用户
drop user 'heima'@'%';

权限控制

权限说明
ALL所以权限
SELECT查询数据
INSERT插入数据
UPDATE
ALTER
DROP
DELETE
CREATE
  1. 查询权限
  2. 授予权限
  3. 撤销权限
show grants for 'itcast'@'localhost';

grant all on myemployees.* to 'itcast'@'localhost';

revoke all on myemployees.* from 'itcast'@'localhost';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

写代码的信哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值