MySQL数据库

发布于:2025-04-09 ⋅ 阅读:(25) ⋅ 点赞:(0)

一,MySQL的常用命令

查看当前所有的数据库:show  databases

选择指定的库:use  库名

查看当前的所有表:show  tables

查看其他库的所有表:show  tables  from  库名

查看mysql版本:select  version()

二,结构化查询语言(sql)

结构化查询语言(Structured Query Language)简称SQL,是一种数据库程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统.

SQL语言特点:
不是某个特定数据库专有的语言,几乎所有关系型数据库都支持SQL

简单易学,灵活使用可以进行复杂和高级的数据库操作

1.数据结构定义语言DDL(Data  Definition  Language):

用来创建和修改数据库结构的语言

常用语句:creat,alter,drop,rename

创建,删除数据库

        创建:CREATE DATABASE [if not exists] 数据库名 [ CHARSET utf8]

        删除:DROP DATABASE 数据库名 / [IF EXISTS数据库名]

        修改:ALTER DATABASE 数据库名 CHARSET gbk

数据库的基本概念:

(1)数据表:

        表(table)是构成关系型数据库的基本元素。表是由行和列组成的。表中的列被看成是这些记录的字段,表中的行是一条记录,也就是一条数据

(2)字段(column)

        字段是表中的一列,用于保存每条记录的特定信息。

(3)记录(row)

        记录时表里的一行数据

设计表:

创建表之前,需明确表的特征:

(1)表明

(2)表中的字段

(3)字段的数据类型和长度

(4)约束

数据类型:

        字符:

char(n)n = 5,长度为5的定长字符串,固定存储5个字符,即使只存储一个字符,也是占5个字符空间

varchar(n),最大字节长度为n的可变长字符串n = 5最大上限能存储5个字符,实际存储几个字符,就占实际的空间

        日期

date  日期,年月日 

datetime  时间,年月日 时分秒

        整数:

        浮点

decimal

数据类型(M,D):

M:精度,数据的总长度

D:标度,小数点后的长度

        长文本字符

TINYTEXT:最大长度255个字符(2^8-1)

TEXT:最大长度65535(2^16-1)

MEDIUMTEXT:最大长度16777215(2^24-1)

LONGTEXT:最大长度4294967295(2^32-1)

约束:

        主键:

在一张表中代表唯一的一条记录,不能为空,不能重复

        约束:

PRIMARY  KEY:设置为主键约束

NOT  NULL:不能为空约束

UNIQUE:唯一性约束

检查约束:设置条件(check())

外键约束:

AUTO_INCREMENT

主键自动增长,设置为自动增长时,只能为整数类型

默认值

DEFAULT default_value

字段解释

comment'注释'

eg:

-- 创建数据库
CREATE DATABASE IF NOT EXISTS schooldb CHARSET utf8
-- 删除数据库
DROP DATABASE schooldb
-- 修改数据库字符编码
ALTER DATABASE schooldb CHARSET utf8

-- 注意mysql数据库名字创建后不支持修改

/*
 创建表
 表是数据中基本的组成单位
 由列和行构成
   列(column)/字段,是要存储的具体的信息
   学生信息:
    学号,姓名,性别,电话,生日,身高,注册时间....
   行(row)/记录
    就是表中的一条数据
    
  创建表:    
    确定表名(存储哪类信息) 学生信息表
    确定列名(具体的信息) 学号,姓名,性别,电话,生日,身高,注册时间
    确定列的数据类型和长度
    确定约束(唯一约束,不能为空...)
    
    mysql中支持的数据类型:
      字符型:
        char(n)  存储定长为n个字符, 一般用于存储固定长度的字符串,
                  即使只存储了一个字符,也会占用n个空间
        varchar(n) 存储最大上限为n个字符,用于存储变长的字符串,
                    实际存储几个字符,占用几个空间          
       日期类型:
        date:  日期 年月日
        datetime: 时间 年月日时分秒
        
        数值类型:
          整数
          TINYINT
          SMALLINT
          int (常用)
          浮点:
          decimal(M,D)
          
         长文本字符(存储新闻,小说)
           TINYTEXT:最大长度255个字符(2^8-1)
	   TEXT:最大长度65535(2^16-1)
	   MEDIUMTEXT:最大长度16777215(2^24-1)
	   LONGTEXT最大长度4294967295(2^32-1)
*/  
-- 学号,姓名,性别,电话,生日,身高,注册时间
CREATE TABLE student(
   num INT,
   NAME VARCHAR(8),
   gender CHAR(1),
   phone CHAR(11),
   birthday DATE,
   height DECIMAL(3,2),
   regtime DATETIME
)

DROP TABLE student


/*
   创建表,并为表设置约束条件
    主键约束: 一张表中只能有一个主键约束,
              添加了主键约束的列不能为空,不能重复
              PRIMARY KEY设置列为主键
              AUTO_INCREMENT设置主键列的值自动增长,只能为主键列设置,而且主键列类型为整数
              
    唯一约束: 不能重复,可以为多个列设置   UNIQUE
    非空约束: 值不能为空,可以为多个列设置 NOT NULL
    检查约束: 值需要满足设定条件,可以为多个列设置  CHECK(height<2.55)
    外键约束(多表)
*/
CREATE TABLE student(
  id INT PRIMARY KEY AUTO_INCREMENT COMMENT'主键',
  num INT UNIQUE NOT NULL COMMENT'学号',
  NAME VARCHAR(8) NOT NULL COMMENT'姓名',
  gender CHAR(1) NOT NULL DEFAULT '男',
  phone CHAR(11) UNIQUE NOT NULL,
  birthday DATE,
  height DECIMAL(3,2) CHECK(height<2.55),
  regtime DATETIME NOT NULL
)

-- 删除表 DROP TABLE 表名
DROP TABLE student

-- 修改表名
RENAME TABLE stu TO student

2,数据操纵语言DML(Data Mainpulation Language)

(1)插入方式

此处使用上文创建的学生表为例

分为三种方式,如下处代码

-- insert
-- 方式1: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n);
INSERT INTO student(num,NAME,gender,phone,birthday,height,regtime)
             VALUE(100,'张三',"男",'152222222','2005-03-05',1.88,NOW())
-- 方式2: INSERT INTO 表名 set 列名1=值1,..列名n=值n;       
INSERT INTO student SET num=101,NAME='李四',gender='女',phone='1522222223',regtime=NOW()  

-- 方式3: INSERT INTO 表名(列1,列2……,列n) VALUES(值1,值2…..,值n),(值1,值2…..,值n);
-- 批量插入
INSERT INTO student(num,NAME,phone,regtime)
   VALUES(102,'jim','11111',NOW()),
         (103,'tom','222',NOW()),
         (104,'jery','3333',NOW())

(2)修改数据

-- update
UPDATE student SET birthday='2008-8-8',height=1.89  -- 没有条件的修改,注意没有条件会修改表中所有数据
UPDATE student SET birthday='2008-9-8',height=1.79  WHERE id=8

(3)删除数据

-- delete 
DELETE FROM student WHERE id = 8
DELETE FROM student 

此外还有:

TRUNCATE TABLE 表名称 ; 清空整张表 建议使用