MySQL基础语句

数据库语句

1.要求服务器告诉您它的版本号和当前日期。

select version(),current_date;

2.使用该SHOW语句查找服务器上当前存在的数据库: 如果您没有该SHOW DATABASES 权限,则不会显示您没有权限的数据库

show databases;

3.创建数据库

create database 数据库名;

4.选择数据库

use 数据库名

5.查询数据库详情和字符集

show create database 数据库名;

6.创建数据库指定字符集

create database 数据库名 character set gbk/utf8;

7.删除数据库

drop database 数据库名

表相关

  1. 创建表

create table表名(字段1名,字段1类型,字段2名,字段2类型……);

  1. 查询所有表

show tables;

  1. 查询表详情

show create table 表名;

  1. 创建表指定引擎和字符集

create table 表名(字段1名,字段1类型,字段2名,字段2类型…)engine=innobd/myisam charset=gbk/utf8;

  1. 查看表结构

desc 表名;

  1. 删除表

drop table 表名;

修改表相关

  1. 修改表名

Rename table 原名to新名;

  1. 修改引擎和字符集

Alter table 表名 engine=myisam/innodb charset=gbk/utf8;

  1. 添加表字段
    (1) 最后添加:

alter table 表名 add 字段名 类型;

(2) 最前面添加:

alter table 表名 add 字段名 类型 first;

(3) 某字段后面添加:

alter table 表名 add 字段名 类型 after 字段名;

  1. 删除表字段

Akter table 表名drop 字段名;

  1. 修改表字段名称和类型

alter table 表名 change 原字段名 新字段名 新类型;

  1. 修改字段类型和位置

Alter table 表名 modify 字段名 类型 first/after(字段名);

数据相关

  1. 插入数据
    (1) 全表插入格式:

insert into 表名 values(值1,值2…);

(2) 指定字段格式:

insert into 表名(字段1名,字段2名)values(值1,值2…);

(3) 批量插入数据:

insert into 表名 values(‘’, ),(‘’, )…;

insert into (name) values (‘’),(‘’)…;

  1. 查询所有字段

select * from 表名;

  1. 删除数据:

Delete from 表名 (where 条件);不加条件删除所有

  1. 修改格式

Update 表名 set 修改条件 where 查询条件;

  1. 创建主键

Create table 表名(id int primary key auto_increment);

  1. 注释:

comment

格式:

create table 表名(id int primary key auto_increment comment’注释内容’);

查看方式:

showcreate table 表名;

事务

  1. 查看数据库自动提交状态

Show variables like ‘%autocommit%’;

  1. 关闭和打开自动提交

Set autocommot=0/1;(0关闭,1开启);

  1. 手动提交:

commit

  1. 回滚:

rollback

回滚到某个回滚点:

rollback to 标识

  1. 设置回滚点:savepoint标识

运算符

比较运算符:“<=”, ”=”, ”!=”/”<>”(不等于)

查询关键字

  1. 别名:as

例:select name as ‘姓名’ from emp;

  1. and和or:与java中&&和||效果一样;

例:select * from 表名 where id=1 or id=2 and age=20;

  1. in:查询某个范围内的数据

select * from where field in (value1,value2,value3,…);

  1. between x and y:在x和y之间包含xy
  2. 模糊查询:

Like:代表未知字符 %代表0或多个位置字符;
例:倒数第三个字符是a:%a
_;

  1. 排序:

Order by 如果有条件写在条件的后面,没条件写在表名的后面,默认是升序:desc降序,asc:升序
例:order by price,age desc;

  1. 分页查询

limit x,y:第一个参数代表跳过的条数,第二个参数代表每页的数量,通常写在sql语句最后面

  1. 数值计算±*/ 5%3等效mod(5,3);

例:查询所有员工姓名,工资以及年终奖(工资5)
Select name,sal,sal
5 from emp;

  1. ifnull(x,y)函数

例:age=ifnull(x,y) 如果x的值为null则赋值y,如果不为null,则赋值x

  1. 聚合函数:对多行数据进行统计

(1) 求和:sum(求和的字段名) (2) 平均值:avg(字段名) (3) 最大值:max(字段名) (4) 最小值:min(字段名)
(5) 统计数量:count(字段名/*)

  1. 日期相关函数

(1) 获取当前的年月日时分秒 now(); select now();

(2) 获取当前的年月日 current();

(3) 获取时分秒curtime();

(4) 从年月日时分秒中提取年月日,提取时分秒: select date (now()); Select time
(now());

(5) 提取时间分量年月日时分秒 Select extract(year from now()); Select extract(hour
from now());

(6) 日期格式化函数: 格式:date_format(日期,format);

Formet:

a. %Y四位年 %y两位年

b. %m两位月 %c一位月

c. %d 号

d. %H 24小时制 %h 12小时

e. %i分

f. %s秒

例:把now()格式换成年月日时分秒 Select date_format(now(),’%Y年%m月%d日%H时%i分%s秒’);

  1. 数字相关函数

Floor(num)向下取整

Select rand()随机数0-1

Round(num,m)四舍五入,m小数位数

Round(num)四舍五入

Truncate(num,m)非四舍五入

  1. 分组查询:分组查询通常和聚合函数结合使用(group by)

存在位置:select * from emp where … group by … order by … limit…;

  1. having: 使用having解决聚合函数的条件过滤问题,having写在group by 后面,where后面写普通字段的过滤条件,having后面写聚合函数的过滤条件;
    having要和group by结合使用
    子查询(嵌套查询)
    将两条合并成一条sql
    例:select customer_id,order_id from table2 where customer_id in (select customer_id from table1 where city=‘hangzhou’);

关联查询

  1. 同时查询多张表的数据称为关联查询

例:查询每一个员工的姓名和对应的部门名称: select e.name, d.name from 表名 e join dept d where
on e.deptno=d.deptno;

  1. 等值链接和内连接

等值:select * from A,B where A.x=B.x and A.age=18;

内连接:select * from A join B on A.x = B.x where A.age=18;

  1. 外连接

左外连接:以join 左边表为主表,左边显示所有数据右边交集数据
select e.ename,d.dname from emp e left join dept d on e.deptno=d.deptno;

右外连接:以join 右边表为主表,右边显示所有数据左边交集数据

select e.ename,d.dname from emp e right join dept d on e.deptno=d.deptno;

  1. 字符串

(1) 字符串的拼接:concat(s1,s2); //s1s2

(2) 获取字符串长度:char_length(str);

(3) 获取字符串在另一字符串出现的位置,从1开始

  格式1:instr(ste,substr);		instr(‘abcde’,b);	//2
  格式2:locate(substr,str) 		locate(‘b’,’abcde’);	//2

(4) 插入字符串:insert(str,start,length,newstr);

(5) 转大写小写:upper(str) lower(str)

(6) 去空白:trim(str)

(7) 重复: repeat(str,count);

(8) 截取字符串:left(str,start)/right(str,start);

(9) 替换:replace(str,old,new);

(10) 反转:reverse(str);

  1. 一对一
    有AB两张表,A表中的一条数据对应B表中的一条数据同时B表一条对应A表一条,这种关系称为一对一
    应用场景:商品表和商品详情表,
    如何建立关系: 在从表中添加外键,外键的值指向主表的主键
    练习:请设计表保存以下数据
    用户名:wukong 密码:123456 昵称:齐天大圣 电话:13733666633 地址:花果山
    用户名:bajie 密码:abcd 昵称:二师兄 电话:13833446622 地址:高老庄
    用户名:libai 密码:aabbcc 昵称:李白 电话:13355668877 地址:语文书里

create table user(id int primary key auto_increment,username varchar(10),password varchar(10));

create table userinfo(userid int,nick varchar(10),tel varchar(15),address varchar(20));

insert into user values(null,‘wukong’,‘123456’),(null,‘bajie’,‘bacd’),(null,‘libai’,‘aabbcc’);

insert into userinfo values(1,‘齐天大圣’,‘13833446622’,‘花果山’),(2,‘二师兄’,‘13833446622’,‘高老庄’),(3,‘李白’,‘13833446622’,‘语文书里’);

完成以下查询:
查询李白的用户名和密码是什么

select u.username,u.password from user u join userinfo ui on u.id=ui.userid where ui.nick=‘李白’;

查询每一个用户的所有信息

select * from user u join userinfo ui on u.id=ui.userid;

查询用户名bajie 的昵称是什么

select ui.nick from user u join userinfo ui on u.id=ui.userid where u.username=‘bajie’;

  1. 一对多
    AB两张表,A表中的一条数据对应B表中的多条数据,同时B表中的一条数据对应A表中的一条数据,称为一对多
    应用场景: 员工-部门, 商品-分类
    如何建立关系: 在多的一端添加外键指向另外一张表的主键
    练习:创建表保存以下数据 temp tdept
    悟空 28岁 3000月薪 神仙部 花果山
    刘备 34岁 8000月薪 三国部 蜀国
    路飞 18岁 1000月薪 海贼部 日本
    八戒 30岁 4000月薪 神仙部 花果山

create table temp(empno int primary key autoincrement,ename var char(10),age int,sal int,deptno int);
create table tdept(deptno int primary key autoincrement,dname varchar(10),loc varchar(10));
insert into tdept values(null,‘神仙部’,‘花果山’),(null,‘三国部’,‘蜀国’),(null,‘海贼部’,‘日本’);
insert into temp values(null,‘悟空’,28,3000,1),(null,‘刘备’,34,8000,2),(null,‘路飞’,18,1000,3),(null,‘八戒’,30,4000,1);

做题:
查询每个员工的姓名和部门名

select e.ename,d.dname from temp e join tdept d on e.deptno=d.deptno;

查询工作在花果山的员工姓名及工资

select e.ename,e.sal from temp e join tdept d on e.deptno=d.deptno where d.loc=‘花果山’;

  1. 多对多
    AB两张表,A表中一条数据对应B表中多条数据同时B表中一条数据对应A表中多条,称为多对多
    应用场景: 老师-学生 用户-角色
    如何建立关系:需要创建新的关系表,表中添加两个外键,指向两个主表的主键
    练习:创建表保存以下数据
    唐僧的学生有:悟空,八戒
    苍老师的学生有: 八戒,小泽

create table teacher(id int primary key autoincrement,name varchar(10));
create table student(id int primary key autoincrement,name varchar(10));
create table ts(tid int,sid int);
insert into teacher values(null,‘唐僧’),(null,‘苍老师’);
insert into student values(null,‘悟空’),(null,‘八戒’),(null,‘小泽’); insert into ts values(1,1),(1,2),(2,2),(2,3);

查询苍老师的学生姓名

select s.name from teacher t join t_s ts on t.id=ts.tid join student s on ts.sid=s.id where t.name=‘苍老师’;

查询八戒的老师姓名

select t.name from teacher t join t_s ts on t.id=ts.tid join student s on ts.sid=s.id where s.name=‘八戒’

视图

  1. 创建视图格式:

Create view 视图名 as 子查询;创建出来一个虚拟的表
Create table 表名 as 子查询; 创建出来一张新表

  1. 分类
    2.1 简单视图:创建视图的子查询中不包含:去重,函数,分组,关联查询的视图;简单视图可以对表中数据进行增删改查操作。
    2.2 复杂视图:和简单视图相反,复杂视图只能进行查询;
  2. 对简单视图进行增删改查操作方式和table一样
    插入数据 insert into vemp10 (empno,ename) values(10010,‘Tom’);
    数据污染:往视图中插入一条视图中不可见,但是原表中存在的数据称为数据污染。
    通过 with check option 解决数据污染问题

例:create view vemp as (select * from emp where deptno=20) with check option;

  1. 修改视图

create or replace view vemp as (select * from emp where deptno=20 and sal>2000);

  1. 视图别名:

如果创建视图的子查询中使用别名,则对视图进行增删改查时只能使用别名
create view v_emp as (select ename name from emp); 此时在视图中只能使用name 使用ename则报错

索引

  1. 创建索引:

格式:create index 索引名 on 表名 (字段(字段长度));

  1. 查看索引:

Show index from item2;
只要是给表添加主键约束,则数据库会为此表自动创建主键字段的索引。

  1. 删除索引:

Drop index 索引名 on 表名;

  1. 复合索引:通过多个字段创建的索引称为复合索引

格式:create index 索引名 on 表名(字段1,字段2);

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值