数据库的发展历程●没有数据库,使用磁盘文件存储数据;●层次结构模型数据库;●网状结构模型数据库;●关系结构模型数据库:使用二维表格来存储数据;●关系-对象模型数据库;理解数据库●RDBMS = 管理员(manager)+仓库(database)●database = N个table●table:●表结构:定义表的列名与列类型!●表记录:一行一行的记录!Mysql安装目录:●bin目录中都就是可执行文件;●my、ini文件就是MySQL的配置文件;相关命令:●启动:net start mysql;●关闭:net stop mysql;●mysql -u root -p 123 -h localhost;➢-u:后面的root就是用户名,这里使用的就是超级管理员root;➢-p:后面的123就是密码,这就是在安装MySQL时就已经指定的密码;●退出:quit或exit;sql语句语法要求●SQL语句可以单行或多行书写,以分号结尾;●可以用空格与缩进来来增强语句的可读性;●关键字不区别大小写,建议使用大写;分类●DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;●DML(Data Manipulation Language):数据操作语言,用来定义数据库记录(数据);基本操作●查瞧所有数据库名称:SHOW DATABASES;●切换数据库:USE mydb1,切换到mydb1数据库;●创建数据库:CREATE DATABASE [IF NOT EXISTS] mydb1;●修改数据库编码:ALTER DATABASE mydb1 CHARACTER SET utf8●创建表:CREATE TABLE 表名(列名列类型,列名列类型,、、、、、、);●查瞧当前数据库中所有表名称:SHOW TABLES;●查瞧指定表的创建语句:SHOW CREATE TABLE emp,查瞧emp表的创建语句;●查瞧表结构:DESC emp,查瞧emp表结构;●删除表:DROP TABLE emp,删除emp表;●修改表:1.修改之添加列:给stu表添加classname列:ALTER TABLE stu ADD (classname varchar(100));2.修改之修改列类型:修改stu表的gender列类型为CHAR(2):ALTER TABLE stu MODIFY gender CHAR(2);3.修改之修改列名:修改stu表的gender列名为sex:ALTER TABLE stu change gender sex CHAR(2);4.修改之删除列:删除stu表的classname列:ALTER TABLE stu DROP classname;5.修改之修改表名称:修改stu表名称为student:ALTER TABLE stu RENAME TO student;其她常用命令:mysql基本操作命令一、数据库操作1、新增数据库create database 数据库名字[数据库选项];数据库选项:规定数据库内部该用什么进行规范字符集:charset 具体字符集(utf8)校对集:collate 具体校对集(依赖字符集)2、查瞧数据库2、1查瞧所有的数据库show databases;匹配查询:show databases like 'pattern'; #pattern可以使用通配符_:下划线匹配,表示匹配单个任意字符,如:_s,表示任意字符开始,但就是以s结尾的数据库%:百分号匹配,表示匹配任意个数的任意字符,如:student%,表示以student开始的所有数据库2、2查瞧数据库的创建语句show create database 数据库名字;3、修改数据库数据库名字在mysql高版本中不允许修改,所以只能修改数据库的库选项(字符集与校对集) alter database 数据库名字[数据库选项];eg:alter database stu charset utf8;4、删除数据库对于数据库的删除要谨慎考虑,就是不可逆的。
drop database 数据库名字;4、选择数据库use 数据库名字;二、数据表操作(字段)1、新增数据表create table 表名(字段名1 数据类型comment '备注、、、',字段名2 数据类型comment '备注、、、',、、、、#最后一行不需要逗号)[表选项];表选项:1)字符集:charset/character set(可以不写,默认采用数据库的)2)校对集:collate3)存储引擎:engine = innodb(默认的):存储文件的格式(数据如何存储)注意:创建数据表的时候,需要指定要在哪个数据库下创建。
创建方式有隐式创建与显式创建1)显式创建:create table 数据库名字、数据表名字2)隐式创建:use 数据库名字;2、查瞧数据表2、1查瞧所有的数据表show tables;2、2查瞧表使用匹配查询Show tables like ‘pattern’;#与数据库的pattern一样:_与%两个通配符2、3查瞧数据表的创建语句show create table 数据表名字;2、4查瞧数据表的结构desc 数据表名字;3、修改数据表3、1修改表名字rename table 旧表名to 新表名;3、2修改表选项(存储引擎,字符集与校对集)alter table 表名[表选项];3、3修改字段(新增字段,修改字段名字,修改西段类型,删除字段)新增字段:alter table 表名add [column] 字段名字数据库类型[位置first/after];位置选项:first 在第一个字段after 在某个字段之后,默认就就是在最后一个字段后面修改字段名称:alter table 表名change 旧字段名字新字段名字字段数据类型[位置];eg:alter table student name fullname varchar(30)after id;修改字段的数据类型:alter table 表名modify 字段名字数据类型[位置];删除字段:alter table 表名drop 字段名字;4、删除数据表drop table 表名;三、数据操作1、新增数据inser into table 表名[(字段列表)] values (值列表);2、查瞧数据select */字段列表from 表名[where条件];3、修改数据update 表名set 字段名= 值where 条件;注意:使用update操作最好配合limit 1使用,避免操作大批量数据更新错误、4、删除数据delete from 表名where 条件;注意:没有where 条件就就是默认删除全部数据、四、列属性(字段)1、删除主键:alter table 表名drop primary key;2、增加主键:alter table 表名add primary key(字段列表);#可以就是复合主键3、删除自增长:只能通过修改字段属性的方法操作、4、删除唯一键:alter table 表名drop index 索引名字;#默认的唯一键名字就就是字段的本身5、增加唯一键:alter table 表名add unique key (字段列表);#可以就是复合唯一索引五、外键约束1、创建表的时候增加外键constraint 外键名字foreign key(外键字段) references 父表(主键字段);eg:-- 创建父表(班级表)create table class(id int primary key auto_increment,name varchar(10) not null comment '班级名字',room varchar(10) not null comment '教室号')charset utf8;-- 创建子表(外键表)create table student(id int primary key auto_increment,number char(10) not null unique comment '学号:itcast + 四位数',name varchar(10) not null comment '姓名',c_id int comment '班级ID',-- 增加外键foreign key(c_id) references class(id))charset utf8;2、创建表之后增加外键alter table 表名add constraint 外键名字foreign key(外键字段) references 父表(主键字段);eg:-- 增加外键alter table student add constraint student_class_fk foreignkey(c_id) references class(id);3、删除外键alter table 表名drop foreign key 外键名字; #查瞧外键名字需要通过表创建语句来查询、eg:-- 删除外键alter table student drop foreign key student_ibfk_1;数据查询语法(DQL)DQL就就是数据查询语言,数据库执行DQL语句不会对数据进行改变,而就是让数据库发送结果集给客户端。
SELECT selection_list /*要查询的列名称*/FROM table_list /*要查询的表名称*/WHERE condition /*行条件*/GROUP BY grouping_columns /*对结果分组*/HAVING condition /*分组后的行条件*/ORDER BY sorting_columns /*对结果分组*/LIMIT offset_start, row_count /*结果限定*/基础查询1、1 查询所有列SELECT * FROM stu;1、2 查询指定列SELECT sid, sname, age FROM stu;2 条件查询2、1 条件查询介绍条件查询就就是在查询时给出WHERE子句,在WHERE子句中可以使用如下运算符及关键字:●=、!=、<>、<、<=、>、>=;●BETWEEN…AND;●IN(set);●IS NULL;●AND;●OR;●NOT;2、2 查询性别为女,并且年龄50的记录SELECT * FROM stuWHERE gender='female' AND ge<50;2、3 查询学号为S_1001,或者姓名为liSi的记录SELECT * FROM stuWHERE sid ='S_1001' OR sname='liSi';2、4 查询学号为S_1001,S_1002,S_1003的记录SELECT * FROM stuWHERE sid IN ('S_1001','S_1002','S_1003');2、5 查询学号不就是S_1001,S_1002,S_1003的记录SELECT * FROM tab_studentWHERE s_number NOT IN ('S_1001','S_1002','S_1003');2、6 查询年龄为null的记录SELECT * FROM stuWHERE age IS NULL;2、7 查询年龄在20到40之间的学生记录SELECT *FROM stuWHERE age>=20 AND age<=40;或者SELECT *FROM stuWHERE age BETWEEN 20 AND 40;2、8 查询性别非男的学生记录SELECT *FROM stuWHERE gender!='male';或者SELECT *FROM stuWHERE gender<>'male';或者SELECT *FROM stuWHERE NOT gender='male';2、9 查询姓名不为null的学生记录SELECT *FROM stuWHERE NOT sname IS NULL;或者SELECT *FROM stuWHERE sname IS NOT NULL;3 模糊查询当想查询姓名中包含a字母的学生时就需要使用模糊查询了。