MySql(一)

MySql

MySql版本:MySQL 8.0

MySql的启动与退出

① 执行cmd命令启动。执行"开始""运行"命令,打开DOS窗口,在DOS提示符下输入登录命令后,按照指示位置输入密码,登录成功的结果如下:
在这里插入图片描述

② MySQL客户端登录数据库。在Windows7操作系统中,执行"开始" “所有程序” MySQLMySQL 8.0命令,该目录下包含MySQL Command Line Client和MySQL Command Line Client-Unicode两个选项。它们都是MySQL客户端的命令行工具。执行该命令后,按照提示位置输入密码,即可执行相关MySQL命令

在这里插入图片描述

③退出。在"mysql>"提示符下,输入quit或exit命令,都可以退出MySQL登录。
在这里插入图片描述
在这里插入图片描述

MySQL服务的启动和退出

① 执行"开始"“运行"命令并输入services.msc后按Enter键也可以弹出图18-1所示的窗口。右击mysql57服务,可以在弹出菜单中执行"启动”、“停止”、“暂停” 和"恢复"等命令。

② 执行"开始"“设置”“控制面板”“管理工具”“服务"命令进行设置,打开的窗口如图18-1所示。右击mysql57服务,可以在弹出菜单中执行"启动”、“停止”、“暂停” 和"恢复"等命令。

③ 执行cmd命令启动服务。在DOS窗口中,net start mysql57表示启动MySQL服务,net stop mysql57表示关闭MySQL服务。

④ 选中图1-1的MySQL57服务项右击,在弹出的快捷菜单中选择"属性"命令,弹出如图1-2所示的对话框。

在这里插入图片描述
在这里插入图片描述

常量和变量的应用

① 查看字符"c"开头的系统变量命令。

mysql>show variables like ‘c%’;
在这里插入图片描述

② 查看当前MySQL软件的版本号和当前时间。

mysql>select @@version,current_date;

在这里插入图片描述

③ 针对当前会话,把系统变量sql_select_limit的值设置为100。

mysql>set @@session.sql_select_limit=100;

在这里插入图片描述

运算符的应用

① 算术运算符。

mysql> select 5+2.7,1.5*3,3/5,10-27.5,5%3;
在这里插入图片描述

② 比较运算符。

mysql> select ‘T’>‘B’,1+3=2, ‘X’<‘x’, 8<>8, ‘a’<= ‘u’;
在这里插入图片描述

mysql> select null is null,1.3 is null, 11.9 is not null;
在这里插入图片描述

mysql> select ‘MySQL’ like ‘MY%’, ‘APPLE’ like ‘AB_’;

在这里插入图片描述

③ 逻辑运算符。

mysql> select (‘T’=‘B’),(‘c’ =‘C’)and(‘c’<‘D’)or(7=8);
在这里插入图片描述

mysql> select (‘A’=‘a’) && (1=2),(‘F’=‘f’) xor (1+1=2);

ps:xor异或------当任意一个操作数为NULL时,返回值为NULL,对于非NULL的操作数,如果两个的逻辑真假值相异,则返回结果为1,否则为0
在这里插入图片描述

④位运算符。

mysql> select 5&1,7|3,1000>>5, ~9,6^7;
在这里插入图片描述

mysql> select 5&5,7|9,10<<2, ~0,6^0;

在这里插入图片描述

系统函数的应用

① 数学函数。

mysql> select cos(3.67),tan(4.71), sin(5),PI();
在这里插入图片描述

mysql> select 6+round(10rand(),0) , 20+ round(10rand(),0);

tips:
rand():随机生成小数
round()保留小数 用法:round(被处理的数,处理的位数)

第一次运行:
在这里插入图片描述
第二次运行:
在这里插入图片描述

② 时间日期函数。

tips:
dayofyear:返回这一天在这一年的第几天;
dayofweek:返回这一天是周几,范围从1-7,代表从星期日到星期六;
dayofmonth:返回这一天在本月的第几天;
curtime():当天时间;

mysql> select dayofyear(20210512),dayofmonth(‘20210512’);
在这里插入图片描述
mysql> select dayofmonth(‘2018-07-15’),dayofweek(now());
在这里插入图片描述

mysql> select hour(curtime()),minute(curtime()),second(curtime());

**tips:**hour:小时 minute:分钟 second:秒
在这里插入图片描述

mysql> select date_sub(‘2018-10-1 10:10:10’, interval 27 minute);

tips:
interval:表示为时间间隔;
date_sub:将从一个日期/时间值中减去一个时间值(时间间隔)。
在这里插入图片描述

③ 字符串函数。

mysql> select concat(‘you’,’ are’,’ best’),concat(‘123’,‘456’,null);

**tips:**concat:连接函数;如有任何一个参数为NULL ,则返回值为 NULL。

在这里插入图片描述

mysql> select right(‘ABCDEFGH’,5),reverse(left(‘ABCDEFGH’,5));

tips: reverse:逆转函数;

在这里插入图片描述

mysql> select length(‘12345abcde’),char_length(‘123数据库技术cde’);

tips : 判断长度函数;

在这里插入图片描述

④ 其他函数。

mysql> select version(),database(),user(),CONNECTION_ID();

在这里插入图片描述

mysql> select password(‘teach1727’);

在这里插入图片描述tips: 如上图所示,在使用mysql8.0时,会发现原先写的sql语句password()会被当做异常处理。原因是因为在mysql8.0,移除了该功能函数,所以老的语句和逻辑需要进行更新。

详情可以看下方的官网截图说明:
在这里插入图片描述

mysql> select format(7/3,3), format(123456.78,1);

tips: format:格式化数字,也可以说保留几位小数。

在这里插入图片描述

查看数据库。

① 查看MySQL数据库的存储位置。

在这里插入图片描述

② 查看当前系统中的数据库。

mysql> show databases;

在这里插入图片描述

③ 查看系统中的数据库引擎。

mysql> show engines;

在这里插入图片描述

④ 设置InnoDB为当前数据库引擎。

mysql> set default_storage_engine=InnoDB;
在这里插入图片描述

数据库的基本操作

① 创建info1数据库和info2数据库。

mysql> create database info1

-> default character set gb2312

-> default collate gb2312_chinese_ci;

在这里插入图片描述

效果实现
在这里插入图片描述

mysql> create database info2;
在这里插入图片描述
效果实现
在这里插入图片描述

mysql> create database if not exists info2;

在这里插入图片描述
在这里插入图片描述

mysql> create database if not exists info3;
在这里插入图片描述

② 从安装路径查看已经存在的数据库。

tips: 新建的数据库存在于这个文件,不过这个文件是隐藏的。显示出来就好了。
在这里插入图片描述

在这里插入图片描述

③ 打开数据库info1

mysql> use info1;

在这里插入图片描述

④ 修改数据库info2。

mysql> alter database info2

-> default character set gb2312

-> collate gb2312_chinese_ci;
在这里插入图片描述

⑤ 显示数据库info1的结构信息。

mysql> show create database info1;
在这里插入图片描述

⑥ 删除数据库info2,info3。

mysql> drop database info2;

在这里插入图片描述

mysql> drop database info3;
在这里插入图片描述

创建表结构。

如表1-1所示,这是教材中的一个student表的结构的字段列表。根据该表的内容,学会利用SQL语句创建表结构。

表1-1 student表结构

在这里插入图片描述

① 登录MySQL后,打开数据库teaching,输入下列代码即可创建student表结构。

mysql> create table if not exists student

(

studentno char(11) not null,

sname char(8) not null,

sex enum(‘男’, ‘女’) default ‘男’,

birthdate date not null,

entrance int(3) null,

phone varchar(12) not null,

Email varchar(20) not null ,

primary key (studentno)

);

在这里插入图片描述
在这里插入图片描述

② 查看表和表结构。

mysql> show tables;

在这里插入图片描述

mysql> describe student;

在这里插入图片描述

③创建course表结构。程序代码如下:

mysql> create table if not exists course

(

courseno char(6) not null,

cname char(6) not null,

type char(8) not null,

period int(2) not null,

exp int(2) not null,

term int(2) not null,

primary key (courseno)

);

在这里插入图片描述

在这里插入图片描述

④创建score表结构。程序代码如下:

mysql> create table if not exists score

(studentno char(11) not null,

courseno char(6) not null,

daily float(3,1) default 0,

final float(3,1) default 0,

primary key (studentno , courseno)

);

在这里插入图片描述
在这里插入图片描述

⑤创建teacher表结构。程序代码如下:

mysql> create table if not exists teacher

(teacherno char(6) not null comment ‘教师编号’,

tname char(8) not null comment’教师姓名’,

major char(10) not null comment ‘专业’,

prof char(10) not null comment ‘职称’,

department char(16) not null comment ‘部门’,

primary key (teacherno)

);
在这里插入图片描述
在这里插入图片描述

tips: commet:是注释的意思,如果我们想要查看已经有的注释,我们可以用以下的语句查看。

show create table teacher;
在这里插入图片描述

⑥ 创建teach_course表结构。程序代码如下:

mysql> create table if not exists teach_course

(teacherno char(6) not null,

courseno char(6) not null,

primary key (teacherno,courseno)

);

在这里插入图片描述
在这里插入图片描述

⑦ 创建选课表sc。程序代码如下:

mysql>create table sc

(sc_no int(6) not null auto_increment,

studentno char(11) not null,

courseno char(6) not null,

teacherno char(6) not null,

sc_time timestamp not null default now(),

primary key (sc_no)

);

在这里插入图片描述

在这里插入图片描述

创建完毕,可以通过安装路径查看磁盘文件数据库及其包含的数据表文件。

在这里插入图片描述

录入表数据。

数据库teaching的常用表的比较完整的数据,可以参考本书第4章的数据表数据附录的内容。

① 利用insert表student中插入1行数据。

mysql>insert into student

->(studentno,sname,sex,birthdate,entrance,phone,Email)

-> values (‘18122210009’,‘许东山’,‘男’,‘1999/11/5’,789,

-> ‘13623456778’,‘qwe@163.com’);
在这里插入图片描述

在这里插入图片描述

② 利用insert into命令向表student中插入多行数据。

mysql> insert into student values

-> (‘18122221324’,‘何白露’,

-> ‘女’,‘2000/12/4’,‘879’,‘13178978999’,'heyy@sina.com '),

-> (‘18125111109’,‘敬横江’,

-> ‘男’,‘2000/3/1’,‘789’,’ 15678945623’,'jing@sina.com '),

-> (‘18125121107’,‘梁一苇’,

-> ‘女’,‘1999/9/3’,‘777’,’ 13145678921’,'bing@126.com ');

在这里插入图片描述
在这里插入图片描述

③利用replace into命令向表course中插入多行数据。

mysql> replace into course values

-> (‘c05103’,‘电子技术’,‘必修’,‘64’,‘16’,‘2’),

-> (‘c05109’,‘C语言’,‘必修’,‘48’,‘16’,‘2’),

-> (‘c05127’,‘数据结构’,‘必修’,‘64’,‘16’,‘2’);

在这里插入图片描述

在这里插入图片描述

④ 利用set子句向score表插入数据。

mysql> insert into score

-> set studentno=‘19120000111’,

-> courseno=‘c05109’,daily=90,final=95;

在这里插入图片描述

在这里插入图片描述

⑤ 利用现有的表创建和复制成新表,新表中含有全部或部分字段和数据。

mysql> create table stud as select * from student;

在这里插入图片描述

在这里插入图片描述

修改表数据

① 修改指定记录的数据。

mysql> update score set daily=95

-> where studentno=‘18137221508’ && courseno=‘c08126’;

没改之前的
在这里插入图片描述

在这里插入图片描述

改了之后的
在这里插入图片描述

② 成批修改记录。

mysql> update stud set entrance=entrance*1.08 where entrance<600;

在这里插入图片描述
在这里插入图片描述

删除表数据。

① 删除符合条件的指定记录行。删除student表中入学成绩低于600分记录。

mysql> delete from student where entrance <600;

没执行命令之前
在这里插入图片描述

在这里插入图片描述

执行命令后

在这里插入图片描述

② 利用limit子句删除指定记录行。删除student表中入学成绩最低的2行记录。

mysql> delete from student order by entrance limit 2;

没执行前
在这里插入图片描述
在这里插入图片描述

执行后
在这里插入图片描述

③清空表记录,即一次性删除表中所有记录。

mysql> truncate table stud;

没执行前
在这里插入图片描述

在这里插入图片描述

执行后
在这里插入图片描述

主键约束的创建与应用。

① 利用course表创建一个新表course1。

mysql> create table course1 as select * from course;

在这里插入图片描述
在这里插入图片描述

② 创建course01的主键约束,字段名为cname。

mysql> alter table course1 add primary key (cname);
在这里插入图片描述

在这里插入图片描述

③ 删除主键约束,重新创建主键约束,字段名为courseno。

mysql> alter table course1 drop primary key;

在这里插入图片描述

mysql> alter table course1 add primary key (courseno);

在这里插入图片描述

④ 验证主键约束,观察主键值重复时的数据插入情况。

mysql> insert into course1 values

-> (‘c05188’,‘电子技术’,‘必修’,‘64’,‘16’,‘2’);

在这里插入图片描述

在这里插入图片描述

mysql> insert into course1 values

-> (‘c05188’,‘控制原理’,‘必修’,‘64’,‘20’,‘3’);

在这里插入图片描述

外键约束的创建和应用。

① 利用score表创建一个新表score1。

mysql> create table score1 as select * from score;

没执行前
在这里插入图片描述

在这里插入图片描述

执行后
在这里插入图片描述

② 对表score01添加外键。

mysql> alter table score1

-> add constraint fk_cou_score

-> foreign key(courseno) references course1(courseno);

在这里插入图片描述

③ 验证外键约束,观察外键值对数据插入情况的影响。

mysql> insert into score1 values

-> (‘18137221508’,‘c05109’,94,92);

没执行前

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

mysql> insert into score1 values

-> (‘18137221508’,‘c11111’, 99,98);//course1表中无’c11111’课程号

在这里插入图片描述

检查约束的创建和应用。

① 创建检查约束, final值以0~100为界值。

mysql> alter table score1

-> add constraint sc_check1 check(final>=0 and final<=100);

在这里插入图片描述

② 验证检查约束,观察合法与非法数据插入的情况。

mysql> insert into score1 values

-> (‘19126113307’,‘c05109’,94,99);

执行前:
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

mysql> insert into score1 values

-> (‘19122203567’,‘c05108’,94,101); // final值超界。

在这里插入图片描述

唯一约束的创建和应用。

① 创建唯一约束。

mysql> alter table student add unique(phone);
在这里插入图片描述

② 验证唯一约束,观察重复电话数据插入的情况。

mysql> select studentno, sname, phone from student;

在这里插入图片描述

mysql> insert into student values

-> (‘19126113306’,‘梅青’,‘女’,‘2001/9/7’,‘787’,’

-> 13245678543’,‘mei@163.com’);

在这里插入图片描述
重复之后就会出现这样。

stufentno重复先报它
在这里插入图片描述
studentno不重复后 phone唯一约束报错。
在这里插入图片描述

(5)非空约束的应用。主键字段值不允许为null,输入空值观察结果。

mysql> insert into course1 values

-> (null,‘网络技术’,‘必修’,‘64’,‘16’,‘2’);

在这里插入图片描述

索引的创建与管理。

① 为student表的phone列上建立一个降序普通索引phone_idx。

mysql> create index phone_idx on student(phone desc);

在这里插入图片描述

② 在course表的cname列上建立一个唯一性索引cname_idx。

mysql> create unique index cname_idx on course (cname);

在这里插入图片描述

③ 在score表的studentno和courseno列上建立一个复合索引stu_cour_idx。

mysql> create index stu_cour_idx on score(studentno,courseno);

在这里插入图片描述
在这里插入图片描述

④ 在teacher表上建立teacherno主键索引,建立tname和prof的复合索引。

mysql> alter table teacher

-> add primary key(teacherno),

-> add index mark(tname, prof);

在这里插入图片描述

⑤ 删除teacher表的mark索引。

mysql> drop index mark on teacher;

在这里插入图片描述

⑥ 利用alter table语句同样可以删除cname_idx索引。

mysql> alter table course drop index cname_idx;

在这里插入图片描述

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值