MySQL
MySQL
一 数据库基础
1.1 为什么要使用数据库?
持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。持久化的大多数时候是将内存中的数据存储在数据库中,当然也可以存储在磁盘文件、XML数据文件中。
方便管理数据
1.2 什么是数据库
DB:数据库(Database)即存储数据的“仓库”。它保存了一系列有组织的数据。
DBMS:数据库管理系统(Database Management System):是一种操纵和管理数据库的大型软件,例如建立、使用和维护数据库。
目前互联网上常见的数据库管理软件有Sybase、DB2、Oracle、MySQL、Access、Visual Foxpro(面向对象型)、MS SQL Server、Informix、PostgreSQL(最符合SQL标准,但是性能差)这几种。
-- 关闭Mysql服务
net stop mysql;
-- 查看所有数据库
show databases;
-- 创建数据库
create database databasename;
-- 删除数据库
drop database databasename;
-- 选择数据库
use databasename;
-- 创建表
create table tablename(字段1 字段类型,字段2 字段类型,字段3 字段类型);
-- 查看表结构
desc tablename;
-- 删除表结构
drop table tablename;
2. 修改表结构
-- 重命名表
alter table tablename rename 新tablename;
rename table tablename to 新tablename;
-- 增加一列
alter table tablename add 列名 数据类型;//默认在最后
alter table tablename add 列名 数据类型 after 某一列;
alter table tablename add 列名 数据类型 first ;
-- 删除列
alter table tablename drop 列名;
-- 修改列类型
alter table tablename modify 列名 数据类型 ;
alter table tablename modify 列名 数据类型 after 某一列;
alter table tablename modify 列名 数据类型 first ;
-- 修改列名等
alter table tablename change 列名 新列名 数据类型;
-- 查看表的约束和索引
show index from tablename;
show create table tablename;
3. 约束:
1. 主键约束:primary key
主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值,如果是多列组合的主键约束,那么这些列都不允许为空值,并且组合的值不允许重复
每个表有且最多只允许一个主键约束。
2. 唯一键: unique key 简称 UK ;
1. 同一个表可以有多个唯一约束
2. 唯一约束可以是某一列的值唯一,也可以多个列组合值的唯一
3. Mysql会给唯一约束的列上默认创建一个唯一索引
4. 删除唯一键只能通过删除唯一索引的方式删除,删除时需要指定唯一索引名,唯一索引名就是唯一约束名一样。如何创建唯一约束未指定如果是单列,就默认为和列明相同,如果是组合列,那么默认和()中排在第一个的列名相同。也可以自定义唯一约束名
--------
如何建立唯一性约束?
| 在某个列后面直接加唯一性约束 | 单独指定表的唯一性约束 | 组合列唯一性约束 |
| 建表后增加唯一性约束 | alter table表名称 add 【constraint 约束名】 unique 【key】 (字段名);alter table表名称 add 【constraint 约束名】 unique 【key】 (字段名1,字段名2); | |
| ALTER TABLE t_stu ADD CONSTRAINT uk_card_id UNIQUE KEY(card_id);#其中CONSTRAINT uk_cname和KEY可以省略 | ALTER TABLE t_stu_course ADD CONSTRAINT uk_sid_cid UNIQUE KEY(sid,cid);#其中CONSTRAINT uk_cname和KEY可以省略 |
如何删除唯一性约束和索引?
alter table tablename drop index 唯一性约束名:如果忘记名称,可以通过show index from tablename;查看
**主键和唯一键的区别:
1. 主键是非空,唯一键允许空
2. 主键一个表只能有一个,唯一键可以有多个
3、外键:foreign key, 简称 FK
-
-
在创建外键约束时,如果不给外键约束名称,默认名不是列名,而是自动产生一个外键名(例如 student_ibfk_1;),也可以指定外键约束名。
-
当创建外键约束时,系统默认会在所在的列上建立对应的普通**索引**。但是索引名是列名,不是外键的约束名。
-
删除外键时,关于外键列上的普通索引需要单独删除。
注意:
-
在从表上建立外键,而且主表要先存在。
-
-
从表的外键列与主表被参照的列名字可以不相同,但是数据类型必须一样
-
一个表可以建立多个外键约束
-
从表的外键值必须"在主表中能找到"或者为空,从而约束了从表的外键列的值的添加和修改。
-
当主表的记录被从表参照时,主表中被参考记录的删除和更新也会受到限制。
n (1)默认情况下,主表和从表是严格依赖关系RESTRICT。当主表的记录被从表参照时,主表的记录将不允许删除,如果要删除数据,需要先删除从表中依赖该记录的数据,然后才可以删除主表的数据。
n (2)但是有一种是级联“修改、删除”:
n ON DELETE SET NULL(级联置空):当外键设置了SET NULL,当主表的相关记录删除时,从表对应的字段改为NULL。注意从表外键字段得允许为空才行
n ON DELETE CASCADE(级联删除):当外键设置了CASCADE(级联),当主表的相关记录删除时,从表对应的行都删除了。
n 对于外键约束,最好是采用: ON UPDATE CASCADE ON DELETE RESTRICT 的方式
l 如果要删除表,需要先删除从表,才能删除主表
如何创建外键约束:
-- 创建外键:
create table tablename(did int primary key, dname varchar(100) not null unique, description varchar(200) not null);
create table t_employee(eid int primary key,ename varchar(100) not null,dept_id int,
foreign key(dept_id) REFERENCES tablename(did) on
update cascade on delete RESTRICT);
#
4.2、Mysql几种存储引擎:
NBD
4.3 、查看存储引擎:
//查看当前存储引擎
show ENGINES;
五、MySQL的数据类型
5.1、常用的数据类型有:
整型(int),
位类型(bit),
浮点型(float、double、real),
定点数(decimal,numeric),
日期时间类型(time、date、datetime、year),
字符串(char 、varchar、xxx text),
二进制数据(xxx Blob,xxx binary),
枚举(enum)
5.2、特殊的NULL值
NULL特征:
1、所有的类型的值都可以是null,包括int、float等数据类型
2、空字符串“ ”,不等于null,0也不等于null,false也不等于null
3、任何运算符,判断符碰到NULL,都得NULL;
4、NUll的判断只能用is null,is not null;
5、NUll影响查询速度,一般避免使值为NULL
六、SQL
6.1、SQl的语言规范
1. mysql对于SQL语句不区分大小写,SQL语句关键字尽量大写
2. 值,除了数值型,字符串型和日期时间类型使用单引导(‘ ’)
3. 别名,尽量使用双引导(“ ”),而且不建议省略 as
4. 所有标点符号使用英文状态下的半角输入方式
5. 必须保证所有(),单引号,双引号是成对结束的
6. 可以使用(1)#单行注释 (2)--空格单行注释 (3) /* 多行注释*/
SQL:命名规则:
1. 数据库、表名不得超过30个字符,变量名限制为29个
2. 必须只能包含A-Z,a-z,0-9
3. 不能在对象名的字符间空格
4. 必须不能和用户义的其他对象重名
5. 必须保证你的字段没有和保留字、数据库系统或常用方法冲突
6. 保持字段名和类型的一致性,在命名字段并为其指定数据类型的数据类型的时候一定要保证
一致性。假如数据类型在一个表里是整数,那在另一个表里可就别变成字符型了,
注:一个语句可以分开多行写,以;或\g
6.2 SQL分类:
DDL:

浙公网安备 33010602011771号