MySQL数据库创建以及基本的方法(8.0.22版本)
创建数据库
CREATE DATABASE school_db
CREATE DATABASE IF NOT EXISTS school_db
ALTER DATABASE school_db CHARSET utf8;设置编码方式
DROP DATABASE school_db;删除数据库
在MySQL中,创建的数据库不可改名
后缀名_db表示数据库的简称
数据库结构语言,sql语言,就是一种结构化查询语言,增删改查
是一种脚本语言,不需要编译,直接通过某种解释器解释执行
也就是说,通过命令直接执行SELECT FROM USER;
*/
#DDL数据定义语言,创建数据库,表
CREATE DATABASE school_db;
– create,创建数据库,db是后缀名,表示的是数据库
#如果不存在,IF NOT exits,新建一个数据库
CREATE DATABASE IF NOT exits schoole_db;
– charset utf8,编码方式
CREATE DATABASE IF NOT exits school_db CHARSET utf8;
#DROP database school_db; DROP删除数据库
– MySQL数据库中,不能修改数据库的名字
ALTER DATABASE school_db CHARSET utf8;
#ALTER 修改数据库的字符集
数据库中的表
创建数据库——创建各种数据库表
表由列组成,一列一列的,称之为字段,每一列类似于Java中的属性
表中的数据是按行存储的,每一行类似于Java中的对象(存储对象的各种信息)
数据库表——数据库基本存储单位
记录——一行信息,一行数据
字段——存储那个种类的信息
所有的关键字都是大写的
设计数据库表
必须明确一个数据库表存储一类信息,比如说,新建了一个学校的数据库,设计的数据库表,学生信息表,教师基本信息表,教师绩效表…
1 表名:学生信息表(存储学生基本信息)
2 具体信息:表中字段 name ,age 等精确,具体的信息
3 数据类型长度
4 约束(添加数据的限制)
设计表(数据类型)
字符:(关键字char,varchar大写,系统默认)
char(n)长度为n的字符(注:不是Java中的单个字符),定长为4,即使存储了一个字符也占据4个长度,即长度固定不可改变
varchar(n)长度可变的字符,当长度设置为n的时候,最大可存储n个字符,存储了1个字符长度就变为1
日期:
date 日期 年月日
DATETIME 时间 年月日时分秒
整数:
TINYINT 1个字节 -128——127
SMALLINT 2个字节 -32768 ——32767
MEDIUMINT 3个字节 -8388608 ——8388607
INT 4个字节 -21亿——21亿
BIGINT 8个字节 -9223372036854775808 ——9223372036854775807
浮点:
FLOAT 4个字节 单精度 float(5,2)表示总长为5,整数3位,小数2位
DOUBLE 4个字节 双精度 double(5,2)表示总长为5,整数3位,小数2位
BOLD:
大文本,存储图片,新闻
约束:
主键约束 PRIMARY KEY 主键不能为空,不能重复,1个表中只能有1个主键
不能为空约束 NOT NULL 一个表中可以设置多个不能为空的约束
唯一约束 表示该表中的列中的数据唯一,一个表中可以设置多个唯一约束
检查约束 check(height>200.0) 设置条件 例如,age>18;
外键约束 多表关联时使用
新建数据库表
t_student 利用前缀,便于区分和管理
CREATE TABLE t_student(
列 类型
id INT,
name CHAR(4),
sex VARCHAR(1),
height FLOAT(5,2)
);
CREATE TABLE t_student(
num INT,
NAME VARCHAR(4),
#性别是固定的,采用定长字符类型
sex CHAR(1),
birthday DATE,
#身高,数据总长度为4,小数1位
height FLOAT(4,1),
#电话号码是固定的,采用定长字符类型
phone CHAR(11),
#register 登录,login 注册
res_time DATETIME
);
DROP TABLE t_student;
CREATE TABLE t_student(
num INT PRIMARY KEY AUTO_INCREMENT COMMENT ‘学号,主键’,v
NAME CHAR(4) NOT NULL,
sex VARCHAR(1) DEFAULT ‘男’,
birthday DATE NOT NULL,
height FLOAT(4,1) CHECK(height>100.0) CHECK(height<200.0),
phone CHAR(11) NOT NULL UNIQUE,
reg_time DATETIME
);
#删除表
DROP TABLE IF EXISTS t_student;
#创建一个没有任何约束的表
CREATE TABLE t_student(
num INT,
NAME VARCHAR(4),
sex CHAR(1),
birthday DATE,
height FLOAT(4,1),
phone CHAR(11),
reg_time DATETIME
);
#修改表名
RENAME TABLE t_student TO table_student;
#复制表结构 对某张表进行操作时,只能复制结构
CREATE TABLE table_student LIKE t_student;
#添加主键约束,删除主键约束
ALTER TABLE t_student ADD PRIMARY KEY(num);
#删除主键约束
ALTER TABLE t_student DROP PRIMARY KEY;
#设置主键自增
ALTER TABLE t_student MODIFY num INT AUTO_INCREMENT;
#删除主键自增
ALTER TABLE t_student MODIFY num INT;
#设置列数不能为空
ALTER TABLE t_student MODIFY NAME VARCHAR(4) NOT NULL;
#设置列数可以为空
ALTER TABLE t_student MODIFY NAME VARCHAR(4) NULL;
#添加唯一约束
ALTER TABLE t_student ADD CONSTRAINT uni_phone UNIQUE (phone);
#删除唯一约束
ALTER TABLE t_student DROP INDEX uni_phone;
#添加检查约束
ALTER TABLE t_student ADD CONSTRAINT check_height CHECK(height>100.0);
#删除检查约束
ALTER TABLE t_student DROP CHECK check_height;
#添加列
ALTER TABLE t_student ADD weight FLOAT(5,2);
#删除列
ALTER TABLE t_student DROP weight;
#向指定位置添加表
ALTER TABLE t_student ADD weigeht FLOAT(5,2) BEFORE height;
#修改列的名称
ALTER TABLE t_student CHANGE phone mobile CHAR(11);
#修改(列)字段的类型
ALTER TABLE t_student MODIFY mobile VARCHAR(11);
– alter table 表的名称 add/drop/modify/change
#DML 数据操作语言,增删改
– 插入数据insert,删除数据delete,修改语句update
#插入数据,方式1 VALUES
INSERT INTO t_student(NAME,sex,birthday,height,mobile,reg_time)
VALUES(‘张三’,‘男’,‘2000-1-5’,172.0,‘1234568’,NOW());
#方式2 SET
INSERT INTO t_student SET NAME=‘李四’,sex=‘女’,birthday=‘2001-5-9’,
height=162,mobile=480654,reg_time=NOW();
#方式3,多行 VALUES
INSERT INTO t_student(NAME,sex,birthday,height,mobile,reg_time)
VALUES(‘王五’,‘男’,‘2000-1-5’,172.0,‘1234568’,NOW()),
(‘吴六’,‘男’,‘2000-1-5’,172.0,‘1234568’,NOW())
INSERT INTO t_student(NAME,sex,birthday,height,mobile,reg_time)
VALUES(‘吴六’,‘男’,‘2000-1-5’,172.0,‘1234568’,NOW())
#方式4
CREATE TABLE stu LIKE t_student;
INSERT INTO stu(NAME,sex,birthday,height,mobile,reg_time) SELECT
NAME,sex,birthday,height,mobile,reg_time FROM t_student
#修改数据 update
#UPDATE t_student SET birthday=‘2001-12-31’ 全部的birthday都被修改
UPDATE t_student SET birthday=‘2001-12-31’,height=183.12 WHERE num=3;
#删除数据
DELETE FROM t_student 全部删除,清空
DELETE FROM t_student WHERE num=4;
#DQL 查询语言,使用频率最高的语言
#select 查询列表(要查询的结果) from 表名;
#select 查询结果 from 表名 where(主键) 条件.排序,分组,行数限制,子查询
#多表 关联查询
– 查询结果进行处理
– 获得结果是只读的不可修改
SELECT NAME FROM t_student;
#结果之前的100就是一个常量值,这里既可以是常量还可以是表达式
SELECT 100,NAME FROM t_student;
SELECT 100*98,NAME FROM t_student ;
SELECT height FROM t_student;
#给每个人的身高+5,然后再输出
SELECT height+5,height FROM t_student;
SELECT VERSION();#mysql的版本号
– * 这是查询所有的列
SELECT * FROM t_student;
– 查询特定列 建议使用的
SELECT NAME,sex,birthday FROM t_student ;
– 去除重复数据并输出 针对查询出来的结果,要求所有列都是相同的
– 由于主键自增,所以用*全部输出不能过滤重复元素
SELECT DISTINCT * FROM t_student;
– 选择一些数据进行判断并输出
SELECT DISTINCT NAME,sex,height FROM t_student;