-MySQL的登录、访问、退出操作:
登录的命令:
mysql -hlocalhost -uroot -p
mysql:bin目录下的文件mysql.exe。mysql是MySQL的命令工具,是一个客户端软件,可以对任何主机的mysql服务(即后台运行的mysql)发起连接
-h:host主机名,后面跟要访问的数据库服务器的地址;如果登录的是本机可以省略
-u:user,用户名
-p:password,密码
mysql服务安装后,需要配置环境变量
退出:quit;、exit;、\q;
-SQL语言:
SQL语言分为五个部分:
-数据查询语言(Data Query Language,DDL):DDL主要用于数据的查询,其基本结构是勇士SELECT子句,FORM子句和WHERE子句的的组合来查询一条或多条数据。
-数据操作语言(Data Manipulation Language,DML)DML主要用于对数据库重的数据进行增加、修改和删除操作,其主要包括:
(1)、INSERT:增加数据
(2)、UPDATE:修改数据
(3)、DELETE:删除数据
-数据定义语言(Date Definition Language,DDL):DDL主要用于针对是数据库对象(数据库、表、索引、视图、触发器、存储过程、函数)进行创建、修改和删除,其主要包括:
(1)、CREATE:创建数据库对象
(2)、ALTER:修改数据库对象
(3)、DROP:删除数据库对象
-数据控语言(Data Control Language,DCL):DCL用来授予访问或回收访问 数据库的权限,主要包括:
(1)、GRANT:授予用户某种权限
(2)、REVOKE:回收授予的某种权限
-事务控制语言(Transaction Control Language,TCL):TCL用于数据库的事务管理,其主要包括:
(1)、START TRANSACTION:开启事务
(2)、COMMIT:提交事务
(3)、ROLLBACK:回收事务
(4)、SET TRANSACTION:设置事务的属性
delete和truncate的区别:
从两者的最终结果来看都是删除表中全部记录,但是两者的区别如下:
--1、DELETE为数据操作语言DML,TRUNCATE为数据定义语言DDL
--2、DELETE操作时将表中所有记录一条一条的删除直至删除完;TRUNCATE操作则是保留表的结构,重新创建这个表,所有的状态都相当于新表。因此TRUNCATE的效率更高
--3、DELETE操作可以回滚;TRUNCATE操作辉导致隐式提交,因此不能回滚
--4、DELETE操作执行成功后辉返回已删除的行数(如删除四行记录,则会显示“Affected rows:4”);截断操作不会返回已删除的行数,通常时“Affected rows:0”.DELETE操作删除表中记录后,再次向表中添加记录时,对于设置自增约束字段的值会从删除前表中该字段的最大值加1开始自增;TRUNCATE操作则会重新从1开始自增。
1、创建数据库表:
##这是一个单行注释
/*
多行注释
多行注释
多行注释
//
建立一张用来存储学生信息的表
字段包含学号、姓名、性别,年龄、入学日期、班级,email等信息
*/
-- 创建数据库表:
create table t_student(
sno int(6), -- 6显示长度
sname varchar(5), -- 5个字符
sex char(1),
age int(3),
enterdate date,
classname varchar(10),
email varchar(15)
);
-- 查看表的结构:展示表的字段详细信息
desc t_student;
-- 查看表中数据:
select * from t_student;
-- 查看建表语句:
show create table t_student;
/*
CREATE TABLE t_student (
sno int DEFAULT NULL,
sname varchar(5) DEFAULT NULL,
sex char(1) DEFAULT NULL,
age int DEFAULT NULL,
enterdate date DEFAULT NULL,
classname varchar(10) DEFAULT NULL,
email varchar(15) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
*/
2、修改、删除数据:
-- 修改表中数据
update t_student set sex = '女' ;
update t_student set sex = '男' where sno = 10 ;
UPDATE T_STUDENT SET AGE = 21 WHERE SNO = 10;
update t_student set CLASSNAME = 'java01' where sno = 10 ;
update t_student set CLASSNAME = 'JAVA01' where sno = 9 ;
update t_student set age = 29 where classname = 'java01';
-- 删除操作:
delete from t_student where sno = 2;
3、修改、删除数据库中的表:
-- 查看数据:
select * from t_student;
-- 修改表的结构:
-- 增加一列:
alter table t_student add score double(5,2) ; -- 5:总位数 2:小数位数
update t_student set score = 123.5678 where sno = 1 ;
-- 增加一列(放在最前面)
alter table t_student add score double(5,2) first;
-- 增加一列(放在sex列的后面)
alter table t_student add score double(5,2) after sex;
-- 删除一列:
alter table t_student drop score;
-- 修改一列:
alter table t_student modify score float(4,1); -- modify修改是列的类型的定义,但是不会改变列的名字
alter table t_student change score score1 double(5,1); -- change修改列名和列的类型的定义
-- 删除表:
drop table t_student;
4、表的完整性约束-非外键约束:
/*
建立一张用来存储学生信息的表
字段包含学号、姓名、性别,年龄、入学日期、班级,email等信息
约束:
建立一张用来存储学生信息的表
字段包含学号、姓名、性别,年龄、入学日期、班级,email等信息
【1】学号是主键 = 不能为空 + 唯一 ,主键的作用:可以通过主键查到唯一的一条记录【2】如果主键是整数类型,那么需要自增
【3】姓名不能为空
【4】Email唯一
【5】性别默认值是男
【6】性别只能是男女
【7】年龄只能在18-50之间
*/
-- 创建数据库表:
create table t_student(
sno int(6) primary key auto_increment,
sname varchar(5) not null,
sex char(1) default '男' check(sex='男' || sex='女'),
age int(3) check(age>=18 and age
enterdate date,
classname varchar(10),
email varchar(15) unique
);
-- 添加数据:
-- 1048 - Column 'sname' cannot be null 不能为null
-- 3819 - Check constraint 't_student_chk_1' is violated. 违反检查约束
insert into t_student values (1,'张三','男',21,'2023-9-1','java01班','zs@126.com');
-- 1062 - Duplicate entry '1' f