初始MySQL之基础语法

初识MySQL

数据的存储方式

存储位置优点缺点
内存速度快不能永久保存,数据是临时状态
⽂件数据可以永久保存操作数据不⽅便,查询某个数据
数据库1)数据可以永久保存2)查询速度快 3)对数据的管理⽅便占⽤资源,需要购买。

什么是数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
每个数据库都有一个或多个不同的 API 用于创建,访问,管理,搜索和复制所保存的数据。
我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。
所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:

1.数据以表格的形式出现
2.每行为各种记录名称
3.每列为记录名称所对应的数据域
4.许多的行和列组成一张表单
5.若干的表单组成database

控制台连接数据库

登录格式:

	mysql -u用户名 -p密码
	例:
	mysql -uroot -p123456

	mysql -hIP地址 -u用户名 -p密码
	例:
	mysql -h127.0.0.1 -uroot -p123456

	mysql --host=IP地址 --user=用户名 --password=密码
	例:
	mysql --h=127.0.0.1 --u=root --p=123456

	quit或exit #退出MySQL

数据库管理系统、数据库和表的关系

数据库管理程序(DBMS)可以管理多个数据库,⼀般开发⼈员会针对每⼀个应⽤创建⼀个数据库。
为保存应⽤中实体的数据,⼀般会在数据库创建多个表,以保存程序中实体 User 的数据。

结论:
1. ⼀个数据库服务器包含多个库
2. ⼀个数据库包含多张表
3. ⼀张表包含多条记录

SQL的概念

什么是SQL

Structured Query Language 结构化查询语⾔

SQL 作⽤

  1. 是⼀种所有关系型数据库的查询规范,不同的数据库都⽀持。
  2. 通⽤的数据库操作语⾔,可以⽤在不同的数据库中。
  3. 不同的数据库 SQL 语句有⼀些区别 – 称为“⽅⾔”。

SQL语句分类

1.DDL( 数据定义语⾔):Data Defined Language,如:建库,建表
2.DML( 数据操纵语⾔):Data Manipulation Language,如:对表中的记录操作增删改
3.DQL(数据查询语⾔):Data Query Language,如:对表中的查询操作
4.DCL(数据控制语⾔):Data Control Language,如:对⽤户权限的设置

MySQL语法

1.大小写不敏感
2.每一句sql最后一定要以 ; 结尾
3.注释
注释的语法说明
– 注释内容单⾏注释(–后必须加空格)
/* 注释内容*/ 多⾏注释
# 注释内容这是MySQL特有的注释⽅式

操作数据库

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

-- 创建数据库
create database java2106;

-- 使用数据库 / 切换数据库
use java2106;

-- 删除数据库
drop database java2106;

-- 查看当前数据库的字符集 charset
show variables like '%char%';

操作表结构

前提先使用某个数据库

创建表的格式

CREATE TABLE 表名 (
字段名 1 字段类型 1,
字段名 2 字段类型 2
);

MySQL数据类型

  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

具体操作

-- 创建user表包含name,age,gender,score,birthday字段
create table user(
name varchar(20) comment '姓名', -- varchar(20)指的是长度最大20
age int(2),
gender char(1),
score double(3,1) comment '个人综合评分',
birthday date
);

查看表

查看某个数据库中的所有表

SHOW TABLES;

查看表结构

DESC 表名;

查看创建表的SQL语句

SHOW CREATE TABLE 表名;

具体操作

-- 查看表结构
desc user;
-- 查看所有的表
show tables;
-- 显示创建user表的sql语句
show create table user;

快速创建⼀个表结构相同的表

语法

CREATE TABLE 新表名 LIKE 旧表名;

具体操作

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

desc user;

删除表

直接删除表

DROP TABLE 表名;

判断表是否存在,如果存在则删除表

DROP TABLE IF EXISTS 表名;

具体操作

-- 删除表user2
drop table user2;
-- 判断表是否存在并删除表user2
drop table user2 if exsts user2;

与直接删除的区别:如果表不存在,不删除,存在则删除

修改表结构

添加表列 ADD

ALTER TABLE 表名 ADD 列名 类型;

修改列类型 MODIFY

ALTER TABLE 表名 MODIFY 列名 新的类型;

修改列名 CHANGE

ALTER TABLE 表名 CHANGE 旧列名 新列名 类型;

删除列 DROP

ALTER TABLE 表名 DROP 列名;

修改表名

RENAME TABLE 表名 TO 新表名;

修改字符集 character set

ALTER TABLE 表名 character set 字符集;

具体操作

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

DML操作表中的数据

用于对表中记录进行增删改操作

插入记录

INSERT [INTO] 表名 [字段名] VALUES (字段值);
INSERT INTO 表名:表示往哪张表中添加数据
(字段名 1, 字段名 2, ...):要给哪些字段设置值
VALUES (值 1, 值 2, ...):设置具体的值

插⼊全部字段

-- 所有的字段名都写出来
INSERT INTO 表名 (字段名 1, 字段名 2, 字段名 3...) VALUES (值 1, 值 2, 值 3);
-- 不写字段名
INSERT INTO 表名 VALUES (值 1, 值 2, 值 3...);

插⼊部分数据

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

注:没有添加数据的字段会使⽤ NULL

具体操作

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

-- mysql可以一次性添加多个记录
insert into user1 values('lucy',null,'女',78.9,null),
					('tom',18,'男',78.9,null),
					('rose',19,'女',78.9,null),
					('jack',17,'男',78.9,null);

更新表数据

UPDATE 表名 SET 列名=值 [WHERE 条件表达式]
UPDATE: 需要更新的表名
SET: 修改的列值
WHERE: 符合条件的记录才更新
你可以同时更新⼀个或多个字段。
你可以在 WHERE ⼦句中指定任何条件。

删除数据

无条件删除

DELETE FROM 表名;

有条件删除

DELETE FROM 表名 WHERE 条件;

具体操作
– 删除数据
delete from user1; – 删除全部记录
delete from user1 where name = ‘jerry’;

DQL查询表中的数据

  • 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查询条件。
  • SELECT 命令可以读取一条或者多条记录。
  • 你可以使用星号(*)来代替其他字段,SELECT语句会返回表的所有字段数据
  • 你可以使用 WHERE 语句来包含任何条件。
  • 你可以使用 LIMIT 属性来设定返回的记录数。
  • 你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况- 下偏移量为0。

查询所有信息

SELECT * FROM 表名;

select * from emp;-- * 在执行时会解析成字段名,消耗资源 等价于==

select empno,ename,job,mgr,hiredate,sal,comm,deptno from emp;

查询指定列并可以进行计算

-- 查询的字段可以直接计算,字段起别名[as]

select ename,sal * 12 as salary from emp;

select ename,sal * 12 salary from emp;

查询并进行函数操作

-- 查询的字段可以使用函数来操作
-- 函数:数字相关,字符串相关,时间相关
select ename,data_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的使用

 -- 条件 并且: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;

is null 和 is not null

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

关键字in的使用

-- 在部门20的人
select ename,deptno from emp where deptno = 20;
-- 在部门20或30的人
select ename,deptno from emp where deptno = 20 or deptno = 30;
-- 不在部门20和30的人
select ename,deptno from emp where deptno not in (20,30);

模糊查询like “%”和“_”

-- 首字母是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%';
  • 你可以在 WHERE 子句中指定任何条件。
  • 你可以在 WHERE 子句中使用LIKE子句。
  • 你可以使用LIKE子句代替等号 =。
  • LIKE 通常与 % 一同使用,类似于一个元字符的搜索。
  • 你可以使用 AND 或者 OR 指定一个或多个条件。
  • 你可以在 DELETE 或 UPDATE 命令中使用 WHERE…LIKE 子句来指定条件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值