网站建设知识
MySQL基础
2025-07-22 10:01  点击:0

数据库简介

数据库的概述

存储数据的仓库,本质文件系统,可以通过sql语句去操作数据库

常见的数据库

关系型数据库(行式数据库)oracle : oracle公司的大型收费数据库 常用在java项目SQL Server : 微软公司的大型收费数据库 常用在.net项目mysql : oracle公司的中小型免费数据库 常用在中小型java项目         php项目 lamp:Linux+Apache+mysql+phpDB2:IBM公司大型收费数据库 主要用在金融 银行的项目nosql数据库(列式数据库)mogoDB Redis hbase

数据库的内部结构

我们常说的数据库其实说的是数据库服务器 其内部包括两部分 数据库管理系统(DBMS) 数据库仓库



数据库服务器--->数据库--->数据库表--->数据(多条记录)

mysql的安装与卸载

mysql启动 : new start mysql 关闭 net stop mysqlmysql登录 : mysql -u root -p

sql语句的介绍及分类

结构化查询语句,是操作数据库和程序设计的语言,我们可以通过sql对数据库进行增删改查的操作sql分类 :    DDL : 数据库定义语言 数据库库和表的定义    DML : 数据库操作语言 数据库中的数据进行 增加 删除 修改    DQL : 数据查询语言 对数据库中的数据进行查询    DCL : 数据控制语言 对数据库的权限 用户 操作

定义数据库和数据表

定义数据库

创建数据库

语法 : create database 数据库名称[character set 编码][collate 校验规则]示例 : create database mydb character set utf8 collate utf8_general_ci
mysql默认创建的4个数据表 和数据库配置相关 最好别修改

查询数据库

查看全部 : show databases;查看指定创建数据库 : show create database 数据库名称;

修改数据库编码级

语法 : alter database 数据库名称 character set 新的编码;示例 : alter database mydb character set gbk;

删除数据库

语法 : drop database 数据库名称;示例 : drop database mydb;

其他

切换数据库 use 数据库名称查看当前数据库 select database();

定义数据表

创建数据库表

语法 : create tabel 表名(        字段1 数据类型[约束]        字段2 数据类型[约束]       )示例 : create table user(        id int,        name varchar(10),        age int);
数据类型 :
sql的数据类型和java的数据类型的对应sql:                       java:int                         java.lang.Interger/intdouble                      java.lang.Double/double/floatdecimal                     java.lang.BigDecimalchar/varchar                java.lang.Stringtext                        java.lang.Stringblob                        java,lang.byte[]date                        java.sql.Datetime                        java.sql.Timetimestamp                   java.sql.Timestamp

约束 :约束就是对某个字段下所存储的数据的特殊要求

(1) 主键约束

主键 : 记录的唯一性标识语法 : 字段 数据类型 primary key;主键自增长 : 主键是数字类型 auto_increment

(2) 外键约束 :

外键 : 与主键相对应 目的使主表中的数据与从表中对应的数据进行关联外键约束 :语法 : constraint 外键关系的名称 foreign key 从表名称(外键字段) references 主表名称(主表字段);需求 : 创建两张表创建部门表deptid 整型 主键 自动增长,dname 字符串 唯一 不能为空,dcode 整型 唯一 不能为空创建员工表empid 整型 主键 自动增长,ename 字符串 不能为空,ecode 整型 唯一 不能为空did 整型 外键--对应dept表的主键iddept表create table dept(id int primary key auto_increment,dname varchar(20) unique not null,dcode int unique not null);emp表create table emp(id int primary key auto_increment,ename varchar(20) not null,ecode int unique not null,did int,constraint dept_emp foreign key emp(did) references dept(id));insert into dept values(null,'技术部',100);insert into dept values(null,'财务部',110);insert into dept values(null,'销售部',120);insert into emp values(null,'张三',111,5);
insert into emp values(null,'孙八',111,1);insert into emp values(null,'李四',112,2);insert into emp values(null,'王五',113,1);delete from dept where id =1;
外键约束的作用 : 可以保证数据的完整性和一致性

(3) 唯一性约束 : unique

语法 : 字段 数据类型 unique

(4) 非空约束 : not null

语法 : 字段 数据类型 not null

(5) 默认值约束 default

语法 : 字段 数据类型 default 默认值 示例 : age int default 80;

需求:

创建一个张表user,该表具有以下字段:id int 主键 自动增长username 字符串 长度20 非空password 字符串 长度20 非空gender 字符串 长度10age 整型 默认25岁email 字符串 长度50 唯一 非空salary 浮点型 最大8位其中两位小数state 整型 默认0role 字符串 长度10 默认值 “VIP”registTime  时间戳 create table user(id int primary key auto_increment,username varchar(20) not null,password varchar(20) not null,gender varchar(10),age int default 25,email varchar(50) unique not null,salary double(8,2),state int default 0,role varchar(10) default "VIP",registTime timestamp)

查看数据表

查看全部表 : show tables;查看制定表 : show create table 表名称
查看表的结构 : desc 表名称

修改数据表

(1) 修改表名称 : rename table 旧表名称 to 新表名

示例 : rename table user to user2;

(2) 修改表的编码 : alter table user2 character set gbk;

(3) 新增字段 : alter table user2 add idcard varchar(18) unique

(4) 修改字段 : alter table user2 change idcard shenfenzheng int unique;

(5) 修改字段的类型:alter table user2 modify shenfenzheng varchar(20);

(6) 删除字段:alter table user2 drop shenfenzheng;

删除表

语法 : drop table 表名;示例 : drop table user2;

新增 修改 删除数据(DML)

插入数据

语法:insert into 表名(字段1,字段2,...) values(值1,值2...);示例:insert into user(id,username,password,gender,age,email,salary,state,role,registTime)values(1,'zhangsan','133','male',38,'zhangsan@163',5000,0,'VIP','2015-10-10 10:10:10');
注意 : 如果主键是自增长的 值可以写成null注意 : 如果主键是自增长的话 字段可以省略不写 时间戳默认是当前时间注意 : 默认是不插入该字段是有

修改数据

语法:update 表名 set 字段1=值1,字段2=值2... [where 条件]示例:update user set age=50,salary=8000 where id=3;
注意:如果不写where条件语句 数据全部修改注意:事务相关开启事务:start transaction;回滚事务:rollback;提交事务:commit;

删除数据

语法:delete from 表名 [where 条件]delete from user;  和  drop table user; 的区别?delete将表中的数据全部删除  drop将表全部(表的结构和数据)删掉delete from user;  和 truncate table user; 的区别?delete 是一条一条的删除数据   受事务的控制truncate是将表全部摧毁  然后在重新创建表结构   不受事务的控制注意:DDL语句不受事务控制

查询数据 (DQL)

查询全部

select * from user;//*代表全部字段

查询部分字段

select username,gender,salary,email from user;

去重查询

需求:查询部门select role from user;语法:distinct 字段

运算查询

需求:在查询的salary的基础上增加1000
注意:在进行运算查询的时候 null加任何数都是null函数ifnull函数

聚合查询 (聚合函数)

sum():进行列的数据的累加注意:聚合杉树可以屏蔽null
count():计数函数
max():某字段下的数据的最大值
min():某字段下的数据的最小值
avg():某字段下的数据的平均值
注意:别名的使用 as关键字

排序查询

order by 字段select * from salary;select * from salary asc; //默认select * from salary desc;升序:asc    降序:desc

条件查询

条件查询

(1) 单条件

select gender from user where gender='a';


(1) 多条件

select gender,role from user where gender='a' and role='b';
select gender,salary from user where gender='a' or gender='b' and salary>8000;


逻辑符号的优先级:and>or

相关判断符号:=    >      <      >=       <=     !=      <>

(3) 空查询 is null is not null

select salary from user where salary is null;select salary from user where salary is not null;

(4) 范围查询 between … and …

select salary from user where salary>=5000 and salary<=9000;select salary from user where salary between 5000 and 9000;

(5) 枚举查询 in

select role from user where role='a' or role='b';select role from user where role in('a','b');

分组查询 group by …… having

需求:查询每个部分的薪资总额select role,sum(salary) from user group by role; 
select role,sum(salary) from user group by role having sum(salary)>10000;
问题:where与having的区别?where:在分组前进行筛选having:分组后进行筛选查询的sql语句的书写顺序与执行顺序书写顺序select    from   where  group by   having   order by 执行顺序from where group by  having select  order by