-
MySQL是一个开源的关系型数据库管理系统,分为社区版和企业版。
查看全部 -
MySQL语句规范
关键字与函数名称全部大写
数据库名称,表名称,字段名称全部小写
SQL语句必须以分号结尾
查看全部 -
exit 退出
queit 退出2
\p 退出3
查看全部 -
自定义函数:
必要条件:参数和返回值(也存在没有参数的函数,但是必有返回值)
函数可以返回任何类型的值,同样可以接受这些类型的参数。(函数的参数和返回值之间没有内在的联系,参数的数量不能超过1024个。)
创建自定义函数:CREATE FUNCTION funvtion_name RETURNS {STRING | INTEGER | REAL | DECIMAL} routine_boby
解释:RETURNS返回值类型;routine_boby为函数体。
关于函数体:合法的SQL语句;可以是SELECT和INSERT语句;如果为复合结构则使用BEGIN...END语句;复合体可以包含声明,循环,控制结构。
(1)创建不带参数的函数:SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒'); 每次使用的时候都比较麻烦,因此创建一个函数保存就可以随时调用就可以了。
创建该函数:
CREAT FUNCTION f1() RETURNS VARCHAR(30)
->RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒');
创建成功后,调用:SELECT f1();
(2)创建含有参数的函数:
CREAT FUNCTION f2(num1 SMALLINT UNSIGNED, num2 SMALLINT UNSIGNED)
->RETUENS FLOAT(10,2) UNSIGNED
->RETURN (num+num2)/2;
SELECT f2(10,5); 求两个数的平均值
(3)创建含有多个参数的函数:
SHOW TABLES; 查看数据库的数据表
DESC test; 查看数据表的结构
SELECT * FROM test; 查看数据表中的记录
CREAT FUNCTION adduser(username VARCHAR(20))
->RETURNS INT UNSIGNED
->RETURN
->INSERT test(username) VALUES(username); 这个返回一定是错误的,因为insert函数以;结尾,而一段程序也是以;结尾,所以存在一定的歧义,顾我们使用:DELIMITER // 就是以后程序结束都要以//为结束。(//可以为其他符号,为自定义)
修正后:
CREAT FUNCTION adduser(username VARCHAR(20))
->RETURNS INT UNSIGNED
->RETURN
->INSERT test(username) VALUES(username);
->LAST_INSERT_ID();
由于插入姓名后还要返回其ID,因此就有两条语句需要执行,所以是复合语句
CREAT FUNCTION adduser(username VARCHAR(20))
->RETURNS INT UNSIGNED
->BEGIN
->INSERT test(username) VALUES(username);
->RETURN LAST_INSERT_ID();
->END
->//
此函数就创建成功了,
我们可以调用:SELECT adduser('Zuo');->//
那么就可以将结束字符改回来了:DELIMITER ;
实际中应用自定义函数并不多,主要在于了解。
查看全部 -
修改MySQL提示符
查看全部 -
MySQL提示符
查看全部 -
MySQL退出
查看全部 -
MySQL登录
查看全部 -
1.修改列定义:数据列的名字上没有问题,但是数据类型上可能有问题,或位置上有问题;列定义没错,则照抄,修改位置即可
ALTER TABLE tb1_name MODIFY [COLUMN] col_name column_definition [FRIST | AFTER col_name]
(以上修改包括列定义或列位置)
2.修改列名称:其功能大于上面的MODIFY
ALTER TABLE tb1_name CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST | AFTER col_name]
3.修改数据表的名字:
ALTER TABLE tb1_name RENAME [TO| AS] new_tb1_name
RENAME TABLE tb1_name TO new_tb1_name [,tb1_name2 TO new_tb1_name2] ... (这个方法可为多个数据表更改名称)
注意:不建议随便更改数据列的名字或着数据表的名字,以免影响数据表的引用。
查看全部 -
删除主键约束:
ALTER TABLE tb1_name DROP PRIMARY KEY(主键唯一,所以不用添加主键名称)
删除唯一约束:
ALTER TABLE tb1_name DROP {INDEX|KEY} index_name
那么查看唯一约束: SHOW INDEX FROM tb1_name(\G 是以网格形式呈现);
删除外键约束:
ALTER TABLE tb1_name DROP FOREIGN KEY fk_symbol
那么查看外键约束名字: SHOW CREATE TABLE tb1_name;
查看全部 -
添加主键约束:CONSTRAINT[symbol] symbol为自定义约束的名字;
注意主键约束表中要唯一
ALTER TABLE tb1_name ADD[CONSTRAINT[symbol]] PRIMARY KEY [index_type] (index_col_name,...)
添加唯一约束:
ALTER TABLE tb1_name ADD [CONSTRAINT[symbol]] UNIQUE [INDEX|KEY] [index_name] [index_type] (index_col_name,...)
添加外键约束(链接其他表格):
ALTER TABLE tb1_name ADD [CONSTRAINT[symbol]] FOREIGN KEY [index_type] (index_col_name,...) reference_definition
如: ALTER TABLE user1 ADD FOREIGN KEY (pid) REFERENCE provinces(id);
添加默认约束:
ALTER TABLE tb1_name ALTER [COLUMN] col_name{SET DEFAULT literal | DROP DEFAULT}
如:ALTER TABLE uesr2 ALTER age SET DEFAULT 15; 添加默认值
ALTER TABLE uesr2 ALTER age DROP DEFAULT; 删除默认值
查看全部 -
1.添加单列
alter table tbl_name add [column] col_name col_difinition[first|after col_name]
2.添加多列
alter table tbl_name add [column] (col_name col_difinition,...)
3.删除列
alter table tbl_name drop[column] col_name1,col_name2;
可以同时删除列和添加列,用逗号分隔开就好了
4.同时添加和删除某列
ALTER TABLE user1 ADD password FLOAT(4,1) UNSIGNED NOT NULL FIRST,DROP username;
查看全部 -
对一个数据列建立的约束,称为列级约束
对多个数据列建立的约束,称为表级约束
列级约束既可以在列定义时声明,也可以在列定义后声明
表级约束只能在列定义后声明
查看全部 -
1、外键约束的参照操作
(1)cascade:当父表删除或更新时,自动删除或更新子表中匹配的行;
(2)set null:当父表删除或更新行时,同时设置子表中的外键列为null。如果使用该选项,必须保证子表列没有指定not null;
(3)restrict:拒绝对父表的删除或更新操作;
(4)no action :标准sql的关键字,在mysql中与restrict相同。
2、
create table users(
id smallint unsigned primary key auto_increment,
username varchar(20) not full,
pid smallint unsgined,
foregin key(pid) references provinces(id) on delete cascade);
在删除父表中的id行时,自动删除子表中的pid行
4、注意要先在父表中插入记录,再在字表中插入记录。
insert provinces(pname) values('A'),('B'),('C');
insert users1(username,pid) values('TOM',3),('jack',2)【超出3则会报错】
当删除父表中的id=3的记录时,字表中的pid=3的记录也会被删除【cascade】
删除某一行的操作:delete from provinces where id =3;
5、在实际操作过程中,很少使用物理外键约束,而常用逻辑外键约束。因为只有 INNODB数据库支持物理的外键约束.
查看全部 -
列级约束:针对一列的约束;表级约束:针对两个及以上列的约束
约束类型:非空约束、主键约束、唯一约束、默认约束、外键约束
外键约束(FOREIGN KEY):保持数据一致性,完整性;实现一对一或一对多的关系
举例: FOREIGN KEY (pid) REFERENCES provinces (id));
FOREING KEY ----外键约束的要求
父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
数据表的存储引擎只能为InnoDB.[配置文件中]
外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
外键列和参照列必须创建过索引。如果参照列上没有索引的话,MySQL将自动创建索引,如果外键列不存在索引的话,MysQL将不会自动创建索引。
MySQL配置文件my.ini
1.default-storage-engine=INNODB
SHOW INDEXES FROM provinces\G;查看索引
查看全部
举报