学习数据库第一天

MYSQL基础语法

什么是数据库

存储数据的仓库,本质也是一个文件

存储数据的方式

1.数据保存在内存

存储速度快

断电/程序退出,数据就清除了,内存价格贵

2.数据保存在普通文件

永久保存

增删改查效率低

3.数据保存在数据库中

永久保存

SQL语句方便操作数据库,数据库是对大量信息进行管理的高效的解决方案

常见数据库

Oracle:大型收费数据库

MYSQL:开源免费中小型数据库

DB2 , SQLServer, SyBase, SQLite

MySQL的启动和关闭

启动:

net stop mysql

停止:

net start mysql

退出:

exit

登录:

mysql -u账号 -p密码
mysql -hip地址 -u账号 -p密码

SQL语句的分类和语法

SQL作用

通过SQL语句可以方便操作数据库、表、数据。

SQL是数据库管理系统都需要遵循的规范。不同数据库上产厂商都支持SQL语句。

SQL语句分类
  1. DDL数据定义语言

    用来定义数据库对象。关键字:create,drop,alter等

  2. DML数据操作语言

    用来对数据进行增删改。关键字:insert,delete,update等

  3. DQL数据查询语言

    对数据进行查询。关键字:select

  4. DCL数据控制语言

SQL通用语法
  1. SQL可以单行或者多行书写,以分号结尾。

  2. 可以使用空格缩进增强语句可读性。

  3. MySQL数据库SQL语句不区分大小写,关键字建议大写。

  4. 3种注释

    单行注释:-- 注释

    多行注释:/* 注释 */

    MYSQL特有单行:#注释

DDL创建数据库(重要)

  1. 直接创建数据库

    CREATE DATABASE 数据库名;
    
  2. 判断是否存在并创建数据库

    CREATE DATABASE IF NOT EXISTS 数据库名;
    
  3. 创建数据库并指定字符集为gbk

    CREATE DATABASE 数据库名 DEFAULT CHARACTER SET gbk;
    

DDL修改和删除数据库(重要)

  1. 修改

    ALTER DATABASE 数据库名 DEFAULT CHARACTER SET 新字符集;
    
  2. 删除

    DROP DATABASE 数据库名;
    
    

DDL查看数据库

  1. 查看

    SELECT DATABASE();
    
    
  2. 切换

    USE 数据库名;
    
    

DDL操作表

前提先使用某个数据库

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

MySQL数据类型

常用数据类型:int,double,varchar,date

查看表
SHOW TABLES;

查看表结构
DESC 表名;

查看创建表的SQL语句
SHOW CREATE TABLE 表名;

删除表
快速创建一个表结构相同的表
CREATE TABLE 表名 LIKE 其他表;

  1. 直接删除表

    DROP TABLE 表名;
    
    
  2. 判断是否存在并删除

    DROP TABLE IF EXISTS 表名;
    
    

DDL修改表结构

  1. 添加表一列

    ALTER TABLE 表名 ADD 字段名 字段类型;
    
    
  2. 修改字段类型

    ALTER TABLE 表名 MODIFY 字段名 新类型;
    
    
  3. 修改字段名和类型

    ALTER TABLE 表名 CHANGE 字段名 新字段名 新类型;
    
    
  4. 删除一列

    ALTER TABLE 表名 DROP 字段名;
    
    

DML插入纪录(重要)

插入全部字段
  • 所有字段名都写出来

    INSERT INTO 表名(字段名1,字段名2,字段名3,...)VALUES(1,2,3,...);
    
    
  • 不写字段名

    INSERT INTO 表名 VALUES(1,2,3,...);
    
    
插入部分字段
INSERT INTO 表名(字段名1,字段名2,...)VALUES(1,2,...);

注意
  1. 字段和值要对应,(类型、数量)
  2. 值的大小要在字段范围内
  3. 除了数值类型,其他类型一定要有引号,建议单引号
  4. 如果插入空值,可以不写字段或对应值写NULL

DOS命令窗口操作数据乱码问题

DOS命令窗口编码为GBK

解决方案:

  1. 快捷设置

    DOS命令行输入
    set name gbk;
    
    

    临时方案,退出dos命令行就失效了,每次要重新配置。

  2. 修改MySQL配置文件[不建议]

DML更新记录表

  1. 不带条件修改数据

    UPDATE 表名 SET 字段名=新的值;
    
    
  2. 带条件修改

    UPDATE 表名 SET  字段名=新的值 WHERE 条件;
    
    

DML删除数据

  1. 指定条件删除

    DELETE FROM 表名 WHERE 条件;
    
    
  2. 没有条件删除

    DELETE FROM 表名;
    
    

主键约束(重要)

作用

通过主键区分数据

通常不用业务字段作为主键,单独给每张表设计一个id字段,把id作为主键。只要不重复且非空。

创建主键

主键:PRIMARY KEY

特点
  • 必须包含唯一的值(不能重复)
  • 主键不能有NULL
创建主键方式
  1. 创建表的时候添加主键

    CREATE TABLE 表名(
     	字段名 字段类型 PRIMARY KEY
    );
    
    
  2. 在已有表中添加主键(不常用)

    ALTER TABLE 表名	ADD PRIMARY KEY(字段名);
    
    
删除主键
ALTER TABLE 表名 DROP PRIMARY KEY;

主键自增(重要)
字段名 字段类型 PRIMARY KEY AUTO_INCREMENT
-- 类型必须是数值型才能自增

DELETE和TRUNCATE的区别

delete只会删除表数据,表信息还在

truncate摧毁表并重建

唯一约束

让字段唯一,不能重复

字段名 字段类型 UNIQUE

非空约束

字段名 字段类型 NOT NULL

主键唯一非空,普通字段加非空唯一约束有区别吗?

一张表中只能有一个主键
一张表中可以有多个唯一和非空字段
主键才能自增,普通字段不能自增

默认值约束

如果这个字段不设置值,就是默认值

字段名 字段类型 DEFAULE 值

DQL没有条件的查询(重要)

查询不会更改数据。

普通查询
SELECT 字段名1,字段名2,... FROM 表名
SELECT * FROM 表名

别名查询
SELECT 字段名 AS 别名 FROM 表名 AS 别名
-- AS可以省略

清除重复值
SELECT DISTINCT 字段名 FROM 表名

查询结果参与式运算
SELECT 字段+数值 FROM 表名;
SELECT 字段+字段 FROM 表名;

蠕虫复制

将一张表的数据复制,插入到另一张表中

INSERT INTO 表名1 SELECT * FROM 表名2

具体操作

INSERT INTO 表名1(字段1,字段2) SELECT 字段1,字段2 FROM 表名2

DQL查询语句-条件查询(重要)

SELECT * FROM 表名 WHERE 条件
-- 比较运算符
< > <= >= != <>  
-- 逻辑运算符
&& AND || OR !
IS NOT NULL

IN关键字

SELECT * FROM 表名 WHERE 字段名 IN (1,2)
SELECT * FROM 表名 WHERE 字段名 NOT IN (1,2)

BETWEEN AND

SELECT * FROM 表名 WHERE 字段名 BETWEEN 值1 AND 值2
-- 前后开区间

模糊查询(重要)

SELECT * FROM 表名 WHERE 字段名 LIKE '通配符字符串通配符';

-- %表示任意多个字符
-- _表示一个字符


查询语句-排序(重要)

单列排序ORDER BY

SELECT * FROM 表名 ORDER BY 字段名 ASC|DESC;
--ASC升序
--DESC降序
--不写默认升序

组合排序

SELECT * FROM 表名 ORDER BY 字段1 ASC|DESC,字段2 ASC|DESC;
-- ASC升序
-- DESC降序
-- 不写默认升序聚合函数

查询语句-聚合函数(重要)

五个聚合函数
  • count:统计指定记录数,纪录为NULL不统计
  • sun:计算指定列的数求和,如果不是数值类型,计算结果为0
  • max:最大值
  • min:最小值
  • avg:平均值

聚合函数写在字段名的地方

聚合函数是以列为单位操作

SELECT 聚合函数 FROM 表名

查询语句-分组 (重要)

SELECT 字段 FROMGROUP BY 字段 WHERE 条件 HAVING 条件

having与where的区别

  • having是分组后进行过滤
  • where是分组前过滤
  • having后可以使用聚合函数
  • where后不能使用聚合函数

查询语句-limit(重要)

SELECT * FROM 表名 LIMIT 跳过的条数,显示的条数

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值