0%

SQL学习笔记

MySQL基本信息

安装

参考各类视频,安装失败要卸载重装

卸载

参考各类视频,要删除一些隐藏文件才能卸载干净

配置

  • MySQL服务启动

    • 手动。
    • cmd—> services.msc 打开服务的窗口
    • 使用管理员打开cmd

      1
      net start mysql : 启动mysql的服务
      1
      2
      3

      ```bash
      net stop mysql:关闭mysql服务

登陆

1
mysql -u[user] -p[password]
1
mysql -h[IP] -u[user] -p[password]
1
mysql --host=[IP] --user=[user] --password=[password]

输入密码时可以在-p / —password后回车输入密文

退出

1
exit
1
quit

MySQL目录结构

  • MySQL安装目录:
    • 配置文件 my.ini
  • MySQL数据目录:datadir=”C:/ProgramData/MySQL/MySQL Server x.x/Data/“
    • 概念
      • 数据库:文件夹
      • 表:文件
      • 数据:数据

SQL分类

;结尾,--+space# 为注释,或者/*``*/多行注释,不区分大小写,建议关键字大写。这里使用小写便于记忆

DDL(Data Definition Language)

操作库


  • Create
1
2
3
create database [库名]; # 使用默认字符集创建数据库
create database [库名] character set [字符集,如UTF8]; # 指定字符集创建数据库
create database if not exists [库名] character set [字符集,如UTF8]; # 判断数据库是否存在并创建
  • Retrieve
    1
    2
    show databases; # 显示所有数据库
    show create database [库名]; # 显示创建该数据库的语句
  • Update
    1
    alter database [库名] character set [字符集,如UTF8]; # 修改数据库字符集
  • Delete
    1
    2
    drop database [库名]; # 删除数据库
    drop database if exists [库名]; # 如果数据库存在,删除
  • 使用数据库
    1
    2
    select database(); # 查询当前使用的数据库
    use [库名]; # 使用数据库

    操作表://注释参照操作库的指令


  • Create
    1
    2
    3
    4
    5
    6
    create table [表名](
    [列名1] [数据类型1],
    [列名2] [数据类型2],
    ...
    [列名n] [数据类型n]
    );
    数据类型(可以自己搜索相关资料,这里整理一些常用的)
- int # 整型
- double # 也有float
    - score double(5,2) # 5位数,小数点后保留2位
- date # 日期 只包含年月日 yyyy-MM-dd
- datatime # 日期 包含年月日时分秒 yyyy-MM-dd HH:mm:ss
    - timestamp # 时间戳类型 同datatime ,如果将来不给这个字段赋值,则自动使用当前系统时间
- varchar # 字符串类型
    - name varchar(20) # 最大20个字符

类似的,可以使用与创建库相似的命令,比如指定字符集,if not exists 等等

特别的,还有一个复制表的操作

1
create table [表名] like [被复制表名]; # 复制表

  • Retrieve
    1
    2
    3
    show tables;
    show create table [表名];
    desc [表名]; # 查询表结构
  • Update
    1
    2
    3
    4
    5
    6
    alter [表名] rename to [新表名]; # 重命名
    alter table [表名] character set [字符集,如UTF8];
    alter table [表名] add [列名] [数据类型]; # 增加一列
    alter table [表名] change [列名] [新列名][新数据类型]; # 修改列名与类型
    alter table [表名] modify [列名] [新数据类型]; # 修改某列数据类型
    alter table [表名] drop [列名]; # 删除列
  • Delete
    1
    2
    drop table [表名];
    drop table if exists [表名];
  • 使用数据库
    1
    2
    select database(); # 查询当前正在使用的数据库名称
    use 数据库名称; # 使用数据库

    DML(Data Manipulation Language)

  • 1
    insert into [表名]([列名1], ... , [列名n]) values([值1], ... ,[值n]);
  • 1
    2
    delete from [表名] <where [条件]>; # <>为可选参数,若不加条件,逐条删除表中所有数据
    truncate table [表名]; # 删除表,再创建一样的空表
  • 1
    update [表名] set [列名1]=[值1] , ... <where [条件]>; # 修改符合条件的对应列名的值

    DQL(Data Query Language)

    语法
    1
    select * from [表名]; # 查询表中所有数据
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    select  <distinct>
    [字段列表]
    from
    [表名列表]
    <where>
    [条件列表]
    <group by>
    [分组字段]
    <having>
    [分组后的条件]
    <order by>
    [排序方式]
    <limit>
    [分页限定]
    ; # 列表按逗号分隔,表名列表中查询符合条件的字段列表并按照分组字段分好组,按照排序方式及分页条件分组后的条件输出
  • 基础查询

    • 多个字段的查询
      select 字段名1,字段名2… from 表名;
      • 注意:
        • 如果查询所有字段,则可以使用*来替代字段列表。
    • 去除重复:

      • distinct
    • 计算列

      • 一般可以使用四则运算计算一些列的值。(一般只会进行数值型的计算)
      • ifnull(表达式1,表达式2):null参与的运算,计算结果都为null
        • 表达式1:哪个字段需要判断是否为null
        • 如果该字段为null后的替换值。
  • 起别名:

          * as:as也可以省略
    
  • 条件查询

    • where子句后跟条件
    • 运算符
      • > 、< 、<= 、>= 、= 、<>
      • BETWEEN…AND
      • IN( 集合)
      • LIKE:模糊查询
      • 占位符:
        • _:单个任意字符
        • %:多个任意字符
      • IS NULL
      • and 或 &&
      • or 或 ||
      • not 或 !

DCL(Data Control Language)

待更新

导入导出*.sql

window下

1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u root -p hotel > E:/hotel.sql

2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u dbuser -p dbname users> dbname_users.sql

3.导出一个数据库结构
mysqldump -u dbuser -p -d —add-drop-table dbname >d:/dbname_db.sql
-d 没有数据 —add-drop-table 在每个create语句之前增加一个drop table

4.导入数据库
常用source 命令
进入mysql数据库控制台,如
mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:/dbname.sql

1. 导入数据到数据库

mysql -uroot -D数据库名

1. 导入数据到数据库中得某个表

mysql -uroot -D数据库名 表名

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
create database if not exists demo character set utf8;
use demo;
create table user(id int,name varchar(20),gender varchar(1));
insert into user(id,name,gender) values(01,'张三','男');
insert into user(id,name,gender) values(02,'李四','女');
delete from user where id=2;
update user set name='王五',gender='男' where id=1;
insert into user(id,name,gender) values(02,'李四','女');
insert into user(id,name,gender) values(03,'张三','男');
select id,name from user;
select * from user where name like '张%';
select * from customer where TO_DAYS(CURDATE())-TO_DAYS(FROM_UNIXTIME(create_time))<7;
select * from customer where to_days( now( ) ) - to_days(checkin) =#{day};
select * from customer where period_diff( date_format( now( ) , '%Y%m' ) , date_format( checkin, '%Y%m' ) ) =#{month};
1
2
3
4
5
6
7
create database hotel character set utf8;
use hotel;
CREATE TABLE `coupon` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL COMMENT '优惠券名',
PRIMARY KEY (`id`)
) COMMENT='优惠券';
-----------看到底线啦 感谢您的阅读-------------