今天开始学习数据库了
一、MySQL简介
SQL分类
数据类型
二、MySQL语句
查看当前正在使用的数据库
NULL表示该字段的值是未知的,不确定的,NULL不是一个值
": 表示空值,是一个数值。
delete和truncate的区别:
三、总结
数据库:database
数据库管理系统:DBMS database management system
mysql oracle sqlserver db2
安装完成:
services.msc --进入到服务
MySql是一个数据库服务软件,在服务中可以看到它的 服务名称:MySQL57
服务必须是启动的状态,才可以使用MySql
服务的启动和停止:
1:鼠标操作
2:命令操作: net start mysql57 net stop mysql57
注意:以服务运行的程序都有自己的端口: 3306,不要让其它程序占用该端口
如果端口被占用了,使用 netstat -ano 命令查看占用端口的 PID,然后把该进程杀掉
配置环境变量:
配置: MYSQL_HOME C:\Program Files\MySQL\MySQL Server 5.7
PATH %MYSQL_HOME%\bin
连接到mysql: 通过客户端连接服务端
1:使用Mysql自带的客户端连接到mysql服务
使用安装时配置的root用户的用户名和密码登录到mysql
root是超级用户
2:使用cmd命令窗口作为客户端登录到mysql
mysql -uroot -p密码
3:使用客户端工具连接到mysql
修改密码:
1. 先连接到mysql
mysql> alter user 用户名@localhost identified by‘新密码';
2:先连接到mysql
mysql> set password for root@localhost=password('mmforu');
3. 先连接到mysql ,修改存放用户信息的user表中的用户的密码
use mysql;//指定数据库
//修改密码
update user set authentication_string=password('新密码') where user='root' and host='localhost';
flush privileges;
4. 不需要连接到mysql
mysqladmin -uroot –p旧密码 password 新密码
忘记密码:
1:停止mysql服务
2:修改mysql的配置文件 C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
78 行加入 skip-grant-tables 跳过密码验证
3: 启动mysql服务
4. 连接到mysql,只需要输入 mysql
5.修改密码 使用修改密码的第三种方式
use mysql;
update user set authentication_string=password('root') where user='root' and host='localhost';
flush privileges
6.停止mysql服务 修改my.ini ,把skip-grant-tables删掉
7:启动mysql服务,连接到mysql
SQL:Structured Query Language 结构化查询语言
分类方式:
DDL 定义
DML 操纵
DQL 查询
DCL 控制
TCL 事务控制语言
数据库的创建:create database 数据库名
mysql 中可以创建多个数据库,数据是存在数据库中的
通常情况下一个项目对应一个数据库
create database bg1;
show databases; //查看所有数据库
show create database bg1;//查看创建数据库的sql语句
//数据库的编码和mysql配置文件my.ini中配置的编码一致
alter database bg1 character set gbk; //修改数据库的编码
show character set; //查看所有的编码
drop database 数据库名; //删除数据库
创建表:数据是以表的形式来存储的,所以创建完数据库,需要在数据库中创建表
语法:
create table 表名(
字段名 数据类型,
字段名 数据类型,
字段名 数据类型,
......
字段名 数据类型
)
数据类型:
整型 :int
浮点型:double,float,decimal
字符型:
char(20) 'abc '
varchar(20) 'abc'
text 大文本 65535byte
date: 日期 yyyy-MM-dd
time: 时间 HH:mm:ss
datetime:日期时间类型
timestamp:该类型的字段会自动填充当前时间
确定表建在哪个数据库中?use bg1;
select database() 查看当前正被使用的数据库
show tables; //查看所有的表
desc 表名;//查看表结构
show create table stu;//查看创建表的sql语句
alter table stu add address varchar(30); //向表中添加字段
alter table stu modify address varchar(50);//修改表中已有字段
alter table stu drop address;//删除表中字段
rename table stu to stus;//修改表名
drop table stus;//删除表
向表中添加记录:1次添加一条记录
1:表中的每个字段都有值(表中所有字段都有对应的值)
insert into 表名 values(值1,值2,...)
值要和字段顺序一致,个数一致,数据类型一致
2:表中部分字段有值,部分没有值
insert into 表名(字段名,字段名,...) values()
值要和字段顺序一致,个数一致,数据类型一致
1次添加多条记录:
insert into tableName values
(value1,value2,value3,......valueN),
(value1,value2,value3,......valueN),
(value1,value2,value3,......valueN)
NULL 表示该字段上的值是未知的,NULL不是一个值
'':表示空值,是一个数值
修改表中记录:
update 表名 set 字段名1=修改之后的值,[字段名2=修改之后的值]... [where 条件]
满足条件的记录被修改
update stus set sex='f',birthday='2000-12-12' where id=5;
删除表中记录:
//逐条删除记录,可以回滚的(可以撤销)
delete from 表名 ----删除表中所有记录
delete from 表名 [where 条件] ----删除表中满足条件的记录
//把整个表删掉,然后再创建一个相同的表,不能回滚
truncate table 表名
***********创建数据库,在数据库中创建表,对表进行添加修改删除
查询: 基于表中已经存在的数据,得到我们想要的数据
查询的结果以表的形式显示,但并不是真正的表,称为虚拟表
select 字段名,字段名... from 表名 [where 条件]
*表示所有字段
基本查询: > >= < <= <> != not and or in not in between...and
is null is not null
like _ %
四、作业
-------------------------------------------------------------------------
数据库操作
一、数据库的创建:
1、创建一个名称为mydb1的数据库
2、创建一个使用utf8字符集的mydb2数据库。
二、数据库的修改:
修改mydb2字符集为gbk;
三、数据库的删除:
删除数据库mydb3。
四、数据库查看:
查看所有数据库。
查看数据库mydb1的字符集
-- CREATE DATABASE mydb2;
-- CREATE database mydb2 character set UTF8 ;
-- alter database mydb2 character set gbk;
-- create database mydb3;
-- drop database mydb3;
-- show databases;
-- show character set;
-----------------------------------------------
数据库中表操作的sql
一、创建表
1、创建一张员工表employee
字段 类型
id 整形
name 字符型
gender 字符型
birthday 日期型
entry_date 日期型
job 字符型
salary 小数型
resume 文本
2、创建一张员工表employee2
字段 类型
id 整形
name 字符型
gender 字符型
birthday 日期型
entry_date 日期型
job 字符型
salary 小数型
resume 文本
二、删除表
1、删除employee2表
三、数据表的结构的修改:
1、在上面员工表的基本上增加一个image列。
2、修改job列,使其长度为60。
3、删除gender列。
4、表名改为user。
5、修改表的字符集为utf8
四、查看表结构
1、查看数据库内的所有表
2、查看employee的建表语句
3、查看employee的表结构
----------------------------------------------------
表记录的操作
一、插入语句 ---insert
1、向employee中插入三个员工信息,要求员工姓名分别是zs,ls,wangwu
二、更新语句 ---update
1、将所有员工薪水修改为5000元。
2、将姓名为’zs’的员工薪水修改为3000元。
3、将姓名为’ls’的员工薪水修改为4000元,job改为ccc。
4、将wangwu的薪水在原有基础上增加1000元。
三、删除语句 ---delete
1、删除表中名称为’zs’的记录。
2、删除表中所有记录。
四、查询语句 ---select
create table exam(
id int ,
name varchar(20) ,
chinese double,
math double,
english double
);
insert into exam values(1,'关羽',85,76,70);
insert into exam values(2,'张飞',70,75,70);
insert into exam values(3,'赵云',90,65,95);
insert into exam values(4,'刘备',97,50,50);
insert into exam values(5,'曹操',90,89,80);
insert into exam values(6,'司马懿',90,67,65);
练习:
1、查询表中所有学生的信息。
2、查询表中所有学生的姓名和对应的英语成绩。
? 3、过滤表中重复数据。
? 4、在所有学生分数上加10分特长分。
5、统计每个学生的总分。
-----使用where子句
7、查询姓名为刘备的学生成绩
8、查询英语成绩大于90分的同学
9、查询总分大于200分的所有同学
10、查询英语分数在 80-90之间的同学。
11、查询数学分数为89,75,91的同学。
12、查询所有姓刘的学生成绩。
13、查询所有姓刘两个字的学生成绩。
14、查询数学分>80并且语文分>80的同学。
15、查询数学分>80 或者 语文分>80的同学。
-- 一、1.
-- use mydb1;
-- create table employee(
-- id int,
-- name char(20),
-- gender char(2),
-- birthday date,
-- entry_date date,
-- job char(20),
-- salary float,
-- resume text
-- );
-- 一、2.
-- use mydb1;
-- create table employee2(
-- id int,
-- name char(20),
-- gender char(2),
-- birthday date,
-- entry_date date,
-- job char(20),
-- salary float,
-- resume text
-- );
-- 二、1.
-- use mydb1;
-- drop table employee2;
-- show tables;
-- 三、1.
-- alter table employee add image varchar(50);
-- desc employee;
-- 三、2.
-- alter table employee modify job char(60);
-- desc employee;
-- 三、3.
-- alter table employee drop gender;
-- desc employee;
-- 三、4.
-- rename table employee to user;
-- 三、5.
-- alter table user character set utf8;
-- 四、查看表结构
-- 1、查看数据库内的所有表
-- show tables;
-- 2、查看employee的建表语句
-- show create database mydb1;
-- rename table user to employee;
-- show create table employee;
-- 3、查看employee的表结构
-- desc employee;
-- 表记录的操作
-- 一、插入语句 ---insert
-- 1、向employee中插入三个员工信息,要求员工姓名分别是zs,ls,wangwu
-- insert into employee(name) values
-- ('ze'),
-- ('ls'),
-- ('wangwu');
-- select * from employee;
--
-- 二、更新语句 ---update
-- 1、将所有员工薪水修改为5000元。
-- update employee set salary=5000;
-- select * from employee;
-- 2、将姓名为’zs’的员工薪水修改为3000元。
-- update employee set salary=3000 where name='zs';
-- select * from employee;
-- 3、将姓名为’ls’的员工薪水修改为4000元,job改为ccc。
--
-- update employee set salary=4000,job='ccc' where name='ls';
-- select * from employee;
-- 4、将wangwu的薪水在原有基础上增加1000元。
-- update employee set salary=salary+1000 where name='wangwu';
-- select * from employee;
-- 三、删除语句 ---delete
-- 1、删除表中名称为’zs’的记录。
-- delete from employee where name='zs';
-- select * from employee;
-- 2、删除表中所有记录。
-- delete from employee;
-- select * from employee;
-- 四、查询语句 ---select
-- create table exam(
-- id int ,
-- name varchar(20) ,
-- chinese double,
-- math double,
-- english double
-- );
-- insert into exam values(1,'关羽',85,76,70);
-- insert into exam values(2,'张飞',70,75,70);
-- insert into exam values(3,'赵云',90,65,95);
-- insert into exam values(4,'刘备',97,50,50);
-- insert into exam values(5,'曹操',90,89,80);
-- insert into exam values(6,'司马懿',90,67,65);
-- 练习:
-- 1、查询表中所有学生的信息。
-- select * from exam;
-- 2、查询表中所有学生的姓名和对应的英语成绩。
-- select name, english from exam;
-- 3、过滤表中重复数据。
-- select distinct * from exam;
-- 4、在所有学生分数上加10分特长分。
-- update exam set chinese=chinese+10,math=math+10,english=english+10;
-- select * from exam;
-- 5、统计每个学生的总分。--
-- select name,chinese+math+english from exam;
-- -----使用where子句
--
-- 7、查询姓名为刘备的学生成绩
-- select name,chinese,math,english from exam where name='刘备';
--
-- 8、查询英语成绩大于90分的同学
-- select name,english from exam where english>90;
-- 9、查询总分大于200分的所有同学
-- select name,chinese+math+english from exam where chinese+math+english>200;
-- 10、查询英语分数在 80-90之间的同学。
-- select name,english from exam where english between 80 and 90;
-- select name,english from exam where english>=80 and english<=90;
-- 11、查询数学分数为89,75,91的同学。
-- select name,math from exam where math in(89,75,91);
-- 12、查询所有姓刘的学生成绩。
-- select * from exam where name like '刘%';
-- 13、查询所有姓刘两个字的学生成绩。
-- select * from exam where name like '刘_';
-- 14、查询数学分>80并且语文分>80的同学。
-- select * from exam where math>80 and chinese>80;
-- 15、查询数学分>80 或者 语文分>80的同学。
-- select * from exam where math>80 or chinese>80;
五、ALTRT、UPDATE区别
1、作用区别:
ALTRT用来修改基本表,是对表的结构进行du操作,比如对字zhi段的增加、删除、修dao改类型
UPDATE用来修改表中的数据,修改某一行某一列的值
2、从本质上区分:
Alter是数据定义语言(Data difinition Language),在修改表的结构时,不需要Commit和Rollback。
Update是数据数据操作语言(Data manipulation Language),在修改数据值时,需要Commit和Rollback,否则提交的结构无效
扩展资料
Alter用法
1、删除列
ALTER TABLE 【表名】 DROP 【列名】
2、增加列
ALTER TABLE 【表名】 ADD 【列名】 【类型】
3、重命名列
ALTER TABLE 【表名】 CHANGE 【列名】【新名】
4、修改表字段
alter table 表名称 change 字段名称 字段名称 字段类型 [是否允许非空]
Update用法
修改表中字段
update 表名 set 字段=新值 where 主键=值