MYSQL笔记(正文)--cmd操作

MYSQL笔记(正文)--cmd操作

MYSQL笔记(序)--cmd操作,点我跳转!

MYSQL笔记(进阶) --cmd操作,点我跳转!

MYSQL笔记(高阶) --cmd操作,点我跳转!

1.MYSQL语句的规范

  • 关键字函数名全部大写
  • 数据库名称、表名称、字段名称全部小写
  • SQL语句必须以分号结尾

2.创建数据库

-- 1.创建数据库(在MYSQL中SCHEMA等同DATABASE)设置编码格式gbk,utf-8  {}选填,[]可填可不填
CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name;

-- 2.创建zhh数据库;
CREATE DATABASE zhh;
CREATE DATABASE IF NOT EXISTS zhh CHARACTER SET gbk; 
-- 创建编码为gbk的数据库,如果此数据库存在,会产生一个警告,用SHOW WARNINGS;查看警告。

-- 3.显示所有的数据库;注意复数
SHOW DATABASES;

3.修改数据库

-- 1.修改数据库编码;
ALTER {DATABASE | SCHEMA} [IF NOT EXISTS] [db_name] [DEFAULT] CHARATER SET [=] charset_name;
ALTER DATABASE zhh CHARACTER SET utf-8; --修改数据库编码;
SHOW CREATE DATABASE zhh; --查看zhh数据库编码;

4.删除数据库

-- 1.删除数据库
DROP {DATABASE | SCHEMA} [IF EXISTS] db_name;
DROP DATABASE IF EXISTS zhh;-- 一定要保证数据库的存在;不存在产生WARNING可用SHOW查看警告;

5.数据类型

E-308= *10^-308    范围越大,占用的空间越大,性能优化。


  1. year (年)         可存取两位或四位 1970 到 2069年----------------------- 1字节

  2. time (时间)     -8385959 到 8385959----------------------------------- 3字节

  3. date(日期)      1000年-1月1号 到 9999年12月31日 -------------------- 3字节

    扫描二维码关注公众号,回复: 961470 查看本文章
  4. date time(日期时间)    1000年-1月1号零点 到 9999年12月31日 23点59分59秒--- 8字节  

  5. time stamp (时间戳)    1970-01-01零点 到 2037年之间 ---------------------------- 4字节

  • ①在实际的开发项目中,因为日期时间类型 存在时差的问题,所以一般会使用时间戳的方式

  • ②MYsql中Time Stamp类型可以设定默认值,就像其他类型一样。自动update(更新) 和insat(插入) 到当前的时间  

1.     char<m>:(定长类型):

        比如定义char(5),如果我们只赋值abc,那么计算机在存时会自动在后面补两个空格 。M的值:“ 0-255”;

2.    var char<m>:(变长类型):

        比如定义char(5),如果我们只赋值abc,那么计算机就只会存abc。

        L+1个字节,其中L<=M且 M的值:“ 0-65535”;2^16

3.    tiny text (小文本)

        -L+1字节, L<2^8 值在  255-0  之间        

4.    enum <'value1','value2'...>枚举)   枚举值,提供几个选项,选择其中一个;值为 0--65535   2^16

5.    set  <'value1','value2'...> : (集合) 最多64个成员,可以任选里面其中几个,任意排列组合

  • 一、L+xxx字节 ;    其中xxx字节表示最大的存储范围; 1个字节为8个byte,8个byte最大的二进制值8个1转十进制就是255. 而2个字节就是16 个 1, 也可以说16个1就是2的16次方。依次推算;

  • 二、枚举值;  枚举值指的是 给枚举型赋几个值,如单选框的形式,只能在你给的值中选择一个;   如:性别('男','女','保密')  只能选择一个。

6.创建数据表

登录mysql -uroot -p、进入数据库USE zhh,查看当前使用的数据库SELECT DATABASE();

-- 1.创建数据表,字段名+字段数据类型
CREATE TABLE [IF NOT EXISTS] table_name(
    column_name data_type comment '为字段添加注释',
    ....
);

-- 2.例   子表
CREATE TABLE user(
    id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,--AUTO_INCREMENT自动增长,默认初始1,必须与主键一起用
    username VARCHAR(50) NOT NULL UNIQUE KEY,--不允许为空,默认为NULL,唯一值,不允许重复
    age TINYINT UNSIGNED,-- UNSIGNED无符号,即大于等于0
    salary FLOAT(8,2) UNSIGNED, -- 总共8位数,小数点后最多2位,如:123456.78
    sex ENUM('1','2','3') DEFAULT '3',--单选三选一,如不赋值,则自动为3
    pid SMALLINT UNSIGNED, --必须与父表的数据类型相同,字符长度可不同
    FOREIGN KEY (pid) REFERENCES provience(id) ON DELETE CASCADE--创建外键,references把...作为参照(provience表的id),串联删除
);

--3.父表
CREATE TABLE provience(
    id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    proname VARCHAR(20) NOT NULL
)

UNSIGNED  无符号(正数),

AUTO_INCREMENT  自动增长,初始值默认为1,多用于id,必须与主键一起使用,当插入数据失败时,一样会增加;

PRIMARY KEY (主键索引) 主键,一张表只能有一个主键,表中只能有唯一的值,主键自动为NOT NULL(非空约束),并且会自动创建索引(indexs)(主键约束)

FOREIGN KEY(外键约束外键,保持数据一致性,完整性,实现一对一或一对多关系,外键的数据类型必须与父表的相同,字符长度可不同,外键列(子表)和参照列(父表)必须创建索引(MYSQL中都会自动创建),有外键的都称为子表


UNIQUE KEY (唯一索引) 唯一约束,字段可以为NULL,表中可以有多个唯一约束。;(唯一约束)

DEFAULT  默认值,当插入记录时,没有明确赋值,则自动赋予默认值。;(默认约束)

主表从表完全取决于业务,比如软件A是为老师而设计,用于管理学生的,那老师就是主表,主从表没有绝对。

7.查看数据表及结构

-- 1.查看当前数据库/指定数据库的数据表
SHOW TABLES [FROM db_name]
[LIKE 'pattern' | WHERE expr]

--2.例
SHOW TABLES;--查看当前数据库表(前提USE zhh进入数据库)
SHOW TABLES FROM zzz;--查看zzz数据库的数据表

--3.查看数据表结构
SHOW COLUMNS FROM tb_name;

--4.查看表生成的DLL/查看表的结构
SHOW CREATE TABLE tb_name;
DESC tb_name;

--5.查看数据表的索引
SHOW INDEXS FROM tb_name\G;--以网格的形式显示

8.插入记录

--1.插入记录, 插入表(字段名,字段名,..)值(XX,XX,..),字段名不填写的话必须填写全部的值,expr为表达式
INSERT [INTO] tb_name [(col_name),..] {VALUES|VALUE}({expr,DEFAULT},..),(...),...; --标准SQL语句
INSERT [INTO] tb_name SET col_name={expr|DEFAULT},...;  --MYSQL的扩展语句,适用于插入单行,效率高一点

--2.插入记录,与上面方式的区别在于,此方法可以使用子查询(SbuQuery)
INSERT [INTO] tb_name [(col_name,...)] SELECT...  --插入指定数据表数据到此数据表

--3.例
--插入多条记录,插入的字段为自增字段的话,插入DEFAULT或NULL即可,md5计算哈希数
INSERT tb_name VALUES(DEFAULT,'John',25,3*7-5),(NULL,'May',md5('123'),0);
INSERT tb_name(username) SELECT username FROM tb_name1 WHERE age >= 30;  --2.

9.更新记录

--1.更新记录(表单更新),如果不加WHERE语句,则整个表都更新
UPDATE [LOW_PRIORITY] [IGNORE] tb_name 
SET col_name1={expression|DEFAULT}[,col_name2=(expression|DEFAULT)]... 
[WHERE where_condition];

--2.例
UPDATE tb_name SET age = age + 5 WHERE id = 5;  -- 更新id为5的age值

10.删除记录

--1.删除记录(单表删除)
DELETE FROM tb_name [WHERE where_condition];

--2.例
DELETE FROM tb_name WHERE id = 5;

11.查找记录

--1.查找表中记录
SELECT expr,... FROM tb_name;
SELECT * FROM tb;


--2.查找表中记录
SELECT select_expr [AS custom_name][,select_expr...]  
[           -- 想要查找的字段或者函数,AS显示自定义字段名
    FROM tb_references
            -- user u,teacher t 相当于user AS u,字段名可以u.id,t.name
    [WHERE whe re_condition]
    [GROUP BY {col_name | position} [ASC|DESC],...]  
            -- 查询结果分组,可以按照字段名或者位置(SELECT后字段名的顺序1/2/3)分组
    [HAVING where_condition]  
            -- 分组条件类似WHERE,后接聚合函数或SELECT后出现过的字段条件
    [ORDER BY {col_name | expr | position} [ASC|DESC],...]
            -- 对查询结果进行排序,默认排序为ASC升序(小到大),可按多个字段排序,按BY后顺序优先排序
    [LIMIT {[offset,] row_count | row_count OFFSET offset}]
            -- 限制查询结果返回的数量,offset偏移值
            -- LIMIT 2-显示2条记录,LIMIT 2,2 - 下标从0开始,即从第3条记录显示2条(第3第4的记录)
];

12.修改数据表

--1.添加单列,definition定义,可以添加到某字段的前或后,默认添加到末尾
ALTER TABLE tb_name ADD [COLUMN] col_name column_definition [FIRST | AFTER col_name];

--2.添加多列
ALTER TABLE tb_name ADD [COLUMN] (col_name column_definition,...);

--3.删除列
ALTER TABLE tb_name DROP [COLUMN] col_name;

--4. 1)添加主键约束 2)添加唯一约束 3)添加外键约束 4)添加删除默认约束
ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...);
ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...);
ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] FOREIGN KEY [index_name] (index_col_name,...) REFERENCES reference_definition;
ALTER TABEL tb_name ALTER[COLUMN] col_name {SET DEFAULT literal|DROP DEFAULT}

--5.1)删除主键约束 2)删除唯一约束 3)删除外键约束 
ALTER TABLE tb_name DROP PRIMARY KEY;
ALTER TABLE tb_name DROP {INDEX|KEY} index_name;
ALTER TABLE tb_name DROP FOREIGN KEY fk_symbol; --删除约束名CONSTRAINT

--6.1)修改列定义 2)修改列名称 3、4)修改数据表名
ALTER TABLE tb_name MODIFY [COLUMN] col_name column_definition [FIRST|AFTER col_name]
ALTER TABLE tb_name CHANGE [COLUMN] old_col_name new_col_name column_difinition [FIRST|AFTER col_name]
ALTER TABLE tb_name RENAME [TO|AS] new_tb_name;
RENAME TABLE tb_name TO new_tb_name[,tb_name2 TO new_tb_name];

--7.例  如需添加/删除多个,关键字都需要再写一次(ADD,DROP,ALTER,MODIFY,CHANGE,RENAME等)
ALTER TABLE tb_name ADD age TINYINT UNSIGNED NOT NULL DEFAULT 10;  --1.添加单列
ALTER TABLE tb_name DROP username,DROP age,ADD password VARCHAR(20) NOT NULL;  --3.删除列并添加列
ALTER TABLE tb_name ADD CONSTRAINT PK_tb_name_id PRIMARY KEY(id);  --4.1 添加主键约束
ALTER TABLE tb_name ADD UNIQUE (username);  --4.2 添加唯一约束
ALTER TABLE tb_name ADD FOREIGN KEY(pid) REFERENCES provinces(id); --4.3 添加外键约束
ALTER TABLE tb_name ALTER age DEFAULT SET DEFAULT 15;  --4.4 添加默认约束
ALTER TABLE tb_name DROP PRIMARY KEY;  --5.1 删除主键约束
ALTER TABLE tb_name DROP INDEX username;  --5.2 删除唯一约束
ALTER TABLE tb_name DROP FOREIGN KEY fk_symbol;  --5.3 删除外键约束,fk_symbol是指外键名CONSTRAINT
ALTER TABLE tb_name MODIFY id SMALLINT UNSIGNED NOT NULL FIRST;  --6.1 修改列定义,大变小可能会造成数据丢失
ALTER TABLE tb_name CHANGE pid p_id TINYINT UNSIGNED NOT NULL;  -6.2 修改列名称
ALTER TABLE tb_name RENAME tb_name2;  --6.3 修改表名

MYSQL笔记(进阶) --cmd操作,点我跳转!

猜你喜欢

转载自blog.csdn.net/qq_41517936/article/details/79706616