mysql基础-总结

/************************************************mysql数据库查看相关信息的语句*****************************************/

SELECT VERSION();-- 查看数据库的版本号

SELECT USER(),CURRENT_USER();-- 产看当前用户

SELECT DATABASE();-- 查看当前正在使用的数据库

SELECT CURDATE(),CURRENT_DATE();-- 查看当前日期

SELECT CURTIME(),CURRENT_TIME();-- 查看当前的时间

SELECT NOW(),CURRENT_TIMESTAMP();-- 查看当前的时间戳

SHOW CHARSET;-- 查看mysql支持的所有的字符编码

SHOW CHARSET LIKE ‘s%‘; -- 查看以s开头的字符编码

SHOW VARIABLES LIKE ‘char%‘;-- 查看变量名为char开头的变量

SHOW ENGINES;-- 查看数据库支持的所有引擎

SHOW DATABASES;-- 查看所有的数据库

SHOW TABLES;-- 查看所有的表

SHOW CREATE DATABASE aa;-- 查看标准建库语句

SHOW CREATE TABLE aa;-- 查看标准的建表语句

SHOW FULL COLUMNS FROM student;-- 查看表的所有字段信息

DESC student;-- 查看表结构[DESCRIBE的缩写:DESC

/***************************************************创建数据库语句******************************************************/

CREATE DATABASE aa;

CREATE DATABASE `aa`;-- 创建数据库,名字可以是关键字.主要作用:增强兼容性

CREATE DATABASE IF NOT EXISTS bb DEFAULT CHARSET=utf8;

CREATE DATABASE `aa` /*!40100 DEFAULT CHARACTER SET utf8 */;

CREATE DATABASE `aa` /*!40100 DEFAULT CHARACTER SET gbk */;

CREATE DATABASE `aa` /*!40100 DEFAULT CHARACTER SET gb2312 */;

USE aa;-- 选择数据库

DROP DATABASE IF EXISTS aa;-- 删除数据库

/**********************************************************数据表相关语句********************************************/

CREATE TABLE IF NOT EXISTS student(

列名,类型,修饰,约束

sid INT(10) UNSIGNED ZEROFILL PRIMARY KEY AUTO_INCREMENT,

sname VARCHAR(10) NOT NULL,

sgender ENUM(‘男‘,‘女‘,‘保密‘) DEFAULT ‘男‘

)ENGINE=MYISAM DEFAULT CHARSET=utf8;-- 标准建表语句

CREATE TABLE bb LIKE student;-- 快速建表,以student表为模板建立相同结构相同约束的表,无数据

CREATE TABLE aa SELECT * FROM student;-- 快速建表 以student查询的数据新建一个表,没有约束

DROP TABLE IF EXISTS aa;-- 删除一个表

DROP TABLE IF EXISTS aa,bb,cc;-- 删除多个表

RENAME TABLE aa TO bb;-- 修改表名称

ALTER TABLE aa RENAME bb; -- 修改表名称

ALTER TABLE aa RENAME TO bb;-- 修改表名称

ALTER TABLE student CHANGE sname snames VARCHAR(20);-- 修改表的列名和类型

ALTER TABLE student CHANGE sid sid INT(10);

ALTER TABLE student DROP PRIMARY KEY;-- 删除主键(前提是当前主键没有自增字段,如果有自增字段先执行上面的语句,清除auto_increment字段)

ALTER TABLE student ADD CONSTRAINT pk PRIMARY KEY(sid);-- 添加主键

ALTER TABLE student ADD COLUMN sage;-- 在表末尾添加一列

ALTER TABLE student ADD COLUMN saddress AFTER sanme;-- 在某一字段后面添加一列

ALTER TABLE student ADD COLUMN sscore FIRST;-- 在开头添加一列

ALTER TABLE student DROP COLUMN score;-- 删除一列

ALTER TABLE stu ADD CONSTRAINT fk FOREIGN KEY (stid) REFERENCES tec(tid);-- 添加外键约束(字段必须存在,且类型和修饰相同)

ALTER TABLE stu ADD CONSTRAINT fk FOREIGN KEY (stid) REFERENCES tec(tid) ON DELETE SET NULL;-- 删除外键关联时,相关的内容设为空

ALTER TABLE stu ADD CONSTRAINT fk FOREIGN KEY (stid) REFERENCES tec(tid) ON DELETE CASCADE;-- 删除外键关联时,删除相关的数据

ALTER TABLE stu ADD CONSTRAINT fk FOREIGN KEY (stid) REFERENCES tec(tid) ON UPDATE CASCADE;-- 更新外键关联时,更新相关的内容

ALTER TABLE stu ADD CONSTRAINT fk FOREIGN KEY (stid) REFERENCES tec(tid) ON DELETE SET NULL ON UPDATE CASCADE;-- 删除设空,修改更新

/*

上面的ON DELETE SET NULL:外键设为空

上面的ON DELETE/UPDATE CASCADE:外键级联

注意:使用外键约束时,数据表的存储引擎为INNODB

*/

ALTER TABLE stu DROP FOREIGN KEY fk;-- 删除外键

/***********************************************************索引操作***************************************************/

-- 一般情况下,建立表时如果建立pk(主键)、fk(外键)、uk(唯一约束键) 数据库系统会自动的建立索引,索引的作用:数据量很大时可以提高检索速度

CREATE INDEX myindex ON stu(sscore DESC);-- 创建索引

ALTER TABLE stu ADD INDEX myindex(sscore DESC);-- 创建索引

DROP INDEX myindex ON stu;-- 删除索引

ALTER TABLE stu DROP INDEX myindex;-- 删除索引

/******************************************************mysql的数据类型************************************************/

-- 数值类型

BIT -- 位类型(只能存0和1)

TINYINT -- 短整型 范围为有符号数:-128~127,无符号数:0~255

SMALLINT -- 小整型 范围为有符号数:-32768~32767,无符号数:0~65535

MEDIUMINT -- 中整型 范围为有符号数:-8388608~8388607,无符号数:0~16777215

INT -- 整型 范围为有符号数:-2147483648~2147483647,无符号数:0~4294967295

BIGINT -- 大整型 范围为有符号数:-9223372036854775808~9223372036854775807,无符号数:0~18446744073709551615

-- 精度小数位类型

NUMERIC(p,s)-- p代表数值总长度,s表示保留的小数位,若p=s,则只能存小于1的小树

DECIMAL(p,s)-- p代表数值总长度,s表示保留的小数位,若p=s,则只能存小于1的小树

-- 字符类型

CHAR(n) -- 定长字符串,n<=255,可以保存n个字符

VARCHAR(n) -- 变长字符串,n<=65535

TEXT -- 文本类型,最大存储65535个字符

MEDIUMTEXT -- 中等文本类型,可以存储16777215个字符

LONGTEXT -- 长文本类型最大可以存4GB

ENUM(‘男‘,‘女‘,‘保密‘)-- 枚举类型取其中一个

-- 二进制文件类型

LONGBLOB -- 主要存储二进制文件,最大可以是4G

-- 日期类型

DATE -- 日期类型 只能保存 年月日 非法的为:0000-00-00

DATETIME -- 日期时间类型 保存年月日 时分秒

TIME -- 时间类型 保存 18:30:35 时分秒

TIMESTAMP -- 时间戳类型

CREATE TABLE t1(

sname VARCHAR(10),

stime TIMESTAMP DEFAULT CURRENT_TIMESTAMP() -- 若没有设置默认时间时,更新数据,时间修改为修改数据时的时间

)ENGINE=MYISAM DEFAULT CHARSET=utf8;

CREATE TABLE t1(

sname VARCHAR(10),

stime DATETIME DEFAULT CURRENT_TIMESTAMP() -- 时间总是为插入数据时的设置的时间或插入数据时的时间

)ENGINE=MYISAM DEFAULT CHARSET=utf8;

/*************************************************约束相关的关键字****************************************************/

-- NOT NULL 非空约束

-- DEFAULT 默认值约束,若指定值,则不再采用默认值

-- ENUM(1,2) 枚举,只能去里面的值或null,不能使其他值

-- PRIMARY KEY 主键   在一个表内主键有且只能有一个,不能重复

CREATE TABLE t1(

tid INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,

tname VARCHAR(20)

)ENGINE=MYISAM DEFAULT CHARSET=utf8;

CREATE TABLE t2(

tid INT UNSIGNED NOT NULL AUTO_INCREMENT,

tname VARCHAR(20),

PRIMARY KEY(tid)

)ENGINE=MYISAM DEFAULT CHARSET=utf8;

CREATE TABLE t3(

tid INT UNSIGNED NOT NULL AUTO_INCREMENT,

tname VARCHAR(20),

PRIMARY KEY(tid,tname) -- 建立复合主键,一个主键管理两个表

)ENGINE=MYISAM DEFAULT CHARSET=utf8;

CREATE TABLE t4(

tid INT UNSIGNED NOT NULL,

tname VARCHAR(20)

)ENGINE=MYISAM DEFAULT CHARSET=utf8;

ALTER TABLE t4 ADD CONSTRAINT pk PRIMARY KEY(tid);

-- 以上都可以建立主键,但最后一种不是自增主键

-- FOREIGN KEY 外键约束,两个表存储引擎采用InnoDB,并且一个表内的外键是另一个表的主键或唯一约束键

-- 建立教师表

CREATE TABLE teacher(

tid SMALLINT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,

tname VARCHAR(20)

)ENGINE=INNODB DEFAULT CHARSET=utf8;

-- 建立学生表  PK[主键]、FK[外键],一个表的外键指向另一个表的主键或唯一约束键,在一个表内外键可以没有,有必须正确

CREATE TABLE student(

sid INT UNSIGNED ZEROFILL NOT NULL PRIMARY KEY AUTO_INCREMENT,

sname VARCHAR(20) NOT NULL,

sscore INT,

stid SMALLINT UNSIGNED,

-- constraint fk foreign key(stid) references teacher(tid)

-- CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) on delete set null

-- CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) ON DELETE cascade

-- CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) ON update CASCADE

CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) ON DELETE SET NULL ON UPDATE CASCADE

)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO teacher VALUES(NULL,‘张老师‘);

INSERT INTO teacher VALUES(NULL,‘刘老师‘);

INSERT INTO teacher VALUES(NULL,‘李老师‘);

INSERT INTO teacher VALUES(NULL,‘黄老师‘);

SELECT * FROM teacher;

INSERT INTO student VALUES(NULL,‘诸葛亮‘,70,3);

INSERT INTO student VALUES(NULL,‘大乔‘,75,4);

INSERT INTO student VALUES(NULL,‘张飞‘,80,1);

INSERT INTO student VALUES(NULL,‘关羽‘,95,2);

INSERT INTO student VALUES(NULL,‘刘备‘,56,2);

INSERT INTO student VALUES(NULL,‘曹操‘,37,3);

INSERT INTO student VALUES(NULL,‘姚盖‘,76,1);

INSERT INTO student VALUES(NULL,‘孙权‘,89,4);

SELECT * FROM student;

-- 关联的教师表,当设置主键没有(ON DELETE SET NULL,ON DELETE CASCADE,ON UPDATE CASCADE)时,下面这几条语句执行出错,违反外键约束:

INSERT INTO student VALUES(NULL,‘小乔‘,‘25‘,10);

DELETE FROM teacher WHERE tid = 3;

UPDATE teacher SET tid = 5 WHERE tid = 2;

DROP TABLE teacher;

-- 关联的教师表,当设置主键有(ON DELETE SET NULL,ON DELETE CASCADE,ON UPDATE CASCADE)时,表的级联性更强:

CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) ON DELETE SET NULL -- 删除关联时,相关内容设为空

CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) ON DELETE CASCADE -- 删除关联时,删除相关内容

CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) ON UPDATE CASCADE -- 修改关联时,更新相关内容

CONSTRAINT fk FOREIGN KEY(stid) REFERENCES teacher(tid) ON DELETE SET NULL ON UPDATE CASCADE -- 删除设空,修改更新

DROP TABLE student;

DROP TABLE teacher;

TRUNCATE student;-- 截断表内数据,重新插入主键从开始自增

TRUNCATE teacher;

-- UNIQUE KEY唯一约束

CREATE TABLE t5(

tid INT UNSIGNED ZEROFILL NOT NULL PRIMARY KEY AUTO_INCREMENT,

tname VARCHAR(20),

UNIQUE KEY(tname)

)ENGINE=MYISAM DEFAULT CHARSET=utf8;

CREATE TABLE t6(

tid INT UNSIGNED ZEROFILL NOT NULL PRIMARY KEY AUTO_INCREMENT,

tname VARCHAR(20) UNIQUE KEY

)ENGINE=MYISAM DEFAULT CHARSET=utf8;

CREATE TABLE t7(

tid INT UNSIGNED ZEROFILL NOT NULL PRIMARY KEY AUTO_INCREMENT,

tname VARCHAR(20)

)ENGINE=MYISAM DEFAULT CHARSET=utf8;

ALTER TABLE t7 ADD UNIQUE KEY(tname);

-- 以上都可以添加唯一约束

时间: 2024-08-06 11:56:53

mysql基础-总结的相关文章

MySQL基础实战

一.数据库基础: DBMS:数据库管理系统(Database Management System) RDBMS:关系数据库管理系统(Relational Database Management System) C/S:通过专有协议 关系模型:表(行,列),二维关系 范式:第一范式,第二范式,第三范式: 关系运算: 选择 投影 数据库:表,索引,视图(虚表) SQL:结构化查询语言 DDL:数据定义语言 DML:数据操作语言 编程接口: 自行定义存储过程 自行定义存储函数 触发器: 时间调度器:类

【夯实Mysql基础】记一次mysql语句的优化过程!

1. [事件起因] 今天在做项目的时候,发现提供给客户端的接口时间很慢,达到了2秒多,我第一时间,抓了接口,看了运行的sql,发现就是 2个sql慢,分别占了1秒多. 一个sql是 链接了5个表同时使用了 2个 order by和 1个limit的分页 sql. 一个sql是上一个sql的count(*),即链接了5个表,当然没有limit了(取总数). 2. [着手优化] 1)[优化思路] 第一条是 做client调用 service层的数据缓存 第二条就是 优化sql本身. 这里着重讲一下

MySQL 基础(二)

MySQL 基础(二) ============================================================================== 概述: ============================================================================== MySQL   1.数据结构: ★分类: 结构化数据:  关系型数据库 半结构化数据:YAML.XML.JSON 非结构化数据:日志文件,NoSQL  

MYSQL养成记-MYSQL基础增强(Myql函数)

MYSQL基础增强(Myql函数) 在这里只介绍一些常用的,比较新颖的: 字符串函数: CONCAT://字符串连接函数mysql> SELECT CONCAT('My', 'S', 'QL'); -> 'MySQL' mysql> SELECT CONCAT('My', NULL, 'QL');//与null连接会变null -> NULL mysql> SELECT CONCAT(14.3); -> '14.3' CONCAT_WS://含分隔符的字符串连接mysq

mysql基础知识之增删查改使用介绍

 mysql基础知识之增删查改使用介绍 本文主要介绍mysql常用的SELECT.INSERT.UPDATE.DELETE语句的使用,数据库的安装这里不做介绍,并且事先已经准备好相关数据. 本文中使用的student表中的数据如下: mysql> SELECT * FROM student; 一.SELECT语句的使用 1.单表查询 语法格式: SELECT culom1,culom2,culom3 FROM TABLE_NAME; 可以改变字段显示顺序 2.WHERE子句查询 语法格式: SE

mysql基础和数据库的优化

Mysql基础... 4 Mysql介绍... 4 登录mysql mysql –u root –p[掌握]... 4 SQL语言... 4 DCL. 4 grant. 4 revoke. 4 DDL. 4 建库... 4 删库... 4 建表... 4 看表结构... 5 删表... 5 修改表... 5 DML[重点]... 5 增加... 5 删除... 5 修改... 5 查看... 5 排序... 5 总数... 5 求和... 5 平均... 6 最大... 6 最小... 6 表连

MYSQL基础笔记(三)-表操作基础

数据表的操作 表与字段是密不可分的. 新增数据表 1 Create table [if not exists] 表名( 2 字段名 数据类型, 3 字段名 数据类型, 4 字段n 数据类型 --最后一行不需要加逗号 5 )[表选项]; If not exists:如果表名不存在,那么就创建,否则不执行创建代码,实现检查功能. 表选项:控制表的表现 1.字符集:charset/character 具体字符集:--保证表中数据存储的字符集. 2.校对集:collate 具体校对集: 3.存储引擎:e

mysql基础itcast笔记

1. 课程回顾 mysql基础 1)mysql存储结构: 数据库 -> 表 -> 数据   sql语句 2)管理数据库: 增加: create database 数据库 default character utf8; 删除: drop database 数据库; 修改: alter database 数据库 default character gbk; 查询: show databases / show create database 数据库; 3) 管理表: 选择数据库:use 数据库; 增

MySQL基础知识

MySQL基础知识: 一. 知识点:        1. SQL分类:按照其功能不同,分为3中类别           DDL(Data Defintion Language):数据定义语句,用于定义不同的数据段.数据库.表.列.索引等.常用的语句关键字包括create.drop.alter等;             DML(Data Manipulation Language):数据操纵语句,用于添加.删除.更新和查询数据库记录,并检查数据的完整性.常用的语句关键字主要包括insert.de

MySQL基础学习之数据查询

一般查询 SELECT * FROM 表名 SELECT 属性名  FROM  表名 条件查询 SELECT 属性名 FROM 表名  WHERE 条件表达式 查询数据值1,数据值2的表单 SELECT *  FROM  表名  WHERE  属性名 [NOT] IN(数据值1,数据值2....) 查询数值1,数据2的表单 SELECT *  FROM  表名  WHERE  属性=值  AND 属性1=值1 查询数值1到数值2之间的表单 SELECT *  FROM  表名  WHERE  属