MySQL基础知识

SQL 的概念

1、什么是 SQL

Structured Query Language 结构化查询语⾔

2 、SQL 作⽤

1. 是⼀种所有关系型数据库的查询规范,不同的数据库都⽀持。

2. 通⽤的数据库操作语⾔,可以⽤在不同的数据库中。

3. 不同的数据库 SQL 语句有⼀些区别 -- 称为“⽅⾔”。

3 、SQL 语句分类

1. Data Definition Language (DDL 数据定义语⾔), 如:建库,建表

2. Data Manipulation Language(DML 数据操纵语⾔),如:对表中的记录操作增删改

3. Data Query Language(DQL 数据查询语⾔),如:对表中的查询操作

4. Data Control Language(DCL 数据控制语⾔),如:对⽤户权限的设置

4、 MySQL 的语法

1. 每条语句以分号结尾。 2. SQL 中不区分⼤⼩写,关键字中认为⼤写和⼩写是⼀样的

注释的语法 说明 

-- 注释内容            单⾏注释(--后必须加空格)

/* 注释内容 */         多⾏注释

# 注释内容             这是MySQL特有的注释⽅式

DDL操作:

-- 查看当前所有数据库
Show databases;

-- 创建数据库
create database java2106;
-- mysql独特写法
create database if not exists java2106;

-- 使用数据库 / 切换数据库(要操作哪个数据库)
use java2106;
use test;

-- 删除数据库
-- drop database test;
drop database if exists test;
-- 改变数据库字符集
alter DATABASE java2106 default charset=utf8;

-- select 全局函数()
select now();

/*操作table, 前提必须切换数据库  use xxx;
  1.创建
  2.删除
  3.修改
  
  数据类型: 
    1.字符/字符串: varchar(10)-最大10个字符  char(10)-固定10个字符
    2.整数: int(2)[mysql] number(2)[oracle]
    3.小数: double(3,1)-[mysql]最大值99.9  number(3,1)[oracle]
    4.时间: 年月日date  时分秒timestamp  年月日时分秒datetime
 */


-- 1.创建表 - 确定字段名(列), 确定字段类型
-- 表名全称: java2106.user

create table if not exists `user` (
    name varchar(20) comment '姓名', -- varchar(20)指的是长度最大20, comment指代字段说明
    age int(2),
    gender char(1),
    score double(3,1) comment '个人综合评分',
    birthday datetime
);

-- 2.查看表结构
desc user;

-- 3.查看所有的表
show tables;

-- 4.显示创建user表的sql语句
show create table user;
 

-- 5.创建一张和user相同的表
create table user1 like user;
desc user;

-- 6.修改表  alter
-- 6.1 添加新的字段  add
alter table user add (no int(2));
-- 6.2 修改原先字段的类型  modify
alter table user modify name varchar(10);
-- 6.3 删除字段  drop 
alter table user drop no;
-- 6.4 修改字段名  change
alter table user change gender sex char(1);

-- 7.重命名表
rename table user to user2;

-- 8.删除表
drop table user2;

DML 操作:


-- 1.向表中添加数据

insert into user1 values('张三', 23, '男', 78.9, '2021-07-13 13:23:45'); -- 值的顺序和字段顺序要一致
insert into user1 values('张三', 23, '男', 78.9, now());
insert into user1 values('张三', null, '男', 78.9, null);

-- values值的个数和顺序必须跟前面括号中的字段顺序一致
insert into user1(name, score, gender) values('张三', 78.9, '男');

-- mysql可以一次性添加多个记录

insert into user1 values('lucy', null, '男', 78.9, null),
                        ('tom', 18, '男', 78.9, null),
                        ('jack', 23, '男', 78.9, null),
                        ('rose', 45, '女', 78.9, null),
                        ('david', 32, '男', 78.9, null);

-- 2.修改数据

update user1 set name = 'jerry'; -- 修改所有数据
update user1 set name = 'jerry' where name='张三'; -- name=张三的才要修改(条件)
update user1 set age = 19, birthday=now() where name='lucy';

-- 3.删除数据

delete from user1 ; -- 删除全部记录
delete from user1 where name='jerry';

truncate user1; -- 删除全部

-- Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column.  To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect.

SET SQL_SAFE_UPDATES = 0; 


DQL操作:


-- 单表查询 select 
-- 查询全部
select * from emp; -- * 在执行时会解析成字段名,消耗资源
-- 查询指定字段
select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;
select empno,ename from emp;

-- 查询的字段可以直接计算, 字段起别名[as] 
select ename, sal*12 as salary from emp;
select ename, sal*12 salary from emp;

-- 查询的字段可以使用函数来操作
-- 函数: 数字相关, 字符串相关, 时间相关
select ename, date_format(hiredate, '%Y年%m月%d日') from emp;

SELECT DATE_FORMAT(now(), '%Y年%m月%d日');

-- 条件查询: 筛选 where
-- 查询薪资范围 > < >= <= = !=[<>]

select ename, sal from emp
 where sal > 2000;

select ename, sal from emp
 where sal <> 3000;


-- 条件 并且:and  或者:or
 

select ename, sal from emp where sal > 2000 and sal < 3000;
select ename, sal from emp where sal < 2000 or sal > 3000;
-- sal>=2000 and sal<=3000
select ename, sal from emp where sal between 2000 and 3000;
-- null 表示无穷大或者无穷小, 不能判断范围, 也不能计算
-- is null - 是null值     is not null - 不是null值
select ename from emp where mgr is null;

-- 名字长度>4的人 - 函数结果可以作为条件
select ename from emp where length(ename) > 5;

-- 名字是 SMITH 的人
select ename from emp where ename = 'SMITH';
-- 首字母是 S 的人 like-模糊查询
-- %(任意字符任意长度)  _(一个任意字符)

select ename from emp where ename like 'S%';
select ename from emp where ename like '_A%';
select ename from emp where ename like '%A%';


-- ESCAPE '*'  转义
SELECT ENAME FROM EMP WHERE ENAME LIKE 'A*_SMITH' ESCAPE '*';

-- sal > 2000,3000,4000中的任意一个值
select ename, sal from emp where sal > any(2000,3000,4000);
-- sal > 2000,3000,4000中的每一个值
select ename, sal from emp where sal > every(2000,3000,4000);

上一篇:MySQL常用函数


下一篇:MySQL --sql语句部分