数据库:database
----------------------------数据库相关操作--------------------------------------
分类:Mysql 小 免费
Oracle 贵 大 SQLSever 微软软件:wamp/phpstudy服务器中的内容:库,表。
表关系:一对一
一对多 多对多命令:
show databases;查看当前服务器中的所有数据库 use 数据库名; 选择使用哪一个数据库 show tables; 查看当前数据库中的所有表 select * from 表名; 查看某张表中的具体数据 quit; 退出命令行操作IDE : navicat for mysql
创建数据库连接:输入:hostname/IP address : 127.0.0.1/localhost -- 需要连接的服务器地址(用于获取本地主机的IP地址) port : 3306 端口号 username : root password :----------------------------建库,建表--------------------------------------
创建数据库:create database 库名;
查看数据库:show databases;
建库:CREATE DATABASE 库名 DEFAULT CHARSET=字符集;
删库:DROP DATABASE 库名;
建表:CREATE TABLE 表名(
字段1 数据类型 约束, 字段2 数据类型 约束, ...... 字段n 数据类型 约束)引擎 DEFAULT CHARSET=字符集; -----------------------------建表后---------------------------------------建表后修改列类型:
语法:alter TABLE 表名 MODIFY 列名 目标类型;
--增加列:
语法:alter TABLE 表名 add 列名 列类型;--修改列名:
语法:ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型;--修改表名:
语法1:ALTER TABLE 表名 RENAME 新表名;语法2:RENAME table 表名 TO 新表名;--删除列:
语法:alter TABLE 表名 DROP 列名;删除表:DROP TABLE 表名;
----------------------------约束--------------------------------------
1.非空:not NULL
语法:字段 + NOT NULL2.唯一:unique
语法:字段 + UNIQUE3.主键:primary KEY --非空且唯一
一般情况下,每张表都会有且仅有一个主键列(标识列)在类似于id这样的字段后 + PRIMARY KEY4.自动增长:auto_increment
语法:主键字段 + auto_increment注意:表中只有int类型的字段可以自增可以设置表的自增基数
5.设置默认值:default '值'语法:字段 + default '默认值' 6.检查约束 :check (mysql不支持,为了与其他数据库保持统一)语法:字段后 + check(条件) 7.外键约束: FOREIGN KEY作用:使表拥有数据完整性主表:有字段被其他表参照的表,优于从表存在
从表:有字段需要参照其他表的表,在主表创建后再创建======================
注意:1.主表必须优于从表创建 ,删除时,从表必须先于主表删除2.从表的数据必须在主表的已有范围内3.如果主表中有数据正在被从表参照,那么主表中的相应数据不能修改或删除4.从表参照的主表字段只能是唯一约束或主键-----------------------------表关联-------------------------------------
语法1
FOREIGN KEY (本表的外键字段) REFERENCES 主表(关联字段);语法2:
CONSTRAINT FOREIGN KEY 外键名(外键字段) REFERENCES 主表(关联字段); -----------------------------引擎-------------------------------------关于表的引擎:
引擎:mysql对表的解析方式MySQL有以下几种引擎:ISAM、MyISAM、HEAP(也称为MEMORY)、CSV、BLACKHOLE、ARCHIVE、PERFORMANCE_SCHEMA、InnoDB(常用)、 Berkeley、Merge、Federated和Cluster/NDB等, MyISAM --不支持事务以及外键 INNODB --支持事务和外键 语法:ENGINE=INNODB;-----------------------------数据类型-------------------------------------
1.整数:
tinyint 占1个字节 -128~127SMALLINT 占2个字节 -32768~32767INT(默认) 占4个字节 -21亿~21亿BIGINT 占8个字节2.小数(浮点数)
FLOAT 占2个字节 精确到小数点后7位 --单精度DOUBLE(默认) 占4个字节 精确到小数点后15位 --双精度DECIMAL(值,位数) DECIMAL(23.23456,5)3.字符:
CHAR(M) : 可以存储0~255个长度的字符VARCHAR(M):(默认) 可以存储0~65535个长度的字符text:存储大于8KB的长文本BLOB:存储二进制大文件4.时间日期:
time : 00:00:00~23:59:59date : 1000-1-1 ~ 9999-12-31datetime : 1000-1-1 00:00:00 ~9999-12-31 23:59:59-----------------------------表的增删查改-----------------------------------------
1.增:insert
语法: INSERT INTO 表名(字段1,字段2,..) VALUES (值1,值2.....);
INSERT INTO 表名 values(值。。。。。); --必须为表中的每个字段添加值,哪所这个字段有默认值或主键注意:字段的顺序必须和表中的顺序一致,而值的顺序必须和字段的顺序一致2删除:
1.DELETE (会保留数据空间) 语法:delete from 表名 [where 条件];--删除test表中tid 为3的数据
DELETE FROM test WHERE tid = 3;--删除test表中所有数据:
DELETE FROM test; 2.TRUNCATE (清空表,不保留数据结构,会保留表结构) 语法:truncate TABLE 表名; TRUNCATE TABLE test; 3.DROP (删除整个表结构) 语法:drop table 表名;3.修改:update
语法:update 表名 set 字段1 = XX1, 字段2 = XX2 .. [WHERE 条件];
注意:如果不要where条件,表示将表中所有数据全部修改 4.查询 :SELECT1.查询所有数据:SELECT * FROM 表名; --执行效率低
2.查询指定字段:SELECT 字段名1,字段2... from 表名; 3.对空值的查询 IS NULL--查询student表中sname为""的数据
SELECT * FROM student where sname = ""; --查询student表名sage为null的数据 SELECT * FROM student WHERE sage IS NULL;4.查询中对字段取别名 AS
SELECT sname AS '123',sage as '111' FROM student;
SELECT sname '123',sage '111' FROM student; 表名也可以取别名: SELECT * FROM student s WHERE s.sage>18; 注意:as可以省略5.查询中使用算术表达式 + - * /
--查询出课程表中所有课程的课时+20后的数据情况 SELECT cname,cxueshi '原课时',cxueshi+20 '新课时' FROM course6.处理重复值 DISTINCT 字段。。。
--查询student表中的专业有哪些
SELECT DISTINCT szhuanye FROM student; SELECT DISTINCT sage FROM student; SELECT DISTINCT ssex, szhuanye,sage from student; 注意:如果有多个字段进行去重复处理,那么表示是将多个字段的值结合后再去掉重复7.返回限定行 LIMIT
SELECT....from ... LIMIT n; --表示返回当前表的第1行到第n行 SELECT.... from .... LIMIT m,n; --返回当前表中第m+1行,往后的n行数据 --查询学生表中的前五行 SELECT * FROM student LIMIT 5; - -查询出学生表中第五行到第十行的数据: SELECT * FROM student LIMIT 4,6;-----------------------------
通过查询复制表1.复制表和数据CREATE TABLE newstudent SELECT * FROM student; --不能复制约束DESC newstudent3;
2.仅复制表结构
2.1 CREATE TABLE newstudent2 SELECT * FROM student WHERE 2=1;2.2 CREATE TABLE newstudent3 LIKE student; --可以复制约束
----------------------------------------------------------------------------------------------------------------------------------------------------