数据库
查看警告
SHOW WARNINGS;
创建数据库
语句{}中内容在使用语句时必须出现,方括号可以不出现。
CREATE {DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT CHARACTER SET = 编码格式]
例子:
1.简单创建一个数据库 creat database(schema也可以) 数据库名称
然后你可以在C:\ProgramData\MySQL\MySQL Server 8.0\Data(这是我的路径)下看到创建了一个文件夹。
你也可以在这个文件夹下手动创建新的文件夹,也相当于创建了一个新的数据库,数据库的名字不能重复,重复创建会报错,如果加上IF NOT EXISTS创建,会返回警告。
2. 创建自定义编码格式的数据库
查看数据库
SHOW DATABASES;
或
SHOW SCHEMA;
注意: information_schema;mysql; performance_schema这三个数据库不能动!!!
查看指定数据库的定义
SHOW CREATE DATABASE|SCHEMA db_name;
修改指定数据库的编码方式
ALTER DATABASE|SCHEMA db_name DEFAULT CHARACTER SET = charset_name;
可以看到查询数据库定义的编码格式是utf8
打开指定的数据库
USE db_name;
得到当前打开的数据库名称
SELECT DATABASE();
删除指定数据库
DROP DATABASE|SCHEMA [IF EXISTS] db_name;
这样,那个文件夹下就删除了mysql01这个文件夹,也可以使用语句查看
数据表
数据表时数据库最重要的组成部分之一,是其他对象的基础,是存储数据的数据结构,是包含了特定实体类型的数据。它由行(row)和列(column)构成的二维网格。数据表一定时现有表结构,再有数据。数据表至少有一列,可以没有行或者多行。数据表名称要求唯一,而且不要包含特殊字符。
MYSQL中的数据类型
这些记个大概即可用的时候可以通过帮助查询
整数类型
如果需要输入无符号数,在数据类型后添加一个单词 UNSIGNED
浮点类型
如果输入小数位数超过指定位数,会进行四舍五入。定点数DECIMAL精度比前两个高。
字符串类型
CHAR会把输入字符串尾部的空格去掉,VARCHAR不会去掉。
日期时间类型
二进制类型
视频、图片等
类型选择
创建数据表
CREATE TABLE [IF NOT EXIST] tbl_name(字段名 字段类型 [完整约束条件] ...) ENGINE = 引擎名称 CHARSET = 编码方式;
字段名就是这个数据表中每一列的列标签;字段类型是每一列的数据类型;
引擎
存储引擎就是指表的类型,出具库的存储类型决定了表在计算机的存储方式。用户可以根据不同的存储方式,是否进行事务处理等来选择合适的存储引擎。
查看mysql支持的存储引擎
SHOW ENGINES;
查看显示支持的引擎信息
SHOW VARIABLES LIKE 'have%';
查看默认的存储引擎
SHOW VARIABLES LIKE 'storage_engine';
其中name表示引擎名称
support表示是否支持支持(yes),不支持(no)
comment注释
transactions是否支持事务处理,支持(yes),不支持(no)
XA是否是分布式处理的交易规范(我也不知道这是个什么玩意)是(yes),否(no)
savepoints是否支持保存点。
常用的引擎
不同数据表可以使用不同的引擎
InnoDB事务、回滚、修复、多版本并发控制,支持外借。创建的表结构在.fim的文件。缺点:读写效率低,占用空间大。
MyISAM存储文件时分为三个文件。分别存储表结构、数据、索引。支持静态、动态、压缩三种存储格式。效率高,空间占用小。缺点:不支持事务,没有事务的完整性、安全性、并发性的特点。
MEMORY存储在内存中创建表。速度快。可以提高表的效率。数据在内存中,占用内存多。缺点:存储在内存中,断电会造成丢失。
注释的写法
使用#来表示注释
这样回车不会执行该语句
或者使用-- 来表示注释内容(后面有空格)
给字段注释使用COMMENT
创建数据表
当输入内容含有中文的时候,需要临时更改编码格式为GBK
CREATE TABLE [IF NOT EXIST] tbl_name(字段名 字段类型 [完整约束条件] ...) ENGINE = 引擎名称 CHARSET = 编码方式;
创建数据库,打开数据库然后在数据库中创建数据表。
这段太麻烦了我附上代码
SET NAMES GBK;
CREATE TABLE IF NOT EXISTS `user` (id SMALLINT,username VARCHAR(20),age TINYINT,sex ENUM('男','女','保密'),email VARCHAR(50),addr VARCHAR(200),birth YEAR,salary FLOAT(8,2),tel INT,married TINYINT(1))ENGINE=INNODB CHARSET=UTF8;
这里在test01数据库下创建了user这个数据表。表的标签包含id username age…括号中的就是标签,后面跟的是数据类型。然后设定了引擎和编码格式。
查看创建的数据表
SHOW TABLES;
再创建一个试试
查看指定表的表结构
三种方法都可以
DESC tbl_name;
DESCRIBE tbl_name;
SHOW COLUMNS FROM tbl_name;
字段属性(完整性约束条件)
用于修饰字段,使得字段符合要求。
PRIMARY KEY主键,唯一标识某个记录的内容,要求定义为主键的字段不能重复且非空。
CREATE TABLE user1 (id INT PRIMARY KEY);#这样就给id定义为主键
key=pri就是主键。
CREATE TABLE user1 (id INT,card CHAR(18),PRIMARY KEY(id,card));#来定义一个复合主键
这是两个字段确定一个。
后面的明天再更
AUTO_INCREMENT自增长,例如每增加一条数据,值就自动加1。自增长默认从1开始增长。必须配合主键使用,自增长的必为主键,但主键未必使用自增长。且自增长只对整数有作用。
CREATE TABLE IF NOT EXISTS user01(
id SMALLINT KEY AUTO_INCREMENT,
username VARCHAR(20)
);
这是两种加入内容的写法,先了解,后面还会讲。
然后我们查看一下内容,第一条加入是吧id加了进去,第二个id没有给出,它会因为自增变成2。如果不指定的时候才会自增1(指定为NULL或DEFFAULT),如果指定且未重复,它会根据你指定的值来录入。
可以在创建表的时候在语句尾部添加AUTO_INCREMENT=值,来指定自增开始的值。或单独使用语句ALTER TABLE 表名 AUTO_INCREMENT=值来更改设定。
FOREIGN KEY外键
NOT NULL非空,有该属性的字段在输入时必须有值,不能是NULL。否则输入报错。
查询是NULL列为no。
UNIQUE KEY唯一,与主键的效果类似不能重复(NULL除外),但主键只能有一个,唯一可以由很多。
DEFAULT默认值,一般与非空一起使用。这样非空属性的内容不传值也不会报错,而是使用默认值。如果不想输入,直接写入默认值可以写DEFAULT。
例如:创建表时,默认username为admin。添加内容时只填id。
查询时,可以看到username填上了默认的admin
修改数据表
先创建一个表
修改表名
四种选择一种使用即可,将tbl_name表重命名为new_name
ALTER TABLE tbl_name RENAME TO new_name;
ALTER TABLE tbl_name RENAME AS new_name;
ALTER TABLE tbl_name RENAME new_name;
RENAME TABLE tbl_name TO new_name;
这里以第一个为例。
这里添加的test01表
添加删除字段
在tbl_name表中添加 字段名称 的字段,规定字段类型为字段类型 可选择一些完整性约束条件,也可以指定该字段的位置(FIRST将字段放在第一个,AFTER+字段名称 则放在字段名称后面)
ALTER TABLE tbl_name ADD 字段名称 字段类型 [完整性约束条件] [FIRST|AFTER 字段名称]
在tbl_name表中删除字段字段名称
ALTER TABLE tbl_name DROP 字段名称
例子:
先查看一下原有的
然后我们添加一个试试
再删除一个试试删除usernaem吧,打错了,删掉。
也可以一次添加多个字段,删除也一样。
还可以混用,即添加又删除
修改字段
修改tbl_name表中字段字段名称的字段类型、约束条件、位置(此语句不修改字段名称)
ALTER TABLE tbl_name MODIFY 字段名称 字段类型 [完整性约束条件] [FIRST|AFTER 字段名称]
修改tbl_name表中旧字段名称的字段名为新字段名称,并重新定义字段类型、约束条件、位置。
ALTER TABLE tbl_name CHANGE 旧字段名称 新字段名称 字段类型 [完整性约束条件] [FIRST|AFTER 字段名称]
例子:
先查看一下表中存在的字段
这次我把add_new修改成username设置为唯一,放在id的后面,用第二条语句。
现在我再把username的type改大一些。用第一条语句。注意,这里没办反改变唯一属性,后面会讲到如何删除唯一属性
添加删除默认值
在tbl_name表中给字段字段名称添加默认值默认值
ALTER TABLE tbl_name ALTER 字段名称 SET DEFAULT 默认值
在tbl_name表中给字段字段名称删除默认值默认值
ALTER TABLE tbl_name ALTER 字段名称 DROP DEFAULT
例子:
先查看一下
给username添加一个默认值admin
再删掉它。
添加删除主键
如果主键中还有约束条件,应该先删掉约束条件再删除主键,删除使用前面的修改字段,不传入约束即可
在tbl_name表中添加
ALTER TABLE tbl_name ADD PRIMARY KEY(字段名称,...)
在tbl_name表中删除主键
ALTER TABLE tbl_name DROP PRIMARY KEY
例子:
这里以复合主键为例,单一主键只要括号中写一个即可
再删除,主键只有一个,所以不需要指定
添加删除唯一
给tbl_name表中的字段名称添加唯一
ALTER TABLE tbl_name ADD UNIQUE INDEX [索引名称](字段名称,...)
给tbl_name表中的字段名称删除唯一
ALTER TABLE tbl_name DROP INDEX index_name
例子:
先添加一个的
删除一下看看
一定要设置索引,如果你不设置,在删除的时候会直接把这一字段直接删除
联合索引
这里可以用SHOW CREATE TABLE test01来查看一下
删除的话依旧用索引uni_id删除
修改存储引擎
ALTER TABLE tbl_name ENGINE=存储引擎名称
例子:
将innodb改为myisam引擎
设置自增长值
ALTER TABLE tbl_name AUTO_INCREMNET=值;
删除数据表
SHANCHU tb_name…一个或多个表
DROP TABLE IF EXISTS tbl_name...