数据库常用字段

发布时间 2023-05-21 17:16:59作者: 肥猫不是猫

1.数据库的基本概念

1.数据库英文:DataBase,简称DB

2.数据库是什么?

  • 用于存储和管理数据的仓库

3.数据库的特点:

  • 持久化存储数据的(相当于一个文件系统)
  • 方便存储和管理数据
  • 使用了统一的方式操作数据库--SQL

4.常见的数据库软件

Oracle、MySQL、SQL Server、MongoDB、DB2(常用在银行系统中),详细的信息可以找度娘

2.MySQL数据库软件(Oracle公司)

1.安装(我是在CSDN上找的博文,清水,然后搜博文MySQL5.5的安装与配置(超详细图文教程))

2.卸载

  • 去MySQL的安装目录找到my.ini文件
    • 复制datadir="自己安装的路径"
  • 卸载MySQL
    • 控制面板--》程序与功能--》MySQL,进行卸载
  • 删除C:/ProgramData目录下的MySQL文件夹

3.配置

  • MySQL服务启动
    • 手动
    • cmd-->services.nsc 打开服务的窗口
    • 使用管理的权限打开cmd
      • net start mysql:启动MySQL服务
      • net stop mysql:关闭MySQL服务
  • MySQL登录
    • mysql -uroot -proot
    • mysql -hip地址 -uroot -p连接目标的密码
    • musql --host=ip --user=root --password=连接目标的密码
  • MySQL退出
    • exit
    • quit

配置均在黑窗口中实现

4.MySQL目录结构

  • MySQL安装目录
    • 配置文件
  • MySQL数据目录
    • 数据库名词解释
      • 数据库:文件夹
      • 表:文件
      • 数据:

3.SQL

1.SQL:Structure Query Language(结构化查询语言),即定义了操作所有关系型数据库的规则,每种数据库都有着不同的操作方式,不一样的地方称为"方言"

2.SQL通用语法(show database)(黑窗口)

  • SQL语句可以单行或多行书写,以分号结尾
  • 可使用空格和缩进来增强语句的可读性
  • MySQL数据库语句不区分大小写,关键字建议使用大写
  • 三种注释
    • 单行注释:-- 注释内容或# 注释内容(MySQL特有)
    • 多行注释:/* 注释内容 */

3.SQL分类

  • DDL:数据定义语言(操作数据库、表)
  • DML:数据操纵语言(增删改表中的数据)
  • DQL:数据查询语言(查询表中数据)
  • DCL:数据控制语言(授权)

4.SQLyog图形化界面软件使用

1.下载与安装

链接
提取码:mfii

*按一般软件的安装就行,不需要配置环境变量,与黑窗口相比较为简单

5.DDL:操作数据库、表

1.操作数据库:CRUD

  • C(Create):创建
    • 创建数据库:create database 数据库名称;
    • 创建数据库,判断不存在,再创建:create database if not exists 数据库名称;
    • 创建数据库,并指定字符集:create database 数据库名称 character set 字符集名;
    • 练习:创建db4数据库,判断是否存在,并指定字符集为gbk(create database if not exists db4 character set gbk;)
  • R(Retrieve):查询
    • 查询所有数据库的名称:show databases
    • 查看某个数据库的字符集:show create database 数据库名称
  • U(Update):修改
    • 修改数据库的字符集:alter database 数据库名称character set 字符集名称;
  • D(Delete):删除se
    • 删除数据库:drop database 数据库名称;
    • 判断数据库存在,存在再删除:drop database if exists 数据库名称;
  • 使用数据库
    • 查询正在使用的数据库名称:select database();
    • 使用数据库:use 数据库名称;

2.操作表

  • C(Create):创建

    • 数据库类型(常见)

      • int整数类型:age int,

      • varchar字符串:name varchar(20)代表的是姓名最大20个字符

      • double小数类型:score double(5,2)(五位数,保留两位小数)

      • date日期:只包含年月日,yyyy-MM-dd

      • datetime日期:包含年月日时分秒,yyyy-MM-dd HH:mm:ss

      • timestamp时间戳类型:包含年月日时分秒,yyyy-MM-dd HH:mm:ss

        如果不给这个字段赋值,或者赋值为null,则默认使 用当前的系统时间来自动赋值

      • 创建表

      create table 表名(
        列名1 数据类型1,
        列名2 数据类型2,
        列名3 数据类型3,
        列名n 数据类型n
      );
      
      • 创建表时最后一列不需要加逗号
        • 复制表:create table 表名 like 被复制的表名;
  • R(Retrieve):查询

    • 查询某个数据库中所有的表名称:show tables;
    • 查询表名称:desc 表名;
  • U(Update):修改

    • 修改表名:alter table 表名 rename to 新的表名;
    • 修改表的字符集:alter table 表名 character set 字符集名称;
    • 添加一列:alter table 表名 add 列名 数据类型;
    • 修改列名称 类型:
      • alter table 表名 change 列名 新列名 新数据类型;
      • alter table 表名 modify 列名 新数据类型;
    • 删除列:alter table 表名 drop 列名;
  • D(Delete):删除

    • drop table 表名

    • drop table 表名 if exists 表名

6.DML(增删改表中数据)

1.添加数据

  • 语法:insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);

  • 注意:

    • 列名和值要一一对应
    • 如果表名后不定义列名,则默认给所有列添加值:insert into 表名 values(值1,值2,...值n)
    • 除了数字类型,其他类型需要使用引号(单双都可以)引起来

2.删除数据

  • 语法:delete from 表名 【WHERE 条件】
    • 如果不加条件,则删除表中所有记录
    • 如果要删除所有记录
      • delete from 表名;--不推荐使用,有多少记录就会执行多少次删除操作
      • TRUNCASE TABLE 表名;--先删除表,后创建一张一样的表

3.修改数据

  • 语法:update 表名 set 列名1=值1,列名2=值2,...【WHERE 条件】
  • 注意:
    • 如果不加任何条件,则会将表中数据全部更改

7.DQL:查询语句(查询表中的记录)

select * from 表名

  • 语法:
    • select 字段列表
    • from 类名列表
    • where 条件列表
    • group by 分组字段
    • having 分组之后的条件
    • order by 排序
    • limit 分页限定

1.基础查询

  • 多个字段的查询:select 字段名,字段名2...from 表名;

如果查询所有字段,则可以使用*来代替字段列表

  • 去除重复:distinct

  • 计算列:

    • 一般可以使用四则运算计算一些列的值(一般只计算数值类的计算)

    • ifnull(表达式1,表达式2):null参与的运算,计算结果都为null,前面的表达式为需要判断是否为null的,后者为null的替换值

  • 起别名:as,但as也可以省略

2.条件查询

  • where字句后跟条件
  • 运算符
    • 大于,小于,小于等于,大于等于,等于
    • BETWEEM...AND
    • IN(集合)
    • LIKE:模糊查询 占位符
      • _:单个任意字符
      • %:多个任意字符
    • IS NULL
    • and或&&
    • or或||
    • not或!

3.排序查询

  • 语法:order by 字句
    • order by 排序字段1 排序方式1,排序字段2 排序方式2...
  • 排序方式:
    • ASC:升序,默认的
    • DESC:降序
  • 注意
    • 如果有多个排序条件,则当前面的条件值一样时,才会判断第二条件

4.聚合函数:将一列数据作为一个整体 ,进行纵行的计算

  • count:计算个数
    • 一般选择非空的列:主键
    • count(*)
  • max:计算最大值
  • min:计算最小值
  • sum:计算
  • avg:计算平均值
  • 注意
    • 聚合函数的计算,排除null值
      • 选择不包含非空的列
      • 使用IFNULL函数

5.分组查询

  • 语法:group by 分组字段;
  • 注意
    • 分组之后查询的字段:分组字段 聚合函数
    • where和having的区别
      • where在分组之前进行限定,如果不满足条件,则不参与分组
      • having在分组之后进行限定,如果不满足结果,则不会被查询出来
      • where后不可以跟聚合函数,having可以进行聚合函数的判断

6.分页查询

  • 语法:limit 开始的索引,每页查询的条数;
  • 公式:开始的索引 = (当前的页码-1)* 每页的条数
  • limit是一个MySQL的"方言"

8.约束

1.概念:对表中的数据进行限定,保证数据的完整性,有效性和完整性

2.分类

  • 主键约束(primary key)

  • 非空约束(not null)

    • 创建-表时添加约束

      CREATE TARLE stu(
      	id INT,
      	NAME VARCHAR(20) NOT NULL
      );
      
    • 创建表完后,添加非空约束

      ALTER TABLE stu MONDIFY NAME VARCHAR(20) NOT NULL;
      
    • 删除name的非空约束

      ALTER TABLE stu MODIFY NAME VARCHAR(20);
      
  • 唯一约束(unique)

  • 外键约束(foreign key)

9.数据库语法

SQL 语句 语法
AND / OR SELECT column_name(s)FROM table_nameWHERE condition AND|OR condition
ALTER TABLE ALTER TABLE table_name ADD column_name datatype or ALTER TABLE table_name DROP COLUMN column_name
AS (alias) SELECT column_name AS column_alias FROM table_name or SELECT column_name FROM table_name AS table_alias
BETWEEN SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2
CREATE DATABASE CREATE DATABASE database_name
CREATE TABLE CREATE TABLE table_name ( column_name1 data_type, column_name2 data_type, column_name2 data_type, ... )
CREATE INDEX CREATE INDEX index_name ON table_name (column_name) or CREATE UNIQUE INDEX index_name ON table_name (column_name)
CREATE VIEW CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition
DELETE DELETE FROM table_name WHERE some_column=some_value or DELETE FROM table_name (Note: Deletes the entire table!!) DELETE * FROM table_name (Note: Deletes the entire table!!)
DROP DATABASE DROP DATABASE database_name
DROP INDEX DROP INDEX table_name.index_name (SQL Server) DROP INDEX index_name ON table_name (MS Access) DROP INDEX index_name (DB2/Oracle) ALTER TABLE table_name DROP INDEX index_name (MySQL)
DROP TABLE DROP TABLE table_name
GROUP BY SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name
HAVING SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value
IN SELECT column_name(s)
INSERT INTO INSERT INTO table_name VALUES (value1, value2, value3,....) or INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,....)
INNER JOIN SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name
LEFT JOIN SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
RIGHT JOIN SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name
FULL JOIN SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name
LIKE SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern
ORDER BY SELECT column_name(s) FROM table_name ORDER BY column_name [ASC|DESC]
SELECT SELECT column_name(s) FROM table_name
SELECT * SELECT * FROM table_name
SELECT DISTINCT SELECT DISTINCT column_name(s) FROM table_name
SELECT INTO SELECT * INTO new_table_name [IN externaldatabase] FROM old_table_name or SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_table_name
SELECT TOP SELECT TOP number|percent column_name(s) FROM table_name
TRUNCATE TABLE TRUNCATE TABLE table_name
UNION SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2
UNION ALL SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2
UPDATE UPDATE table_name SET column1=value, column2=value,... WHERE some_column=some_value
WHERE SELECT column_name(s) FROM table_name WHERE column_name operator value