mysql数据库
一.数据库(DataBase,DB)
1.概念
为了实现一定目的,按照某种规则组织起来的数据的集合,是一个数据“仓库”。
2.作用
保存,管理数据
3.常见数据库
关系型数据库:MySQL,Oracle,SQL Server
非关系数据库:Redis,MongoDB
二.数据库管理系统(Database Management System)
主要功能:维护数据库
三.MySQL基本操作
1.概念
是现流行的开源,免费的关系型数据库
2.SQL(Structured Query Language):结构化查询语言
3.SQL的组成
1.DDL(Data Definition Language):数据定义语言,用来建立数据库,数据库对象,定义数据表结构,CREATE,DROP,ALTER
2.DML(Data Manipulation Languase):数据操作语言,用来插入,修改,和删除数据库中的数据,INSERT,UPDATE,DELETE
3.DQL(Data Query Language):数据查询语言,查询数据库中数据 SELECT
4.DCL(Data Control Language):数据控制语言,用来控制数据库组件的存取和存储权限
4.SQL中运算符
算术运算符,赋值运算符,比较运算符(<>),逻辑运算符(and,or,not)
5.MySQL数据库操作
1.创建数据库:create databases [if not exists] 数据库名;
2.删除数据库:drop database[if exists]数据库名;
3.查看数据库:show databases;
4.使用数据库:use 数据库名;
6.MySQL数据类型
数值型:tinyint,smallint mediumint,int,float[(M,D)],double [(M,D)],decimal[(M,[D])]
字符串类型:char,varchar,tinytext,text
日期和时间数值类型:Date,time,datetime,timestamp,year
null值
7.MySQL数据表操作
1.创建表:create table [if not exists] 表名(
字段1 数据类型 [属性][索引][注释]
)[表类型][表字符集][注释];
常用的字段属性约束:
-
not null:某字段不允许为空
-
default:赋予某字段默认值
-
unique key(uk):设置该字段的值是唯一的,允许为空,但只能一个空值
-
primary key(PK):表的主键,表记录的唯一标识
-
foreign key(fk):在两表之间建立联系,作为外键的字段要求在主表中时主键
-
auto_increment:自动增长
-
unsigned:无符号的
-
zerofill:0填充,不足位
-
注释:comment
表类型:engine=MyISAM/InnoDB:
MyISAM:节约空间及相应速度
InnoDB:安全性,事务处理机多用户操作数据表
2.查看表结构:describe 表名;
3.查看建表语句:show create table 表名;
4.修改表`` -
修改表名:alter table 旧表名 rename as新表名
-
添加字段:alter table 表名 add 字段名 列类型[属性]
-
修改字段:alter table 表名 modify 字段名 列类型[属性]
alter table 表名 change 旧字段名 新字段名 列类型[属性] -
删除字段:alter table 表名 drop 字段名
5.删除表:drop table[if exists]表名
6.删除数据:
1.delete from 表名[where condition]
2.truncate [table] table_name
相同点:都能删除数据,不删除表结构,且truncate更快
不同点:使用truncate table重新设置auto_increment计数器,且不会对事务有影响
#学生信息表(学号,姓名,性别,年级,手机号,地址,出生日期,邮箱,身份证号)
CREATE TABLE student(
studentno INT(4) PRIMARY KEY,
studentname VARCHAR(20) NOT NULL DEFAULT'匿名',
sex TINYINT(1) DEFAULT 1,
gradeid INT (10),
phone VARCHAR(50)NOT NULL,
address VARCHAR(255),
borndate DATETIME,
email VARCHAR(50),
identityCard VARCHAR(18) NOT NULL,
CONSTRAINT FK_gradeid FOREIGN KEY(gradeid) REFERENCES grade(gradeid)
);
### 8.外键:建立约束
建立外键:alter table表名 add constraint 外键名 foreign key(外键字段)references 关联表名(关联字段)
- #建表同时加外键:CREATE TABLE
subject
(
CONSTRAINT grade_sub_id FOREIGN KEY (GradeID)
REFERENCES grade(GradeID)
); - #建表后添加外键:#创建外键方式
ALTER TABLE student
ADD CONSTRAINT FK_gradeid FOREIGN KEY(gradeid) REFERENCES grade(gradeid);
删除外键:alter table 表名 drop foreign key 外键名(需要同时删掉索引)
- #删除外键
ALTER TABLE student DROP FOREIGN KEY FK_gradeid;
ALTER TABLE student DROP INDEX FK_gradeid;
注:
#删除具有主外键关系的表时,要先删子表,再删主表
#删除具有主外键关系的表时,要先删子表,再删主表
#删除外键
ALTER TABLE student DROP FOREIGN KEY FK_gradeid;
ALTER TABLE student DROP INDEX FK_gradeid;
9.DML:数据操作语言
insert:添加数据语句:
- INSERT INTO 表名 [ ( 字段1, 字段2, 字段3, … ) ] VALUES ( ‘值1’, ‘值2’, ‘值3’, …)
- update:更新数据语句
UPDATE 表名
SET column_name = value [ , column_name2 = value2, …. ] [ WHERE condition ]; - delete:删除数据语句:DELETE FROM 表名 [ WHERE condition ];
#使用语句如何增加数据
INSERT INTO grade(gradename) VALUES('大一');
INSERT INTO grade VALUES(2,'大一');
INSERT INTO grade(gradename) VALUES('大三'),('大四');
#修改数据
#把李四地址修改为中国南京
UPDATE student SET address='中国南京' WHERE studentno=1001
#同时修改多列
UPDATE student SET address='中国南京',email='lisi@163.com' WHERE studentno=1001
#条件可以使用运算符
UPDATE student SET sex=1 WHERE studentno=1000 OR studentno=1001
#使用函数
UPDATE student SET studentname=CONCAT("姓名:",studentname)
#删除数据
DELETE FROM grade WHERE gradeid=4
#清除表数据
TRUNCATE TABLE `subject`;
DELETE TABLE `subject`;
CREATE TABLE tb_d( tid INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,tname VARCHAR(10));
#创建备份表
CREATE TABLE tmp_tb_d AS SELECT *FROM tb_d;
#创建备份表结构
CREATE TABLE tmp_tb_d AS SELECT *FROM tb_d WHERE 1=0;
10.补充
1.now()代表当前时间
2.使用函数
UPDATE student SET studentname=CONCAT(“姓名:”,studentname)
3.#创建备份表
CREATE TABLE tmp_tb_d AS SELECT *FROM tb_d;
#创建备份表结构
CREATE TABLE tmp_tb_d AS SELECT *FROM tb_d WHERE 1=0;