-
删除约束:
1,删除主键约束: alter table 表名 drop primary key ; 主键一张表中只能有一个 所以不用加条件
2,删除唯一约束: alter table 表名 drop {index 或 key} 列名 ;
3,删除外键约束: alter table 表名 drop foreign key 外键索引名字; show create table 表名;查看外键索引名字
可以通过 show indexes from 表名; 查看变种有哪些索引
查看全部 -
在已经建好的表中添加约束:
1, 主键约束: alter table 表名 add primary key (列名);
2,外键约束: alter table 表名 add foreign key (外键列) references 参照表 (参照列);
3, 唯一约束: alter table 表名 add unique key (列名) ;
4, 添加默认约束: alter table 表名 set default 默认值;
5, 删除默认约束: alter table 表名 drop default;
查看全部 -
cls清命令框屏查看全部
-
创建数据表的时候,是否需要根据存储的数据特征来选择数据类型,是否需要选择精度最接近实际情况的类型?比如有一个保存年龄的字段,我们用什么数据类型好,设置它的长度是多少。这样做有什么好处?查看全部
-
数据类型 整型 (tinyint smallint mediumint int bigint) 浮点型 (FLOAT{[M,D]},DOUBLE{[M,D]})M:总位数,D:小数点后位数 日期 (YEAR DATE TIME TIMESTEMP) 字符型 (CHAR VARCHAR TEXT) 显示数据库 SHOW DATABASES; 显示表结构 SHOW COLUMNS FROM table; 显示所有表 SHOW TABLES; 进入数据库 USE 数据库; 创建数据库 CREATE DATABASE 库名; 创建表 CREATE TABLE 表名(字段及信息); 插入数据 INSERT INTO table []VALUES();[]为空说明插入全部的值 查询数据 SELECT 字段 FROM table WHERE 条件 自增自动编号 auto_increment 主键约束 primary key(有auto_increment的一定是主键,主键不一定有auto_increment) 唯一约束 unique key 默认约束 default 当没有赋值时则自动添加默认值
查看全部 -
insert tb_name(......)values(....)增加
select .... from tb_name 查找
查看全部 -
存储引擎:
MysQL可以将数据以不同的技术存储在文件(内存)中,这种技术就称为存储引擎。
每一种存储引擎使用不同的存储机制、索引技巧、锁定水平,最终提供广泛且不同的功能。
存储引擎包括:MyISAM;InnoDB;Memory;CsV;Archive。
解决一些问题:当一个用户调用一个记录进行修改,同时有一个用户在查看该条记录,那么就可能出现有一个用户被迫退出或者查看记录的那个出现错误。这时触发并发控制:即保证数据的一致性和完整性。
用锁系统来解决这类问题:共享锁和排他锁
-共享锁(读锁) :在同一时间段内,多个用户可以读取同一个资源读取过程中数据不会发生任何变化。
-排他锁(写锁) :在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作。锁颗粒-表锁,是一种开销最小的锁策略。行锁是一种开销最大的锁策略。
事务:【简单介绍的,高级课程会有更多介绍】
外键:保证数据一致性
索引:对数据的一行或者多行进行排序的一种结构
查看全部 -
MySQL是这样执行的:sql命令——>mysql引擎——>分析语法正确——>编译成可识别的命令——>执行结果——>返回客户端
如果我们省略掉分析和编译的过程那么可以节省很多。
存储过程:是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元来处理。
存储过程存储在过程之内,可以由应用程序调用执行,允许用户声明变量,以及流程控制;存储过程可以接受参数,也可以接受输出类型的参数;并且可以存在多个返回值。
创建存储过程:
CREATE
[DEFINER = { user | CURRENT-USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
proc_parameter:
[IN | OUT I INOUT ] param_name type【解释】:
IN:表示该参数值必须在调用存储过程时指定;(只进不出)
OUT:表示该参数值可以被存储过程改变并且可以返回。(可出不进)
INOUT:表示该参数的调用时指定,并且可以被改变和返回。
过程体:合法的SQL语句;可以时任意的增删改查链接的SQL语句;如果有复合结构则使用BEGIN...END 语句;复合结构中可以声明,循环和调用。
创造一个没有参数的存储过程:
CREATE PROCEDURE sp1() SELECT VERSION();
调用存储过程:
CALL sp_name([parameter[,...]])
CALL sp_name[()]
如果没有参数那么用哪个调用都可以,但是如果由参数则只能用第一个。
那么调用上面的存储过程:CALL sp1;(或者CALL sp1();)
DELIMITER//
>CREATE PROCEDURE removeUserById(IN id INT UNSIGNED)
->BEGIN
->DELETE FROM users WHERE id = id;
->END
->//
->DELIMITER ;
此处的id 存在歧义,因此应该进行修改。
修改存储过程:
ALTER PROCEDURE sp_name[characteristic ... ] COMMENT 'string' |{CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA} | SQL SECURITY {DEFINER | INVOKER }
只能修改注释,当前的内容的类型。
删除存储过程:
DORP PROCEDURE [IF EXISTS] sp_name
但是在这里只能用删除,而不能赢用修改
DELETE PROCEDURE removeUserById;
(重新构建一下数据表的id)
DELIMITER//
>CREATE PROCEDURE removeUserById(IN p_id INT UNSIGNED)
->BEGIN
->DELETE FROM users WHERE id = p_id;
->END
->//
->DELIMITER ;
删除id 不固定的记录吗,并且返回剩余的记录数;
DELIMITER //
CREATE PROCEDURE removeUserAndReturnUserNUMS(IN p_id INT UNSIGNED,OUT userNums INT UNSIGNED)
->BEGIN
->DELETE FROM users WHERE id = p_id;
->SELECT count(id) FROM users INTO userNums;
->END
->//
->DELIMITER ;
->CALL removeUsersAndReturnUserNums(27,@nums);
@nums 就是变量
局部变量:DELETE/CLEAR,他的应用范围只在BEGIN...END 之间。也就是说在BEGIN ... END 结束后局部变量就消失了。
用户变量:即SELECT ... INTO... / SET @i=9 ;他是跟MySQL的客户端链接的,也就是只对用户的客户端生效。
【介绍一个ROW_COUNT() 函数,返回的是被影响的行数(增、删、改、更)】
如:
>DELIMITER //
>CREATE PROCEDURE removeUserByAgeAndReturnInfos(IN p_age SMALLINT UNSIGNED,OUT deleteUsers SMALLINT UNSIGNED,OUT userCounts SMALLINT UNSIGNED)
->BEGIN
->DELETE FROM users WHERE age=p_age;
->SELECT ROW_COUNT() INTO deleteUsers;
->SELECT COUNT(id) FROM users INTO userCounts;
->END
->//
>DELIMITER ;
>CALL RemoveUserByAgeAndRetrunInfos(20,@A,@B);
存储过程和自定义函数的区别:存储过程经常用于表的操作,针对性强;存储过程可以有多个返回值而函数只能有一个;存储过程通常独立完成,而函数作为其他SQL语句的组成部分完成。
在实际过程中很少用函数;对于稍微复杂的经常用到的封装成存储过程
查看全部 -
存储引擎的不同
MyISAM:存储限制256TB,支持索引,表级锁定,数据压缩。
InnoDB: 存储限制为64TB,支持事务和索引,锁颗粒为行锁。
查看全部 -
事物特性 Atomicity
Consistency
Isolation
Durability
查看全部 -
1.查看数据表列表 SHOW TABLES [FROM db_name] [LIKE 'pattern' | WHERE expr] SHOW TABLES; //查看当前数据库中的表 SHOW TABLES FROM mysql; FROM之后,当前数据库不会发生改变 SHOW COLUMNS FROM tb1; 查看tb1中的数据表结构
查看全部 -
use database_name; //使用数据库/打开数据库
select database(); //查看当前数据库
create table table_name(); //创建表
show tables; //查看数据表列表
show tables from mysql; //查看mysql中存在的表
查看全部 -
四种数据类型:
整型:TINYINT SMALLINT MEDIUMINT BIGINT
浮点型:FLOAT or DOUBLE[(M,D)] M是数字的总位数 D是小数点后的位数
日期时间类型:用的较少,多以时间戳的形式存储
字符型 char(5) 五个字节长的char类型
查看全部 -
初涉MySQL——操作数据库 一、数据库创建:CREATE 1、语法:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset_name. 2、DATABASE和SCHEMA是相同的,任选其一 3、IF NOT EXISTS:如果创建的数据库存在,则只是报出warning,不写会报错 4、CHRARCTER SET gbk:为表设置编码方式,如果不设置则用mysql默认的编码方式 二、查看数据库列表:SHOW 1、SHOW { DATABASE | SCHEMAS } [LIKE 'pattern' | WHERE expr] 2、SHOW CREATE DATABASE xx:显示xx数据库信息 三、数据库的修改:ALTER 1、修改数据库编码方式:ALTER { DATABASE | SCHEMAS } [db_name][DEFAULT] CHARACTER SET [=] charset_name 四、删除数据库:DROP 1、删除数据库:DROP { DATABASE | SCHEMAS } [IF EXISTS] db_name; mysql -uroot -proot prompt \D --修改mysql操作符为当前日期 show databases --展示所有数据库 create database if not exists t1 character set gbk; --创建数据库 show create database t1; --展示数据库t1的创建命令和编码形式 --修改数据库编码格式 alter database t2 character set =utf8; --删除数据库 drop database if exists t1; --展示警告信息 show warnings;
查看全部 -
mysql
语句的规范:
1.关键字和函数名全部大写;2.数据库的名称,表的名称,字段的名称全部要小写;3.语句要以“;”结尾。
查看全部
举报